Вы также сгруппировали очередь ответов. Следовательно, ответные сообщения балансируются между двумя внешними администраторами очередей.
Один из способов отправки ответов правильному адресату - это не кластерные очереди ответов. Вместо этого определите определение удаленной очереди для очередей ответов во внутренних администраторах очередей. Затем используйте атрибут replyToQueueManager
сообщения запроса, чтобы принять решение и поместить ответное сообщение в соответствующую очередь ответов.
Например, следующий сценарий определяет две удаленные очереди в каждом из двух внутренних администраторов очередей. Сценарий предполагает, что очередь с именем REPLY_QUEUE
определена в обоих интерфейсных администраторах очередей.
DEF QREMOTE(REP_Q_FRONT_END_QM1) RNAME(REPLY_QUEUE) RQMNAME(FRONT_END_QM1) CLUSTER(REQUEST_REPLY_CLUSTER)
DEF QREMOTE(REP_Q_FRONT_END_QM2) RNAME(REPLY_QUEUE) RQMNAME(FRONT_END_QM2) CLUSTER(REQUEST_REPLY_CLUSTER)
Затем сообщения запроса обработки серверного приложения открывают удаленные очереди.
MQQueue mqReplyQ_QM1 = queueManager.accessQueue("REP_Q_FRONT_END_QM1", CMQC.MQOO_FAIL_IF_QUIESCING | CMQC.MQOO_OUTPUT );
MQQueue mqReplyQ_QM2 = queueManager.accessQueue("REP_Q_FRONT_END_QM2", CMQC.MQOO_FAIL_IF_QUIESCING | CMQC.MQOO_OUTPUT );
Затем использует атрибут replyToQueueManagerName
для отправки ответа правильному администратору очередей.
MQMessage msgRequest = new MQMessage();
mqRequestQ.get(msgRequest, mqgmo);
if(msgRequest.replyToQueueManagerName.trim().equals("FRONT_END_QM1")) {
mqReplyQ_QM1.put(msgReply);
} else {
mqReplyQ_QM2.put(msgReply);
}
Могут быть лучшие решения, но вышеперечисленное сделает свою работу.
person
Shashi
schedule
15.05.2016