我们正在将RabbitMQ和MassTransit用作外发应用程序中的消息传递基础结构。
在我的情况下,我的使用者需要停止处理消息一段时间,然后在以后重新启动。
我可以成功地停止总线,并且使用者停止处理进一步的消息,但是当我重新启动总线时,它说总线已经启动,但是使用者不会再接收任何消息来进行进一步处理
示例代码如下
var iBusControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost"), h =>
{
h.Username("guest");
h.Password("guest");
});
if (linkConsumer)
cfg.ReceiveEndpoint("TestMessage_Queue", x =>
{
x.Consumer<TestMessageConsumer>();
});
});
iBusControl.Start();
// Consumer starts processing messages
// later on in the code I call stop on the same bus instance
iBusControl.Stop();
// Consumer stops processing messages
// later on in the code I call start again on the bus instance
iBusControl.Start();
// Masstransit also says, bus already started
// But the consumer won't pick up any further messages for processing.
总线如果我创建了与代码的第一块相同的总线新实例并对其进行调用,它将正确连接使用者并再次开始消息处理。几个问题/困惑
将MassTransit 5.3.3与RabbitMQ 3.6.14 Erlang 20.1结合使用