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 аргумента.
Вам не нужно подключаться к какой-либо очереди при публикации сообщений. Вы просто публикуете по адресу, описанному в документации, используя IPublishEndpoint
. Вы не публикуете в очередь, поэтому это называется публикацией. Если вам нужно отправить, вы используете экземпляр ISendEndpoint
. Методу Send
нужен адрес.
Вы подключаетесь к очереди (и обмениваетесь) только тогда, когда вам нужно использовать сообщения.
С MassTransit рекомендуется использовать ConsumeContext
, если вы отправляете или публикуете внутри потребителя. Вы можете использовать context.Publish
и context.GetSendEndpoint
.
Вы можете настроить несколько конечных точек получения, вызвав ReceiveEndpoint более одного раза.