BizTalk: ставить запросы в очередь на порт отправки

У меня есть порт отправки, идущий на веб-службу. В лучшем случае я хочу, чтобы веб-служба отправляла только 10 запросов за раз. Возможно ли это сделать в biztalk? Надеюсь, через настройку?


person Jeremy    schedule 15.12.2009    source источник


Ответы (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 не истечет из-за ограниченного числа подключений.

Хотя это похоже на то, что вы хотите, я бы также рассмотрел какой-то шаблон оркестровки для управления этим с оркестровкой контроллера, которая ограничивает количество дочерних оркестраций «Отправить в службу», которые могут выполняться одновременно. По крайней мере, для меня это было бы немного проще без внешней документации.

person David Hall    schedule 15.12.2009
comment
Спасибо. Я также слышал, что вы можете создать новый хост biztalk, связать его с адаптером мыла и использовать этот хост в порту отправки, а также регулировать хост через конфигурацию хоста. Я еще не заставил это работать. - person Jeremy; 16.12.2009
comment
Да - я тоже слышал об этом подходе - мне кажется, что это худший из трех, хотя ... не могу точно объяснить, почему, помимо того, что в нем есть смутная «неправильность». Регулирование хоста — это, конечно, вполне допустимое использование хостов, но для одного веб-сервиса… не совсем так. - person David Hall; 16.12.2009
comment
Итак, для адреса могу ли я указать что-то вроде serverdnsname/webservice.asmx в качестве значения? это действительно? - person Jeremy; 16.12.2009
comment
Я добавил более подробную информацию в ответ об этом - не уверен в точной форме, которую вам нужно будет использовать для указания asmx, можете ли вы пойти так низко или это на уровне имени сервера. - person David Hall; 16.12.2009
comment
Я не уверен, почему вам не нравится опция настроек хоста; никогда не использовал его сам, но не могу сказать, что это кажется мне неправильным. Единственным недостатком, о котором я могу думать, являются накладные расходы на наличие дополнительного хоста только по этой причине, но это сводится к тому, насколько он занят. (не то чтобы я не согласен с маршрутом управления соединением, поэтому просто комментарий) - person Yossi Dahan; 05.01.2010
comment
Привет, Йосси, я полагаю, что моя основная неприязнь к использованию метода настроек хоста сводится к тому, что это большой молот для решения проблемы для одного веб-сервиса. Объем хоста кажется мне больше, чем у адаптера. Так что ничего твердого, просто ощущение... возможно, просто использование хоста подразумевает нечто большее на уровне проектирования решения. - person David Hall; 06.01.2010
comment
Также имейте в виду, что maxconnection находится на уровне Host Instance. Поэтому, если у вас есть несколько портов, и они не все находятся в одном и том же экземпляре хоста, каждый из них получает столько же подключений. - person Dijkgraaf; 06.07.2016

Если вы используете внутренний сайт, вам не нужно добавлять следующий синтаксис

Например, ваша ссылка на веб-сервис: http://example.com/ms/sample.aspx add address = "http://example.com" maxconnection = "5"

person Pankaj Negi    schedule 09.05.2014

Несколько вещей, которые следует учитывать в ответе Дэвида Холла

Если вы установите упорядоченную доставку на свой порт отправки, вы сильно повлияете на пропускную способность, особенно если у вас есть много оркестраций, выполняющих несколько вызовов на один и тот же порт, поскольку эти оркестрации будут обезвожены и ожидают своего сообщения, чтобы получить очередь на порт. Это также вызывает проблему, если у вас есть экземпляры, которые являются ответом на запрос от веб-службы, а другие — с высокой нагрузкой и не являются срочными.

Чтобы избежать этого, мы использовали BizTalk Orchestration Throttling Pattern, также предоставленный Ричардом Серотером изначально мы позволяли одновременно запускать только определенное количество крупномасштабных Оркестраций и оставляли некоторые соединения свободными для вызовов запроса/ответа с малой задержкой.

Кроме того, параметр maxConnections задается для каждого экземпляра хоста, поэтому вам также нужно избегать наличия нескольких портов отправки на один и тот же сервер, находящихся на разных экземплярах хоста, или если у вас есть несколько серверов BizTalk в группе и вы не можете этого избежать, вы должны установить maxConnections = TargetServermaxConnections / Экземпляры хоста

person Dijkgraaf    schedule 06.07.2016