Service Broker一次只接收一条消息

sca*_*cci 3 t-sql service-broker sql-server-2008

即使我指定了接收顶部(25)等,我一次只能获得一条消息.不确定我在我的sproc中做错了什么?可能是微不足道的,但我没有看到问题.

存储过程:

CREATE PROCEDURE dbo.SPP_DEQUEUE_MESSAGE

AS

BEGIN

DECLARE @receiveTable TABLE(
message_type        sysname,
message_body        xml,
message_dialog      uniqueidentifier);

    BEGIN TRANSACTION;

    WAITFOR
        ( RECEIVE TOP(25)
            message_type_name,
            message_body,
            conversation_handle  
          FROM TargetQueue1DB
            INTO @receiveTable
        ), TIMEOUT 3000;

    SELECT 
        *
    From @receiveTable;     

    Delete from @receiveTable;

COMMIT TRANSACTION;

END --End Sproc
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

谢谢,

Paw*_*iak 5

我的猜测是每条消息属于不同的对话(因此默认情况下属于不同的对话组).如果是这种情况,那么这是预期的行为.

联机丛书 - 接收(Transact-SQL):

RECEIVE语句返回的所有消息都属于同一个会话组

如果您希望一次接收多封邮件,请在单个会话中发送多封邮件,或将多个会话分组到接收端的单个会话组中.