从 MassTransit 的 PipeContext 获取消息类型
Get message type from PipeContext from MassTransit
我正在我的接收端点实现一个 MassTransit 中间件来记录处理消息的性能,我想从 PipeContext 中获取消息类型,我该如何获取?
public async Task Send(T context, IPipe<T> next)
{
// I want to know the message type from here so that i can log it
using (_logger.BeginTimedOperation("Time for handling message", null, LogEventLevel.Debug))
{
await next.Send(context);
}
}
您需要在 ConsumeContext
处拦截,其中有一个 属性 用于序列化信封中的消息类型。
然后,您可以使用以下方法获取支持的消息类型:
IEnumerable<string> SupportedMessageTypes {get;}
这应该能让您获得记录消息类型和持续时间所需的信息。
所以按照以下方式过滤:
public class LogMessageTypeFilter :
IFilter<ConsumeContext>
{
}
实现send方法,在方法中调用next,等待next管道完成后再执行。
我正在我的接收端点实现一个 MassTransit 中间件来记录处理消息的性能,我想从 PipeContext 中获取消息类型,我该如何获取?
public async Task Send(T context, IPipe<T> next)
{
// I want to know the message type from here so that i can log it
using (_logger.BeginTimedOperation("Time for handling message", null, LogEventLevel.Debug))
{
await next.Send(context);
}
}
您需要在 ConsumeContext
处拦截,其中有一个 属性 用于序列化信封中的消息类型。
然后,您可以使用以下方法获取支持的消息类型:
IEnumerable<string> SupportedMessageTypes {get;}
这应该能让您获得记录消息类型和持续时间所需的信息。
所以按照以下方式过滤:
public class LogMessageTypeFilter :
IFilter<ConsumeContext>
{
}
实现send方法,在方法中调用next,等待next管道完成后再执行。