在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>
答案 0 :(得分:0)
Commit(MQCMIT)向队列管理器指示应用程序已到达同步点,它仅在成功完成MQGET,MQPUT1和MQPUT之后才会发生。
因此,在您尝试从队列中读取消息时,下面的API调用将按以下顺序进行
MQCONN
MQOPEN
MQGET
MQCLOSE
MQDISC
在此之后,提交发生。作为工作单元的一部分检索的邮件将被删除。
如果将消息发送到以下API,则会发生调用
MQCONN, MQPUT1, MQDISC.
稍后,提交发生。作为工作单元的一部分放置的消息可供其他应用程序使用。
在您的情况下,您使用一个应用程序进行读写操作。在以有条理的方式关闭连接之前,应用程序不会从操作中解除。在不可避免的情况下,如果没有发生提交,消息将回滚。