rabbitmq MassTransit使用队列中的所有消息

tcbh2hod  于 2023-03-02  发布在  RabbitMQ
关注(0)|答案(1)|浏览(285)

我使用Mastransit RabbitMQ。作为消费者,只在事件在队列中发布时才消费事件。在上面的示例中,如何通过一个请求(消费)从队列中获取所有SubmitOrderas列表?

var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                cfg.ReceiveEndpoint("order-service", e =>
                {
                    //here i want to get all SubmitOrder as list
                    e.Handler<SubmitOrder>(async context =>
                    {
                        await Console.Out.WriteLineAsync($"Submit Order Received: {context.Message.OrderId}");
                    });
                });
            });

在作业中,我需要从队列中检索所有消息,然后使用该列表来处理它们。我有一个网关,它发布队列中的消息,然后我有一个作业,它从队列中接收消息并处理它们。

1mrurvl1

1mrurvl11#

消息传递通常不是这样工作的。使用MassTransit,您可以单独传递消息,以便原子地使用每个消息。或者,您可以使用批处理使用者一次传递多个消息。
认为可以从队列中“获取所有消息”是不应该的,队列中可能有数百万条消息。而且无论如何,您肯定不会将多条SubmitOrder样式的消息作为一批处理。从架构上讲,这是一个非常糟糕的想法。

相关问题