Перейти к содержимому

Диспатчинг

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

Блок dispatching задаётся в определении правила и содержит два поля:

  • list — список алиасов гейтов из настроек мерчанта, между которыми распределяются запросы.
  • method — алгоритм распределения: "queue" или "limit".
{
"list": ["TEST1", "TEST2", "TEST3"],
"method": "queue" | "limit"
}

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

Для сеттинга с тремя гейтами (TEST1, TEST2, TEST3) нужно завести три правила:

Правило 1 — TEST1

{
"header": {
"mid": "81",
"acq_alias": "TEST1"
},
"body": {
"status": {
"sum": {
"1#approved#amount": [0, 2000000]
}
}
},
"routing": null,
"action": null,
"dispatching": {
"list": ["TEST1", "TEST2", "TEST3"],
"method": "queue"
}
}

Правило 2 — TEST2

{
"header": {
"mid": "81",
"acq_alias": "TEST2"
},
"body": {
"status": {
"sum": {
"1#approved#amount": [0, 2000000]
}
}
},
"routing": null,
"action": null,
"dispatching": {
"list": ["TEST1", "TEST2", "TEST3"],
"method": "queue"
}
}

Правило 3 — TEST3

{
"header": {
"mid": "81",
"acq_alias": "TEST3"
},
"body": {
"status": {
"sum": {
"1#approved#amount": [0, 2000000]
}
}
},
"routing": null,
"action": null,
"dispatching": {
"list": ["TEST1", "TEST2", "TEST3"],
"method": "queue"
}
}

Итеративно обходит гейты из list по порядку. Первый запрос направляется на TEST1, второй — на TEST2, третий — на TEST3, четвёртый — снова на TEST1 и так далее по кругу.

Каждый запрос направляется на гейт с наименьшим текущим счётчиком. Как только счётчик гейта достигает лимита, этот гейт исключается из выборки и больше не получает запросы.