snapshot of https://github.com/ThreeDotsLabs/watermill.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
master / ci (push) Failing after 0s
Some checks failed
master / ci (push) Failing after 0s
This commit is contained in:
50
message/router_context.go
Normal file
50
message/router_context.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package message
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
type ctxKey string
|
||||
|
||||
const (
|
||||
handlerNameKey ctxKey = "handler_name"
|
||||
publisherNameKey ctxKey = "publisher_name"
|
||||
subscriberNameKey ctxKey = "subscriber_name"
|
||||
subscribeTopicKey ctxKey = "subscribe_topic"
|
||||
publishTopicKey ctxKey = "publish_topic"
|
||||
)
|
||||
|
||||
func valFromCtx(ctx context.Context, key ctxKey) string {
|
||||
val, ok := ctx.Value(key).(string)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
return val
|
||||
}
|
||||
|
||||
// HandlerNameFromCtx returns the name of the message handler in the router that consumed the message.
|
||||
func HandlerNameFromCtx(ctx context.Context) string {
|
||||
return valFromCtx(ctx, handlerNameKey)
|
||||
}
|
||||
|
||||
// PublisherNameFromCtx returns the name of the message publisher type that published the message in the router.
|
||||
// For example, for Kafka it will be `kafka.Publisher`.
|
||||
func PublisherNameFromCtx(ctx context.Context) string {
|
||||
return valFromCtx(ctx, publisherNameKey)
|
||||
}
|
||||
|
||||
// SubscriberNameFromCtx returns the name of the message subscriber type that subscribed to the message in the router.
|
||||
// For example, for Kafka it will be `kafka.Subscriber`.
|
||||
func SubscriberNameFromCtx(ctx context.Context) string {
|
||||
return valFromCtx(ctx, subscriberNameKey)
|
||||
}
|
||||
|
||||
// SubscribeTopicFromCtx returns the topic from which message was received in the router.
|
||||
func SubscribeTopicFromCtx(ctx context.Context) string {
|
||||
return valFromCtx(ctx, subscribeTopicKey)
|
||||
}
|
||||
|
||||
// PublishTopicFromCtx returns the topic to which message will be published by the router.
|
||||
func PublishTopicFromCtx(ctx context.Context) string {
|
||||
return valFromCtx(ctx, publishTopicKey)
|
||||
}
|
||||
Reference in New Issue
Block a user