Я читаю эксперта из книги предварительного просмотра 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 автоматически деактивирует очередь, и вы получите сообщение об ошибке