Используя SQLDependency / SqlNotificationRequest, чтобы несколько экземпляров одного и того же приложения получали одинаковые уведомления? - PullRequest
1 голос
/ 14 сентября 2010

Я начал смотреть на это недавно с очень ограниченным знанием того, что ASP.NET Cache может каким-то образом использовать SqlCacheDependency для аннулирования кэша, когда таблица (или запросырезультаты) изменить.Это привело меня к классам SQLDependency и SqlNotificationRequest .Хотя подробности о классе SqlNotificationRequest все еще ускользают от меня, мне удалось немного узнать о классе SQLDependency .Для метода Start требовались более широкие разрешения, чем я мог бы дать пользователю, которому мой процесс будет подключаться к базе данных, поэтому я провел небольшое исследование и успешно создал Queue и Компонент Service Broker , который мое тестовое приложение могло использовать для получения уведомлений.

Моя проблема заключается в том, что он не работает, если я запускаю несколько экземпляров своего тестового приложения.Я видел маленькие подсказки тут и там, которые заставляют это звучать так, будто мне нужна одна настройка ( Очередь , Service Broker , т. Д.) Для каждого экземпляра, чтобы это работало, что звучит грязнонеосновательный.

Может ли кто-нибудь подтвердить, что это так, или, может быть, даже предложить какие-то альтернативные решения?

Кроме того, мы запускаем SQL Server 2005.

1 Ответ

1 голос
/ 28 января 2011

В случае SQLDependency / SQLNotificationRequest вам требуется отдельная очередь на процесс. Если ваши разные процессы прослушивают одну и ту же очередь, уведомление о событии не гарантируется. Но это так, как сейчас.

...