集合聚合器没有正确地聚合响应Mule ESB

时间:2015-01-19 23:36:54

标签: mule mule-studio mule-el mule-component

我有流量,我会在根标记Item下有多个Items。我有分离器,它分割每个项目并进行一些处理。之后,我使用Collection聚合器收集所有响应。

在我的流程中,观察到的集合聚合器等待所有响应已经到达聚合器。在聚合器之后没有收集响应(因为它正在等待一些响应)。          但我确定(如果项目中有5个项目),所有响应都是到达聚合器。但不确定为什么聚合器仍未通过其输出(但有时它正在通过)

如果我在aggrgegator中保持超时30000并且在Timeout =" false"上失败,现在它被传递出来并且它正在聚合响应(5项)。

但我很确定,消息在20000毫秒内到达聚合器。但它仍在等待某事:(。

为什么来自集合聚合器的此行为。有人有线索吗?请找到配置..

    <flow name="Items" doc:name="Items">
    <vm:inbound-endpoint exchange-pattern="one-way" path="QUEUE" connector-ref="VM_Q1" doc:name="QUEUE">
    </vm:inbound-endpoint>
    <splitter expression="#[xpath('/Items/Item')]" doc:name="Splitter"/>
  <vm:outbound-endpoint exchange-pattern="one-way" path="OUT1" connector-ref="MAIN_VM" doc:name="Test Queue">
 </flow>

  <flow name="Items1" doc:name="Items">
  <vm:inbound-endpoint exchange-pattern="one-way" path="OUT1" connector-ref="MAIN_VM" doc:name="Test Queue"/>
.............doing some transformation and processing.....
<collection-aggregator failOnTimeout="true" doc:name="Collection Aggregator"/>  
  </flow>

使用版本:3.5.1 我们如何追踪究竟是什么等待?我保留了记录器并检查了聚合器之前填充的所有5个项目。 帮助将更加赞赏。谢谢。

编辑:  在每次迭代Item

之后记录拆分器组件
  After splitter:{MULE_CORRELATION_SEQUENCE=1, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686}
 After splitter:{MULE_CORRELATION_SEQUENCE=2, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686}
 After splitter:{MULE_CORRELATION_SEQUENCE=3, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686}
 After splitter:{MULE_CORRELATION_SEQUENCE=4, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686}
 After splitter:{MULE_CORRELATION_SEQUENCE=5, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686}

收集聚合器之前的日志

  Before Collection Aggregator:{MULE_CORRELATION_SEQUENCE=1, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=13783281-a036-11e4-a356-b8ee652d2686, Content-Type=text/plain;charset=UTF-8}
  Before Collection Aggregator:{MULE_CORRELATION_SEQUENCE=2, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686, Content-Type=text/plain;charset=UTF-8}
  Before Collection Aggregator:{MULE_CORRELATION_SEQUENCE=2, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686, Content-Type=text/plain;charset=UTF-8}
  Before Collection Aggregator:{MULE_CORRELATION_SEQUENCE=2, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686, Content-Type=text/plain;charset=UTF-8}
 Before Collection Aggregator:{MULE_CORRELATION_SEQUENCE=2, MULE_CORRELATION_GROUP_SIZE=5, MULE_ENCODING=UTF-8, MULE_CORRELATION_ID=9f7447b1-a03b-11e4-85dd-b8ee652d2686, Content-Type=text/plain;charset=UTF-8} 

@David请建议。 MULE_CORRELATION_SEQUENCE = 2重复多次。但是,对于每个correlation_seq = 2,获取有效负载是正确的并且是不同的。怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

我的直觉是,doing some transformation and processing中的某些内容会破坏这些控件属性,从而阻止聚合工作。

我意识到很容易指出上面没有显示的内容,但是日志显示了控件属性的明显变化,所以它必须发生在这个引出的块中。