我问的是这样一种情况:消费者收到消息后进行处理,然后处理的结果是另一条消息,类似于:
class MyConsumer : IConsumer<MyMessage> {
public async Task Consume(ConsumeContext<MyMessage> context) {
// ...do the processing and then:
await context.Publish<MyResponse>(new()
{
Data = "some data"
});
}
}
所以问题是-使用context.Publish
比注入IPublishEndpoint
有什么好处吗?如果处理需要将另一个组件(另一个类)与消费者分离,那么就需要这样做。然后,该组件处理的结果将是一条消息,该消息可以由注入的IPublishEndpoint
发布。
1条答案
按热度按时间x6yk4ghg1#
在使用者(以及任何使用者依赖项)中,发布和/或发送的消息应用途:
ConsumeContext
-在使用者中最容易,因为它已经将其作为方法签名的一部分。ISendEndpointProvider
或IPublishEndpoint
-应该注入到需要生成消息的使用者的任何依赖项中。MassTransit实际上是在后台将这两个接口重定向到当前的ConsumeContext
。这也包含在文档中。