Как я понимаю, разговор будет проводиться для одного сеанса.Беседы в Sql Server Service Broker
Но что, если у меня есть сеанс, который получает все сообщения для разговора, то, пока они обрабатываются, добавляется еще несколько.
Сессия завершает и отправляет окончательный разговор, но в очереди больше, поэтому инициатор не отправляет окончательный разговор.
Сессия, которая получила первые сообщения, выполнена/ушла/не более. Что сделает Service Broker с другими сообщениями? Устраивают ли они время, а затем переходят на другую сессию?
Ожидает ли окончательный разговор сеанса, который имеет первые сообщения? (Если нет, как он гарантирует правильный порядок?)
Или (в худшем случае) эти сообщения никогда не обрабатывались?
Я устал, чтобы понять это сам, просто наблюдая, но результаты достаточно неоднозначны, что я хотел бы получить ответ от того, кто знает.
Как насчет сценария, когда часть сообщений в цепочке была оттянута, тогда этот сеанс никогда не будет проверять обратно. Останутся ли остальные сообщения в этом сеансе для других процессов для захвата? Как это контролируется (есть ли тайм-аут)? – Vaccano
Это зависит от того, как настроена ваша активация. Если вы используете внутреннюю активацию - если SSSB видит сообщения в очереди, которые не были обработаны (и не являются частью заблокированной группы разговора), тогда она будет разворачивать экземпляр процедуры чтения очереди (с учетом ограничения MAX_QUEUE_READER). – Rikalous