我刚刚开始研究使用IBM MQ进行某些通信的软件。
据我所知,MQ可用于多对一通信和一对多通信。
假设有3个业务应用程序A,B和C.A希望使用MQ向B发送消息而将另一个消息发送到C但A只使用一个队列Queue1。
现在我的问题是,我们是否可以定义(在MQMD中或其他方式)某个消息仅针对B的B NOT,因此只有B可以在B可用时从Queue1中检索它。如果不是,我们怎么能这样做呢?
另一件事是我们可以为A-B通信创建一个单独的队列Queue2吗?
答案 0 :(得分:2)
最好使用单独的队列。例如,对应用程序A使用队列QA2B
向应用程序B发送消息,并为应用程序A使用QA2C
向应用程序C发送消息。这样就可以分离出流量,并且可以通过管理方式限制应用程序B接收消息意为C,反之亦然。
可以只使用一个队列,其中应用程序A在发送消息时设置一个消息属性,其内容类似于“消息用于B”或“消息用于C”。应用程序B使用选择器在接收消息时匹配属性值“Message for B”。类似地,应用程序C也使用选择器“Message for C”并接收消息。但请注意,如果B或C接收到没有任何选择器的消息,则消息可能会出错。