#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
.