Потребитель Masstransit Message не подключится - PullRequest
0 голосов
/ 20 марта 2019

Мы используем 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.

Шина, если я создаю новый экземпляр шины, такой же, как первый блок моего кода, и запускаю на нем вызов, он правильно подключится к потребителю, и обработка сообщения начнется снова. Несколько вопросов / путаницы

  1. Это ожидаемое поведение?
  2. Останавливает ли остановка шины всю конфигурацию конечной точки приема?
  3. Почему я не могу запустить автобус после его остановки?

Использование MassTransit 5.3.3 с RabbitMQ 3.6.14 Erlang 20.1

...