Как мне пойти, если имя replyToQueueManagerName и replyToQueueName не входит в ту же MQEnvironment, что и мое requestQueueuManagerName и requestQueueName?
Пример:
//MQEnvironment for requestMessage
MQEnvironment.hostname = requestMessageHost;
MQEnvironment.channel = requestMessageChannel;
MQEnvironment.port = requestMessagePort
MQQueueManager qMgr = new MQQueueManager(requestQueueuManagerName);
MQQueue inputQueue = qMgr.accessQueue(requestQueueName,MQC.MQOO_OUTPUT);
MQMessage requestMessage = new MQMessage();
MQPutMessageOptions pmo = new MQPutMessageOptions();
requestMessage.writeString(sampleXmlRequest);
requestMessage.replyToQueueManagerName = replyToQueueManagerName;
requestMessage.replyToQueueName = replyToQueueName;
В VB.NET можно подключиться к QueueManagers и Queues, которые находятся в разных средах.
Я предполагаю, что вы спрашиваете, как подключиться к другому менеджеру очередей, когда MQEnvironment
уже используется для подключения к диспетчеру очереди.
Вы можете создать соединение с менеджером очереди, предоставив информацию о соединении через хеш-таблицу. Этот фрагмент кода находится на С#.
Hashtable mqProps = new Hashtable();
mqProps.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
mqProps.Add(MQC.HOST_NAME_PROPERTY, "<yourhost>");
mqProps.Add(MQC.PORT_PROPERTY, port);
mqProps.Add(MQC.CHANNEL_PROPERTY, "<svrconn channel name>");
MQQueueManager qmConn = new MQQueueManager("replyQM", mqProps);
Вот код Java:
Hashtable<String, Object> properties;
properties = new Hashtable<String, Object>();
properties.put("hostname", "replyqmhost");
properties.put("port", new Integer(1414));
properties.put("channel", "REPLYQM.SVRCONN");
properties.put(MQConstants.USE_MQCSP_AUTHENTICATION_PROPERTY,true);
properties.put(MQConstants.USER_ID_PROPERTY, "<user id>");
properties.put(MQConstants.PASSWORD_PROPERTY, "<password>");
/**
* Connect to a queue manager
*/
MQQueueManager queueManager = new MQQueueManager("replyQM", properties);
Хотя верно, что ответ Shashi показывает вам, как подключиться к двум различным менеджерам очередей в одном приложении, обычно это не способ обрабатывать ReplyToQ в другом диспетчере очередей. Почти всегда будет иметь место, что ReplyToQ/ReplyToQMgr находится в другом менеджере очередей. Но у вас должны быть каналы и очередь передачи, чтобы вернуть это сообщение в ответ ReplyToQMgr, и просто поместите ответное сообщение в тот же менеджер очередей, из которого вы получили запрос запроса.
Это имеет ряд преимуществ