Возможно ли подключиться к нескольким очередям masstransit непосредственно при запуске?

#asp.net-core #rabbitmq #masstransit

#asp.net-ядро #rabbitmq #masstransit

Вопрос:

 services.AddMassTransit(config =>
        {
            config.AddConsumer<Consumer1>();
            config.UsingRabbitMq((ctx, cfg) => {
                cfg.Host("amqp://guest:guest@localhost:5672");

            
                cfg.ReceiveEndpoint("firstqueue", c => {
                    c.ConfigureConsumer<Consumer1>(ctx);
                });


            
            });
 

Мне нужно принять несколько запросов из одной очереди, а затем опубликовать их в другой очереди. Вот как я подключаюсь к одному из них, я пытался добавить его напрямую, но мне это не удалось, так как у меня не может быть 3 аргументов

Комментарии:

1. Вы можете настроить несколько конечных точек приема, вызвав ReceiveEndpoint несколько раз.

Ответ №1:

Вам не нужно подключаться к какой-либо очереди при публикации сообщений. Вы просто публикуете адрес, как описано в документах, используя IPublishEndpoint . Вы не публикуете в очередь, поэтому она называется publish . Если вам нужно отправить, вы используете ISendEndpoint экземпляр. Send Методу необходим адрес.

Вы подключаетесь к очереди (и exchange) только тогда, когда вам нужно использовать сообщения.

С MassTransit рекомендуется использовать ConsumeContext , если вы отправляете или публикуете внутри потребителя. Вы можете использовать context.Publish и context.GetSendEndpoint .