当队列管理器未处理时,在MQ连接上进行提交时?

时间:2015-06-30 20:29:08

标签: java spring apache-camel mq

在IBM MQ连接上进行提交时,何时不进行连接? 我在Camel 2.10.4路由中配置JMS事务,我的应用程序是消费者和生产者。 我需要从队列中读取然后写入其他队列。在写入其他队列之前,我必须确保读取连接已关闭。 我的应用程序上下文XML配置文件中的相关部分显示为:

<bean id="jmsConfig" 
   class="org.apache.camel.component.jms.JmsConfiguration">
   <property name="connectionFactory" ref="pooledConnectionFactory"/>
   <property name="transacted" value="false" />

</bean>

1 个答案:

答案 0 :(得分:0)

Commit(MQCMIT)向队列管理器指示应用程序已到达同步点,它仅在成功完成MQGET,MQPUT1和MQPUT之后才会发生。

因此,在您尝试从队列中读取消息时,下面的API调用将按以下顺序进行

MQCONN
MQOPEN
MQGET
MQCLOSE
MQDISC

在此之后,提交发生。作为工作单元的一部分检索的邮件将被删除。

如果将消息发送到以下API,则会发生调用

MQCONN, MQPUT1, MQDISC.

稍后,提交发生。作为工作单元的一部分放置的消息可供其他应用程序使用。

在您的情况下,您使用一个应用程序进行读写操作。在以有条理的方式关闭连接之前,应用程序不会从操作中解除。在不可避免的情况下,如果没有发生提交,消息将回滚。