Mule - пакетная синхронизация или асинхронная работа - PullRequest
0 голосов
/ 24 мая 2019

У меня есть два пакетных задания в разных потоках. Во-первых, выполните Upsert в Salesforce, а когда он завершится, он вызовет второй поток, у которого есть другое пакетное задание.

Это изображение представляет потоки:

enter image description here

Но когда я вижу журнал на консоли, иногда журнал второй партии смешивается с журналом первой .

У меня такое ощущение, что пакетные процессы асинхронны, и второй пакет вызывается, хотя первый пакет обрабатывается.

Я не прав? Стоит ли обращать внимание на порядок логов? Если бы я хотел, чтобы это было полностью синхронно, что было бы лучшим способом?

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Мул Пакет асинхронный, это как огонь и забыть. Если вы хотите вызвать вторую партию после того, как первая партия завершена, тогда вызовите вторую партию на этапе «Готово» первой партии, как показано на рисунке ниже.

enter image description here

Если вы хотите выполнить какую-либо функцию перед вызовом второго пакета, вам необходимо использовать область запроса-ответа, чтобы сделать пакетный компонент синхронным.

enter image description here

1 голос
/ 24 мая 2019

Да, пакетное задание асинхронное. Как только пакет execute запущен, поток переходит к следующему обработчику событий.

Если пакетное задание 2 нужно запускать только после пакетного задания 1, то вы можете использовать фазу on-complete первого пакетного задания, чтобы инициировать какое-либо событие, чтобы указать, что первое завершено, что можно использовать для запуска второго пакета работа.

В качестве альтернативы, если пакетные задания тесно связаны между собой, вы можете объединить их в одно, используя несколько пакетов step s

...