Я только начал работать над программным обеспечением, которое использует IBM MQ для некоторой связи.

Насколько я понимаю, MQ можно использовать для связи "многие к одному" и "один ко многим".

Допустим, есть 3 бизнес-приложения A, B и C. A хочет отправить сообщение с использованием MQ для B и другое сообщение для C, но A использует только одну очередь Queue1.

Теперь мой вопрос в том, можем ли мы определить (в MQMD или иначе), что определенное сообщение предназначено только для B, а НЕ для C, поэтому только B может получить его из Queue1, когда B доступен. Если нет, то как мы можем это сделать, если это вообще возможно?

Еще один вопрос: можем ли мы сделать отдельную очередь Queue2 только для связи A-B?

1
ITguy 1 Мар 2016 в 12:57
1
Я не уверен, что если есть те же правила для других технологий, например RabbitMQ
 – 
user4464506
1 Мар 2016 в 15:12

1 ответ

Лучший ответ

Лучше использовать отдельные очереди. Например, используйте очередь QA2B для приложения A для отправки сообщений в приложение B и QA2C для приложения A для отправки сообщений в приложение C. Таким образом, трафик разделяется, и вы можете административно ограничить приложение B от получения сообщений. предназначен для C и наоборот.

Можно использовать только одну очередь, в которой приложение A при отправке сообщений устанавливает свойство сообщения, которое говорит что-то вроде «Сообщение для B» или «Сообщение для C». Приложение B использует селектор для сопоставления значения свойства «Сообщение для B» при получении сообщений. Аналогичным образом приложение C также использует селектор «Сообщение для C» и принимает сообщения. Но обратите внимание, если B или C получают сообщения без какого-либо селектора, тогда сообщения могут попасть в чужие руки.

2
Shashi 1 Мар 2016 в 13:34