#message-queue #masstransit
#очередь сообщений #masstransit
Вопрос:
Извините, если мой вопрос глупый, я новичок в MassTransit.
Моя система состоит из сервера и нескольких клиентских устройств. Я хотел бы отправить сообщение с сервера конкретному клиенту или группе клиентов. Насколько я понимаю, IBusControl.Publish
отправляет сообщение всем подписчикам, и IBusControl.Send
только одному подписчику.
Как я могу добиться этого с помощью MassTransit? Мои транспортные средства — это служебная шина RabbitMQ / Azure.
Спасибо!
Ответ №1:
MassTransit реализует стандартные шаблоны обмена сообщениями, которые не зависят от MassTransit. Двухточечный, публикация-подписка, недопустимый канал сообщений, канал мертвых писем и так далее:
У вас действительно есть выбор между отправкой сообщения одному потребителю с помощью Send
и широковещательной передачей сообщений всем подписчикам для этого типа сообщений с помощью Publish
.
Все остальное можно легко сделать, добавив код к потребителям:
await bus.Publish(new MyMessage { ReceiverGroup = "group1", ... });
и
public async Task Consume(IContext<MyMessage> context)
{
if (context.Message.ReceiverGroup != myGroup) return;
...
}