Агрегатор сбора не правильно агрегирует ответ Mule ESB
У меня есть поток, где у меня будет несколько Item
под корневым тегом Items
, У меня есть сплиттер, где он разбивает каждый элемент и выполняет некоторую обработку. После этого я собираю все ответы, используя агрегатор Collection.
В моем потоке наблюдаемый агрегатор сбора чего-то ожидает, хотя все ответы агрегатора уже достигнуты. После агрегатора ответ не собирается (так как он ожидает некоторого ответа). Но я уверен (если у Предметов есть 5 пунктов в нем), весь ответ - агрегатор достижения. Но не уверен, почему агрегатор все еще не передает свой вывод (но иногда он проходит)
Если я сохранил тайм-аут 30000 в aggrgegator и потерпел неудачу при тайм-ауте = "ложь", теперь он пропущен и агрегирует ответ ( 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 пунктов, которые были заполнены перед агрегатором. Помощь будет более ценной. Спасибо.
Отредактировано: регистрирует после компонента сплиттера каждую итерацию элемента
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}
@ Дэвид, пожалуйста, предложите. MULE_CORRELATION_SEQUENCE=2 повторяется несколько раз. Но выборочная полезная нагрузка правильна и различна для каждого correlation_seq=2. Как можно решить эту проблему?
1 ответ
Я чувствую, что что-то в doing some transformation and processing
повреждает эти управляющие свойства, что мешает агрегации работать.
Я понимаю, что легко указать пальцем на то, что не показано выше, но журналы показывают явное изменение свойств элемента управления, поэтому это должно произойти где-то в этом выделенном блоке.