通过jmsapi中的QueuManager

通过jmsapi中的QueuManager,jms,jboss6.x,mq,jca,Jms,Jboss6.x,Mq,Jca,在MQ中,如果您有一个现有队列管理器的实例,则假设您的应用程序有权访问该队列管理器1。您可以通过创建一个队列来发送消息,该队列通过queuemanager1指向另一个队列管理器queuemanager2的队列。之所以这样做,是因为应用程序可能没有直接访问QueueManager 2的权限,但承载QueumManager 1的MQ服务器有 代码如下所示: MQQueue destQueue=queuemanager1.accessQueue(“queFromAnotherMngr”,CMQC.MQ

在MQ中,如果您有一个现有队列管理器的实例,则假设您的应用程序有权访问该队列管理器1。您可以通过创建一个队列来发送消息,该队列通过queuemanager1指向另一个队列管理器queuemanager2的队列。之所以这样做,是因为应用程序可能没有直接访问QueueManager 2的权限,但承载QueumManager 1的MQ服务器有

代码如下所示:

MQQueue destQueue=queuemanager1.accessQueue(“queFromAnotherMngr”,CMQC.MQOO_输出| CMQC.MQOO_失败,如果_静止,“queuemanager2”,null,null)

我正在重构代码以使用JBossAS6的IBMMQJCA适配器。因此,我相信我必须坚持使用普通的jmsapi(使用InitialContext-JNDI查找、Producer等)才能让JBoss管理我的连接

但是,我不知道如何在常规JMS中允许接收MQ服务器将我的消息转发到另一个QueumManager(queuemanager2)的另一个队列


根据我到目前为止的研究,有一个对象被发送到MQ,称为消息队列消息描述符(MQMD),它有一个名为“ReplyToQMgr”和“ReplyToQ”的字段。我想,若我找到了一种使用jmasapi和jcaadpater更新这些字段的方法,我就有了我的解决方案。有什么想法吗?思想?建议?解决?谢谢

ReplyTo字段允许远程应用程序回发邮件。WebSphere MQ在路由原始消息时不使用它们,而是用于寻址确认和故障报告

使用JNDI查找在远程QMgr上指定队列的方法是在队列对象中定义
QMNAME
字段。有关WebSphere MQ对象支持的所有属性的列表,请参阅。上表中没有提到的是队列的
QMNAME
属性不需要与连接工厂的
QMNAME
属性匹配。当这些属性不同时,本地QMgr将在队列对象打开时尝试解析到目标QMgr的路径。只要它可以找到路径(传输队列或QMgr别名必须与目标QMgr同名),并且只要您的应用程序被授权进入传输队列,您就可以继续


请注意,如果获得JMS异常,则必须查询是否存在并打印找到的任何链接异常。这些将有WMQ原因代码,它将告诉您或管理员是否有任何问题与名称解析、授权或其他相关。有关如何执行此操作的建议,请参阅。请注意,这不是WMQ特定的建议。JMS为报告异常指定了一个多级结构,链接异常是报告特定于供应商的错误的地方。因此,任何JMS应用程序,无论使用哪个传输提供程序,都应该打印链接的异常。

ReplyTo字段允许远程应用程序将消息发送回您。WebSphere MQ在路由原始消息时不使用它们,而是用于寻址确认和故障报告

使用JNDI查找在远程QMgr上指定队列的方法是在队列对象中定义
QMNAME
字段。有关WebSphere MQ对象支持的所有属性的列表,请参阅。上表中没有提到的是队列的
QMNAME
属性不需要与连接工厂的
QMNAME
属性匹配。当这些属性不同时,本地QMgr将在队列对象打开时尝试解析到目标QMgr的路径。只要它可以找到路径(传输队列或QMgr别名必须与目标QMgr同名),并且只要您的应用程序被授权进入传输队列,您就可以继续


请注意,如果获得JMS异常,则必须查询是否存在并打印找到的任何链接异常。这些将有WMQ原因代码,它将告诉您或管理员是否有任何问题与名称解析、授权或其他相关。有关如何执行此操作的建议,请参阅。请注意,这不是WMQ特定的建议。JMS为报告异常指定了一个多级结构,链接异常是报告特定于供应商的错误的地方。因此,任何JMS应用程序,无论使用哪个传输提供程序,都应该打印链接的异常。

因此,可以通过以下操作使用URI创建队列:queue destinationQueue=session.createQueue(“queue://QMgr2/Q2)可以将消息路由到此新的队列管理器/队列(QMgr2/Q2)即使会话是从使用jca适配器的原始连接工厂的jndi查找中检索到的queumanager创建的,我知道需要报告链接异常。无论如何,谢谢你的意见。是的。指定您未连接到的QMgr将导致WMQ尝试解析它所需的路由。因此,可以通过以下操作使用URI创建队列:queue destinationQueue=session.createQueue(“queue://QMgr2/Q2)可以将消息路由到此新的队列管理器/队列(QMgr2/Q2)即使会话是从使用jca适配器的原始连接工厂的jndi查找中检索到的queumanager创建的,我知道需要报告链接异常。无论如何,谢谢你的意见。是的。指定未连接到的QMgr将导致WMQ尝试解析其所需的路由。