查看示例代码,似乎我需要queue manager
和queue name
来设置MQ代码。那些我可以从哪里得到这些价值的区别是什么?有什么建议吗?
MQTopicConnectionFactory cf = new MQTopicConnectionFactory();
// Config
cf.setHostName("localhost");
cf.setPort(1414);
cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
cf.setQueueManager("QM_thinkpad");
cf.setChannel("SYSTEM.DEF.SVRCONN");
MQTopicConnection connection = (MQTopicConnection) cf.createTopicConnection();
MQTopicSession session = (MQTopicSession) connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
MQTopic topic = (MQTopic) session.createTopic("topic://foo");
MQTopicPublisher publisher = (MQTopicPublisher) session.createPublisher(topic);
MQTopicSubscriber subscriber = (MQTopicSubscriber) session.createSubscriber(topic);
答案 0 :(得分:2)
您连接到可能托管许多不同队列的队列管理器。所以,是的,应用程序通常需要访问队列管理器,然后访问该队列管理器上的特定队列。我建议您查看Stack Overflow info for the websphere-mq tag以帮助您入门。这些对象的名称应该由应用程序架构师/开发人员知道,或者可以通过MQ管理员确认。
答案 1 :(得分:1)
队列是邮件的容器。连接到承载队列的队列管理器的业务应用程序可以从队列中检索消息,也可以将消息放入队列。我们有不同类型的队列如下:
本地队列:本地队列是队列和与队列关联的消息集的定义。承载队列的队列管理器在其本地队列中接收消息
远程队列:远程队列定义是属于另一个队列管理器的队列的本地队列管理器上的定义。要将消息发送到远程队列管理器上的队列,发送方队列管理器必须具有目标队列的远程定义。
别名队列:别名队列实际上不是队列;它们是现有队列的附加定义。您可以创建引用实际本地队列的别名队列定义,但您可以将别名队列定义命名为与本地队列(基本队列)不同。这意味着您可以更改应用程序使用的队列,而无需更改应用程序;您只需创建一个指向新本地队列的别名队列定义。
在开始连接Queue之前,我们必须启动队列管理器。队列管理器有一个名称,应用程序可以使用此名称连接到它。队列管理器拥有并管理WebSphere MQ使用的资源集。