Как управлять повторным использованием диалога и продолжительностью разговора? - PullRequest
0 голосов
/ 03 октября 2018

Я использую примеры блогов @ RemusRusanu для Service Broker, чтобы решить некоторые ETL-подобные проблемы.Работает хорошо.Я понял, что не задание свойства LIFETIME в диалоговом диалоге может привести к неожиданному росту БД, пока не будет достигнуто время ожидания Int32.Max секунд, что освобождает объекты БД, связанные с устаревшими диалогами.Установка низкого значения для свойства LIFETIME поможет освободить ресурсы.

Но как мне справиться с техникой повторного использования диалога RR с шаблоном таблицы (например, сохранением GUID диалога для каждого диалога БД) и, в то же время, установитькакое-то пожизненное свойство?Насколько я не знаю, когда истечет время ожидания, ожидаемым недостатком будет слепое повторное использование завершенного разговора в следующий раз, когда я буду запрашивать таблицу, чтобы получить идентификатор диалога для той же БД, что, очевидно, вызовет некоторое исключение.

Можно ли (легко) получить уведомление о событии тайм-аута LIFETIME, чтобы я мог самостоятельно удалить запись диалога из таблицы?

Спасибо, что поделились.

Жан-Ив

1 Ответ

0 голосов
/ 04 октября 2018

Я использую ту же технику, и меня не волнует примерно 70 лет (!!), которые должны были бы пройти, прежде чем истечет максимальное значение для (подписанного) целого числа.Я наверняка умру к тому времени, когда это произойдет, и, вероятно, база данных тоже будет.

Тем не менее, я недавно задумался об установке времен жизни.Как бы я это сделал, настроил агентское задание, чтобы определить, что некоторые разговоры истекают, и скоро новые, чтобы заменить их.Если эти новые маркеры проверены на работоспособность, вызовите END CONVERSATION на старых.

...