У меня есть порт отправки, идущий на веб-службу. В лучшем случае я хочу, чтобы веб-служба отправляла только 10 запросов за раз. Возможно ли это сделать в biztalk? Надеюсь, через настройку?
BizTalk: ставить запросы в очередь на порт отправки
Ответы (3)
Есть сообщение от Ричард Серотер, который имеет дело именно с этим сценарием.
Вам нужно установить максимальное количество подключений в файле btsntsvc.exe.config:
<add address = "*" maxconnection = "2" />
Где вы фильтруете по IP-адресу и устанавливаете maxconnections на то, что вам нужно.
Из документации 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 Throttling Pattern, также предоставленный Ричардом Серотером изначально мы позволяли одновременно запускать только определенное количество крупномасштабных Оркестраций и оставляли некоторые соединения свободными для вызовов запроса/ответа с малой задержкой.
Кроме того, параметр maxConnections задается для каждого экземпляра хоста, поэтому вам также нужно избегать наличия нескольких портов отправки на один и тот же сервер, находящихся на разных экземплярах хоста, или если у вас есть несколько серверов BizTalk в группе и вы не можете этого избежать, вы должны установить maxConnections = TargetServermaxConnections / Экземпляры хоста