2009-03-23 4 views
2

Я новичок в использовании Service Broker SQL Service 2005. Я создал очереди и успешно прошел беседы и т. Д. Однако я хочу сортировать сообщения «дроссельной заслонки», и я не уверен, как это сделать.Как уменьшить наводнение очереди Service Broker?

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

Одна из моих идей заключалась в том, чтобы отправить сообщение в очередь «ответа», которая указывает, был ли вызван процесс активации очереди запросов. Затем в моем сохраненном proc (вызываемом пользовательским приложением) посмотрите, было ли последнее сообщение вызвано в последнее время. Проблема в том, что я не хочу, чтобы это испортило очередь ответов. Можно ли заглянуть в очередь (не получать), чтобы увидеть, существует ли в нем сообщение?

Или есть более простой способ добиться того, что мне нужно?

ответ

4

Да, вы можете заглянуть в очередь, чтобы увидеть, есть ли в нем сообщение. Просто запросите очередь, используя SELECT вместо RECEIVE, и вы можете посмотреть данные.

Лучшей ставкой было бы отправлять сообщения и иметь хранимая процедура, которая принимает сообщения, решает, должно ли сообщение быть выброшено или нет.

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

Если вы видите проблемы с производительностью, попробуйте отправить более одного сообщения на разговор, поскольку это самый быстрый и простой способ улучшить производительность Service Broker.

1

Не уверен, что вы могли бы сделать это в SB каким-то образом, но можете ли вы просто иметь таблицу с полем timestamp в ней, которое было обновлено при отправке сообщения. Прок будет проверять разницу времени> 30 секунд и отправить.

Смежные вопросы