Зачем мне нужны две очереди SQL Server Service Broker для простой задачи?


Все примеры, которые я нахожу в интернете для использования очередей SQL Server Service Broker, по-видимому, имеют две очереди. Я не понимаю, почему, и каждый пример, кажется, предполагает, что это настолько очевидно, что нет необходимости объяснять.

Несколько объектов будут записаны в мою очередь, а хранимая процедура прочитает из нее и вставит в базу данных. Зачем мне две очереди?

Например: http://www.techrepublic.com/article/use-service-broker-internal-activation-in-sql-server-2005/6156264#

2 3

2 ответа:

Технически вы можете использовать одну очередь, используя технологию SSB в вашем приложении. В этом случае эта очередь имеет беспорядок от сообщений запроса от инициатора и ответных сообщений от цели. Хранимая процедура должна реализовать механизм, позволяющий отличать одно от другого, сортировать их, решать, какой ответ на какой запрос и так далее. Также имейте в виду, что получать сообщения из этой очереди в точном порядке и вы не можете пропустить некоторые из них и оставить в очереди для дальнейшего обработка.

Может быть, лучше в вашем случае следовать ответу Ремуса Русану и реализовать свою очередь с помощью таблицы базы данных?

Идея SSB проста-инициатор помещает сообщение запроса в очередь цели, ожидая ответное сообщение от цели в своей собственной очереди. Это ваше дело? Если нет, может быть, вам вообще не нужен SSB?

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

Примеры, показывающие случай, когда одной очереди, по-видимому, достаточно неправильно используете Service Broker. Эти примеры должны лучше показать , Как использовать таблицы в качестве очередей.