У меня есть два пакетных задания в разных потоках. Во-первых, выполните Upsert в Salesforce, и когда он завершится, он вызовет второй поток, у которого есть другое пакетное задание.
Это изображение представляет потоки:
Но когда я вижу журнал на консоли, иногда бревно второй партии смешивается с бревном первой.
У меня такое ощущение, что пакетные процессы асинхронны, и второй пакет вызывается, хотя первый пакет обрабатывается.
Я ошибся? Стоит ли обращать внимание на порядок журналов? Если бы я хотел, чтобы это было полностью синхронно, что было бы лучшим способом?


Да, пакетное задание является асинхронным. Как только пакет execute будет запущен, поток перейдет к следующему обработчику событий.
Если пакетное задание 2 должно выполняться только после пакетного задания 1, вы можете использовать фазу on-complete первого пакетного задания, чтобы инициировать какое-либо событие, указывающее на завершение первого, чтобы его можно было использовать для запуска второго пакетного задания.
В качестве альтернативы, если пакетные задания связаны так тесно, вы можете объединить их в одно, используя несколько пакетов step
Mule Batch асинхронный, это как выстрелил и забыл. Если вы хотите вызвать второй пакет после завершения первого пакета, вызовите второй пакет на этапе «По завершении» первого пакета, как показано на рисунке ниже.
Если вы хотите выполнить какую-то функцию перед вызовом второго пакета, вам нужно использовать область запроса-ответа, чтобы сделать пакетный компонент синхронным.