目前我正在使用Apache Camel,我需要做的是在启动应用程序时在camel中创建一个WMQ队列(类似于会话队列),并在我停止应用程序时删除它。有什么办法吗?
或者,我已经检查过apache camel会在创建连接工厂时创建一个随机名称的临时名称。有没有办法将临时队列的名称从随机名称更改为静态名称?
仅供参考,目前我正在使用Spring进行组件配置。
由于
答案 0 :(得分:2)
好的,这实际上与Apache Camel没有任何关系,因为它可以看作是关于这个问题的任何JMS客户端应用程序。
IBM WebSphere MQ有两种类型的队列。
需要由管理员,脚本等创建(并可能删除)的常规队列。
名称无关的临时队列,它必须在队列管理器的上下文中是唯一的。 JMS不允许命名临时队列,因为名称实际上是无关紧要的,因为它应该被使用一次然后被丢弃。
WMQ的设计目的并不是为了支持您的用例。
唯一的选择是弄清楚你是否能以某种方式自动完成创建/删除队列的任务。这通常在MQ Explorer / MQSC / MQMON或类似工具中手动完成。其他MOM软件(如ActiveMQ)会自动执行此类操作。
远程创建队列可能有多种方法。一种是使用PCF commands,您可以将其发送到SYSTEM.ADMIN.COMMAND.QUEUE等队列。但是,该队列通常在企业设置中受到很好的保护,因此只有管理员才能使用它。但是,您在问题中没有相关信息。另一个选择(不是很好,但不是更少),是让队列管理器服务器上的应用程序(可能是camel?)调用带有params的runmqsc来创建队列。