Зачем мне нужны две очереди SQL Server Service Broker для простой задачи?
Все примеры, которые я нахожу в интернете для использования очередей SQL Server Service Broker, по-видимому, имеют две очереди. Я не понимаю, почему, и каждый пример, кажется, предполагает, что это настолько очевидно, что нет необходимости объяснять.
Несколько объектов будут записаны в мою очередь, а хранимая процедура прочитает из нее и вставит в базу данных. Зачем мне две очереди?
2 ответа:
Технически вы можете использовать одну очередь, используя технологию SSB в вашем приложении. В этом случае эта очередь имеет беспорядок от сообщений запроса от инициатора и ответных сообщений от цели. Хранимая процедура должна реализовать механизм, позволяющий отличать одно от другого, сортировать их, решать, какой ответ на какой запрос и так далее. Также имейте в виду, что получать сообщения из этой очереди в точном порядке и вы не можете пропустить некоторые из них и оставить в очереди для дальнейшего обработка.
Может быть, лучше в вашем случае следовать ответу Ремуса Русану и реализовать свою очередь с помощью таблицы базы данных?
Идея SSB проста-инициатор помещает сообщение запроса в очередь цели, ожидая ответное сообщение от цели в своей собственной очереди. Это ваше дело? Если нет, может быть, вам вообще не нужен SSB?
Service Broker в принципе не имеет ничего общего с очередями. Компонент Service Broker предназначен для написания распределенных приложений, а не для организации очередей. Очереди-это просто хранилища сообщений для службы, причем одна служба находится на одной машине, а другая-на другой. Примеры могут показывать обе службы в одной и той же базе данных просто для простоты, но пример по-прежнему связан с взаимодействием в распределенной среде.
Примеры, показывающие случай, когда одной очереди, по-видимому, достаточно неправильно используете Service Broker. Эти примеры должны лучше показать , Как использовать таблицы в качестве очередей.