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