Мы отправляем текстовые сообщения XML с помощью определения очереди CLIENT.DATA (очередь передачи, каналы отправки/возврата и т. Д.) Из диспетчера очереди QM_MINE QM_CLIENT и очереди CLIENT.DATA. Сообщение достигает адресата (очередь CLIENT.DATA на клиенте). Проблема заключается в возможности получать сообщения подтверждения (точную копию отправленного сообщения) в локальной очереди CLIENT.DATA.ACK в QM_MINE, как только сообщения доходят до CLIENT.DATA в QM_CLIENT автоматически.Подтверждение WebSphere MQ и ответная очередь
Я нашел пару ресурсов в информационном центре WebSphere v7.1 по адресу reply-to queue и message acknowledgement, однако они мне не очень помогли.
До сих пор я пытался использовать ответ для очереди. Я создал очередь QM_MCT передачи на QM.OCC. Каждое сообщение, отправленное в очередь CLIENT.DATA, я задал очередь ответов, используя метод setJMSReplyTo(). Однако я уверен, что это не так, я больше не хватает.
MQ объектов Резюме:
QM_MINE: CLIENT_DATA (remoteQ), QM_CLIENT (transmitQ), CLIENT_DATA_ACK (localQ)
QM_CLIENT: CLIENT_DATA (localQ), QM_MINE (transmitQ),
И, каналы отправителя/получателя с обоих концов.
Исходный код Fragements:
Отправитель Клиент Data (по сделке):
public class ClientServiceImpl extends JmsGatewaySupport implements ClientService {
@Override
public void sendClientData(String dataXML) {
getJmsTemplate().convertAndSend(dataXML);
}
}
Преобразователь сообщение:
public Message toMessage(Object o, Session session) throws JMSException, MessageConversionException {
String dataXML = (String) o;
TextMessage message = session.createTextMessage();
message.setJMSReplyTo(replyToQueue);
message.setText(dataXML);
return message;
}
Примечание:
тока я не иметь MDP или MDB для прослушивания и потреблять сообщения из очереди CLIENT_DATA в QM_CLIENT. Я просто отправляю его из QM_MINE, и он перемещается в QM_CLIENT с помощью MQ. Нужно ли мне потреблять сообщения, чтобы это работало?
Я использую Java, JMS, Spring и WebShere MQ v7.1 для Linux. Дополнительная информация будет предоставлена по запросу.
Спасибо, Роб. Я получил его работу, добавив строку «message.setIntProperty (WMQConstants.JMS_IBM_REPORT_COA, MQC.MQRO_COA_WITH_FULL_DATA); перед «message.setText (..)». Однако в QM_CLIENT мне пришлось создать удаленную очередь queue для CLIENT_DATA_ACK (вместе с передачей для QM_MINE). Так оно и должно быть? Возможно ли это сделать, не создавая в очереди QM_CLIENT идентификатор удаленной очереди? – arrehman
'QM_CLIENT' должен иметь возможность разрешить маршрут до' QM_MINE'. Если в QM_CLIENT есть XMitQ с именем 'QM_MINE', сообщения должны вернуться. Если этого не произошло, QRemote с именем 'QM_MINE', определенный в' QM_CLIENT', указывая фактическое имя XMitQ (и никакие записи 'RNAME' или' RQMNAME'), не станет хитом. –
Я хочу сделать это без RemoteQ DATA.CLIENT.ACK в QM_CLIENT, поэтому я удалил это и сохранил только QM_MINE XMITQ в QM_CLIENT, однако сообщения replyTo накапливаются в QM_MINE. replyTo имя очереди - DATA.CLIENT.ACK (который находится на QM_MINE, а не QM_CLIENT). Еще что-то не так. – arrehman