Razbezhkin
@Razbezhkin
программист, преподаватель

Как настроить MassTransit + RabbitMQ, чтобы несколько потоков потребления получали все копии опубликованных сообщений?

Здравствуйте!

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

я настраиваю очередь так:

var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
                {
                    h.Username("guest");
                    h.Password("guest");
                });

                cfg.ReceiveEndpoint(host,"customer_update_queue", ec =>
                {
                    ec.LoadFrom(_instance);
                });
            });

            _instance.RegisterInstance<IBusControl>(busControl);
            _instance.RegisterInstance<IBus>(busControl);

            busControl.Start();

_instance - это IoC контейнер Unity

в других процессах создание и подключение к шине выглядит так:

var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
                {
                    h.Username("guest");
                    h.Password("guest");
                });

                cfg.ReceiveEndpoint(host, "customer_update_queue", ec =>
                {
                    //ec.Consumer<SmsService>();
                    SmsService s = new SmsService();
                    ec.Instance(s);
                });
            });


            busControl.Start();


Спасибо за внимание.
  • Вопрос задан
  • 635 просмотров
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Перестаньте настраивать архитектуру кроля в коде. Это к хорошему не приведет. Зайдите к ним на сайт - там отличные туториалы. А вообще - вам нужен exchange к котором присоединено несколько очередей
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы