SQL Service Broker Имитирует сообщение об отравлении - PullRequest
0 голосов
/ 07 января 2020

Я читаю эксперта из книги предварительного просмотра Google. shorturl.at / htF38

Я хочу в основном смоделировать сообщение о состоянии в очереди компонента Service Broker. Автор представляет этот фрагмент кода для имитации 5 откатов.

Мой вопрос заключается в том, как этот фрагмент кода имитирует 5 откатов, побеждает меня.

По мне В строке 31, если он не видит сообщение в очереди откат происходит один раз, и оператор break прерывает l oop no?

DECLARE @ch UNIQUEIDENTIFIER
DECLARE @messagetypename NVARCHAR(256)
DECLARE @messagebody XML

WHILE (1=1)

BEGIN
    BEGIN TRANSACTION
        WAITFOR (
        RECEIVE TOP (1)
        @ch = conversation_handle,
        @messagetypename = message_type_name,
        @messagebody = CAST(message_body AS XML)
        FROM TargetQueue
        ), 
        TIMEOUT 60000

    IF (@@ROWCOUNT = 0)
    BEGIN
    ROLLBACK TRANSACTION
    BREAK **--Line No 31**
    END
    -- Rolling back the current transaction
PRINT 'Rollback the current transaction - simulating a poison message...'
ROLLBACK TRANSACTION
END
GO

Теперь, когда вы помещаете сообщение в TargetQueue и запускаете сервисную программу, показанную в листинге, вы убедитесь, что компонент Service Broker автоматически деактивирует очередь, и вы получите сообщение об ошибке

...