我有一个特殊的用例,我的应用程序在启动时需要生成一个临时队列,让消息在初始化时积累,只有在初始化完成后才启动这个临时队列的消费者。
最好的选择是仍然以自动删除的方式创建队列,但还不启动使用者,然后在完成一些初始化工作后再附加使用者。
这甚至可能与MassTransit吗?
我无法找到一种方法,能够做到这一点与大众运输和.net核心。这是我使用的代码的一个例子:
` serviceCollection.AddMassTransit(businerator => {businerator.AddConsumer();
busConfigurator.UsingRabbitMq((ctx, cfg) =>
{
cfg.Host("rabbitmq://localhost");
cfg.ReceiveEndpoint(queue =>
{
queue.ConfigureConsumer<MyConsumer>(ctx);
});
});
});`
应用程序一启动,使用者就开始使用消息,我对此无法控制。我还尝试使用IBusControl接口,但停止它也会删除队列(当然,因为它们被创建为自动删除)。
1条答案
按热度按时间rxztt3cl1#
您可以使用endpoint dependencies阻止接收端点启动,直到您准备好接收消息。