我使用Masstransit RabbitMQ. 作为消费者,仅在事件发布到队列中时使用事件。在上面的例子中,我怎样才能得到所有的SubmitOrder作为具有单个请求(消费)的队列中的列表?
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}");
});
});
});
在作业中,我需要从队列中检索所有消息,然后使用该列表来处理它们。我有一个网关在队列中发布消息,然后我有一个作业从队列中接收消息并处理它们。
消息传递通常不是这样工作的。使用MassTransit,您可以单独传递消息,以便每个消息都被原子地使用。或者您可以使用批处理使用者一次传递多条消息。
认为你可以"得到所有的消息"。从队列开始并不是人们应该考虑的方式,实际上队列中可能有数百万条消息。无论如何,您肯定不会将多个SubmitOrder
样式消息作为批处理处理。从架构上来说,这是一个非常糟糕的主意。