Mule — синхронизация пакетных заданий или асинхронность

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

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

Mule — синхронизация пакетных заданий или асинхронность

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

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

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

Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
1
0
1 274
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

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

Ответ принят как подходящий

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

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

Другие вопросы по теме