rabbitmq 在接收消息的同一个ConsumeContext上发布消息有什么好处吗?

0yycz8jy  于 2023-01-26  发布在  RabbitMQ
关注(0)|答案(1)|浏览(135)

我问的是这样一种情况:消费者收到消息后进行处理,然后处理的结果是另一条消息,类似于:

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发布。

x6yk4ghg

x6yk4ghg1#

在使用者(以及任何使用者依赖项)中,发布和/或发送的消息应用途:

  • ConsumeContext-在使用者中最容易,因为它已经将其作为方法签名的一部分。
  • ISendEndpointProviderIPublishEndpoint-应该注入到需要生成消息的使用者的任何依赖项中。MassTransit实际上是在后台将这两个接口重定向到当前的ConsumeContext

这也包含在文档中。

相关问题