我使用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}");
});
});
});
在作业中,我需要从队列中检索所有消息,然后使用该列表来处理它们。我有一个网关,它发布队列中的消息,然后我有一个作业,它从队列中接收消息并处理它们。
1条答案
按热度按时间1mrurvl11#
消息传递通常不是这样工作的。使用MassTransit,您可以单独传递消息,以便原子地使用每个消息。或者,您可以使用批处理使用者一次传递多个消息。
认为可以从队列中“获取所有消息”是不应该的,队列中可能有数百万条消息。而且无论如何,您肯定不会将多条
SubmitOrder
样式的消息作为一批处理。从架构上讲,这是一个非常糟糕的想法。