我需要澄清从类com.ibm.mq.jms.MQSession
中createQueue(java.lang.String queueName)
的方法的行为。如果我传递任意队列名称,它会创建一个临时队列吗?另一方面,需要传递什么String
值才能获得表示队列管理器中配置的静态队列的 Queue
对象?例如,如果我有一个MQDestination
类型的对象dest
,我可以调用dest.toString()
或根据javadocs或dest.getStringFromDestination()
(返回URI字符串)。如果传递给提到的 createQueue 方法,这两个结果中的任何一个是否有效。
我的问题的目的是正确使用 Spring 的DynamicDestinationResolver
(获取字符串并返回目标),它在幕后使用此 MQ 特定方法。
感谢您抽出宝贵时间
您可以在此处找到 JMS 会话对象的描述:
http://docs.oracle.com/javaee/7/api/javax/jms/Session.html
在 JMS Session.createQueue() 中,它不会在 MQ 队列管理器上创建物理队列,而是用于连接到已经定义的队列。MQSession.createQueue("Q1");将生成一个目标对象,该对象可用于引用队列管理器上已存在的队列"Q1"。
要创建临时队列,您需要使用 MQSession 对象的 createTemporaryQueue() 方法。尽管您无法控制所述临时队列的名称。