MassTransit: как отправить сообщение конкретным потребителям? - PullRequest
0 голосов
/ 13 марта 2019

Извините, если мой вопрос тупой, я новичок в MassTransit.

Моя система состоит из сервера и нескольких клиентских устройств.Я хотел бы отправить сообщение с сервера конкретному клиенту или группе клиентов.Насколько я понимаю, IBusControl.Publish отправляет сообщение всем подписчикам, а IBusControl.Send - только одному подписчику.

Как мне добиться этого с помощью MassTransit?Мой транспорт - RabbitMQ / Azure Service Bus.

Спасибо!

1 Ответ

1 голос
/ 13 марта 2019

MassTransit реализует стандартные шаблоны обмена сообщениями, которые не относятся к MassTransit. Точка-точка, публикация-подписка, недопустимый канал сообщений, канал недоставленных сообщений и т. Д .:

enter image description here

У вас действительно есть выбор между отправкой сообщения одному потребителю с помощью Send и рассылкой сообщений всем подписчикам для этого типа сообщений с помощью Publish.

Все остальное можно легко сделать, добавив код для потребителей:

await bus.Publish(new MyMessage { ReceiverGroup = "group1", ... });

и

public async Task Consume(IContext<MyMessage> context)
{
    if (context.Message.ReceiverGroup != myGroup) return;

    ...
}
...