MQ中的队列管理器和队列之间的区别



查看示例代码,我似乎需要queue managerqueue 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); 

您连接到一个队列管理器,该管理器可能托管许多不同的队列。因此,是的,应用程序通常需要访问队列管理器,然后访问该队列管理器上的特定队列。我建议您可以查看webspheremq标记的堆栈溢出信息,以帮助您入门。应用程序架构师/开发人员应该知道这些对象的名称,或者可以通过MQ管理员进行确认。

队列是一个消息容器。连接到承载队列的队列管理器的业务应用程序可以从队列中检索消息,也可以将消息放入队列中。我们有不同类型的队列,如下所示:

  • 本地队列:本地队列是队列和与队列关联的消息集的定义。托管队列的队列管理器在其本地队列中接收消息

  • 远程队列:远程队列定义是属于另一个队列管理器的队列的本地队列管理器上的定义。要将消息发送到远程队列管理器上的队列,发送方队列管理器必须具有目标队列的远程定义。

  • 别名队列:别名队列实际上不是队列;它们是现有队列的附加定义。可以创建引用实际本地队列的别名队列定义,但可以将别名队列定义与本地队列(基本队列)命名不同。这意味着您可以更改应用程序使用的队列,而无需更改应用程序;您只需创建一个指向新本地队列的别名队列定义。

在连接队列之前,我们必须启动一个队列管理器。队列管理器有一个名称,应用程序可以使用该名称连接到它。队列管理器拥有并管理WebSphereMQ.使用的资源集

  • 包含WebSphere MQ对象定义和消息数据的页面集
  • 用于在队列管理器出现故障时恢复消息和对象的日志
  • 处理器存储
  • 不同应用程序环境(CICS®、IMS)之间的连接™,和Batch)可以访问WebSphere MQ API
  • WebSphere MQ通道启动器,它允许您的z/OS系统上的WebSphere MQ与其他系统之间进行通信

最新更新