IIB收集器节点和事务

时间:2019-08-30 10:52:23

标签: ibm-integration-bus

我在消息流中使用了收集器节点。它被配置为收集50条消息或等待30秒。在负载测试下,Websphere MQ有时会说已检测到长时间运行的事务,并且pid对应于应用程序执行组的pid。问题是:收集器节点在等待消息或超时到期时是否不提交其内部事务?

2 个答案:

答案 0 :(得分:2)

MQInput节点是指定事务性的位置。 IIB v10 KC页面Developing integration solutions > Developing message flows > Message flow behavior > Changing message flow behavior > Configuring transactionality for message flows > Configuring MQ nodes for transactions

中对此进行了描述
  
      
  • 如果将属性设置为“是”(默认选项):如果事务尚未进行,则节点将启动事务。
  •   

收集器节点直到超时或达到计数才提交。请参阅IIB v10 KC页面Reference > Message flow development > Built-in nodes > Collector node

  

收集器节点在同步点下从事务或线程接收到的所有输入消息都存储在内部队列中。将输入消息存储在同步点下可确保消息保持一致的状态,以便输出线程进行处理;此类消息仅在传播输入消息的事务或线程结束时可用。

  

消息收集完成后,将创建一个新事务,并将其传播到下一个节点。

答案 1 :(得分:1)

每当您配置任何节点(根据IBM文档符合条件的节点)以在事务下工作时,它们只有在工作单元完成后才提交。在您的情况下,由于在一个工作单元中请求了50条消息(如果在30秒内到达),那么一旦成功处理了所有50条消息,则包含收集器节点和该流中所有其他节点的消息流就会提交。在这段时间内,队列管理器必须在其日志中维护该运行中状态,我之前已经说过该日志必须增加。因此,无论使用哪种节点,任何大型工作单元都会导致此问题

由于您的问题涉及MQ长时间运行的事务,因此请确保您有足够的MQ日志空间以供队列管理器处理事务。

要增加MQ日志空间,请转到以下路径并增加主要和次要数字

        ==> IBM\WebSphere MQ\qmgrs\QMNAME\qm.ini

以下是您必须增加的内容。默认情况下,它是3和2。确保光盘上有足够的空间以增加它的数量。 qm.ini文件更新后,重新启动队列管理器。

               Log:
                  LogPrimaryFiles=3
                  LogSecondaryFiles=2

链接到上的MQ配置: https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.con.doc/q018710_.htm

希望这会有所帮助。