Назад | Перейти на главную страницу

Есть ли способ маршрутизировать сообщения MSMQ на основе метки?

У меня есть система с одним отправителем MSMQ (генерирует около 10 тыс. Сообщений / сек) и одним приемником MSMQ (2 тыс. Сообщений / сек). Создание и отправка сообщений происходит быстро, чтение и обработка - медленно. Поэтому я хочу поставить балансировщик нагрузки и использовать несколько приемников. На данный момент сообщения имеют формат XML, и как только я разберусь с балансировкой нагрузки, я планирую перейти на двоичный форматтер.

Проблема: сообщение с определенной меткой (или, если возможно, внутренним значением тега XML) должно все время отправляться точно одному и тому же получателю. Ситуация, когда сервер не работает, выходит за рамки этого вопроса (бонус, если вы знаете, как с этим справиться).

Я использую HAProxy для другой балансировки нагрузки MSMQ с циклическим перебором, и он отлично работает в режиме TCP. Я подумал, могу ли я повторно использовать его в этой ситуации.

Вопрос: как настроить HAProxy для балансировки нагрузки сообщений MSMQ на основе метки или значения тега в формате XML внутри сообщения. Сообщения с той же меткой должны идти постоянному получателю. Есть ли другие альтернативы?

Образец:

message [Label="server1"] [XML BODY ...] => LB => server1
message [Label="server2"] [XML BODY ...] => LB => server2

или аналогично тому, что RabbitMQ делает для "прямого обмена"

Источник изображения: pubs.vmware.com