Параллельный For-Each против Scatter Соберите в муле - PullRequest
3 голосов
/ 16 января 2020

У меня есть несколько записей:

{
 "item_id":1",
 key1: "data1"
}
{
  item_id:2
 key1: "data1"
}
{
  item_id:2
 key1: "data1"
}
{
  item_id:1
 key1: "data1"
}

Я не хочу обрабатывать их последовательно. Может быть более 200 записей. Должен ли я обрабатывать их, используя для каждой параллели или scatter-collect . Какой подход будет лучшим в соответствии с моим требованием. Мне не нужен накопленный ответ, но если при обработке возникает какое-то исключение (нажмите api для каждой записи на основе условия if) любой из записей, обработка других записей должна остаться без изменений.

Ответы [ 2 ]

2 голосов
/ 16 января 2020

Scatter-collect предназначен для случаев, когда у вас есть c количество маршрутов. Представьте себе один маршрут для отправки в систему управления персоналом, а другой - в систему учета.

Для обработки переменного количества записей вы должны использовать параллельные для-каждого.

2 голосов
/ 16 января 2020

Почему бы тогда не использовать модуль VM, разбить коллекцию на отдельные записи и поместить их sh в очередь VM? Затем создайте другой поток с прослушивателем виртуальных машин, который выбирает отдельные записи (параллельно) и обрабатывает их. Вот более подробная информация: https://docs.mulesoft.com/mule-runtime/4.2/reliability-patterns

...