BizTalk: очередь запросов на порт отправки
У меня есть порт отправки, идущий на веб-сервис. Самое большее, я хочу, чтобы за один раз отправлялось только 10 запросов. Можно ли это сделать в biztalk? Надеюсь, через конфигурацию?
3 ответа
Есть пост Ричарда Серотера, который имеет дело с этим точным сценарием.
Вам нужно установить максимальное количество соединений в файле btsntsvc.exe.config:
<add address = "*" maxconnection = "2" />
Где вы фильтруете по IP-адресу и устанавливаете для max connections то, что вам нужно.
В документации MSDN по HTTP-адаптеру говорится, что адрес может быть либо URL-адресом, либо IP-адресом. Пример фрагмента конфигурации приведен ниже:
<configuration>
<system.net>
<connectionManagement>
<add address = "http://www.contoso.com" maxconnection = "5" />
<add address = "http://www.northwind.com" maxconnection = "2" />
</connectionManagement>
</system.net>
</configuration>
Затем вам нужно включить заказанную доставку в порту отправки, чтобы гарантировать, что сторона BizTalk не будет превышать время ожидания для ограниченного числа соединений.
Хотя это выглядит так, как будто это именно то, что вам нужно, я бы также рассмотрел какой-то шаблон оркестрации для управления этим, с контроллерной оркестровкой, которая ограничивает количество дочерних оркестровок "Отправить в службу", которые могут выполняться одновременно. Для меня, по крайней мере, было бы немного легче следовать без внешней документации.
Если вы используете внутренний сайт, не нужно добавлять следующий синтаксис
Например, ваша ссылка на веб-сервис http://example.com/ms/sample.aspx add address = " http://example.com/" maxconnection = "5"
Несколько вещей, чтобы рассмотреть ответ Дэвида Холла
Если вы установите заказанную доставку для своего порта отправки, это сильно повлияет на пропускную способность, особенно если у вас есть много оркестров, делающих несколько вызовов на один и тот же порт, так как эти оркестровки будут дегидратировать и ожидают, пока их сообщение получит сигнал о включении порта. Это также вызывает проблему, если у вас есть некоторые экземпляры, которые являются ответом на запрос от веб-службы, а другие - с высокой нагрузкой и не срочно.
Чтобы избежать этого, мы использовали шаблон регулирования BizTalk Orchestration, который изначально был также от Ричарда Серотера, где мы позволяем только определенному количеству оркестровок большого объема одновременно ускоряться и оставляем некоторые соединения свободными для вызовов запроса / ответа с низкой задержкой,
Кроме того, параметр maxConnections указывается для каждого экземпляра хоста, поэтому вам также следует избегать наличия нескольких портов отправки на одном и том же сервере, находящихся на разных экземплярах хоста, или если у вас есть несколько серверов BizTalk в группе, и вы не можете этого избежать, вы должны установить maxConnections. = TargetServermaxConnections / Host Instances