集合聚合器未正确聚合响应 Mule ESB
Collection aggregator not aggregating response properly Mule ESB
我有流量,我将在根标签 Items
下有多个 Item
。我有拆分器,它可以拆分每个项目并进行一些处理。之后,我使用 Collection aggregator 收集所有响应。
在我的流程中,虽然所有响应都已到达聚合器,但观察到集合聚合器正在等待某事。聚合器之后没有收集响应(因为它正在等待一些响应)。
但我确定(如果 Items 中有 5 个项目),所有响应都会到达聚合器。但不确定为什么聚合器仍未传递其输出(但有时会传递)
如果我在聚合器中保持超时 30000 并且在超时 ="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 个项目是否在聚合器之前填充。
帮助会更多appreciated.Thanks.
已编辑:
在拆分器组件后记录 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 的提取有效载荷是正确的并且不同。如何解决这个问题?
我的直觉是 doing some transformation and processing
中的某些东西正在破坏这些控制属性,从而阻止聚合工作。
我意识到很容易指责上面没有显示的内容,但日志显示控件属性发生了明显的变化,因此它必须发生在这个引出块中的某个地方。
我有流量,我将在根标签 Items
下有多个 Item
。我有拆分器,它可以拆分每个项目并进行一些处理。之后,我使用 Collection aggregator 收集所有响应。
在我的流程中,虽然所有响应都已到达聚合器,但观察到集合聚合器正在等待某事。聚合器之后没有收集响应(因为它正在等待一些响应)。 但我确定(如果 Items 中有 5 个项目),所有响应都会到达聚合器。但不确定为什么聚合器仍未传递其输出(但有时会传递)
如果我在聚合器中保持超时 30000 并且在超时 ="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 个项目是否在聚合器之前填充。 帮助会更多appreciated.Thanks.
已编辑: 在拆分器组件后记录 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 的提取有效载荷是正确的并且不同。如何解决这个问题?
我的直觉是 doing some transformation and processing
中的某些东西正在破坏这些控制属性,从而阻止聚合工作。
我意识到很容易指责上面没有显示的内容,但日志显示控件属性发生了明显的变化,因此它必须发生在这个引出块中的某个地方。