Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL Server Service Broker提取消息_Sql_.net_Sql Server_Nservicebus - Fatal编程技术网

从SQL Server Service Broker提取消息

从SQL Server Service Broker提取消息,sql,.net,sql-server,nservicebus,Sql,.net,Sql Server,Nservicebus,请问如何从SQLServerServiceBroker提取消息?我在用公共汽车 我的SQL Server Service Broker队列中有消息,但我不确定如何处理它们 非常感谢,我不确定,但我认为这些链接将帮助您: 从ServiceBroker队列提取消息的唯一方法是语句。Service Broker具有可触发运行RECEIVE语句的代码的功能。NServiceBus不支持将SSSB作为传输。NServiceBus SQL Server传输使用表作为轮询队列 我基于IAdvancedSat

请问如何从SQLServerServiceBroker提取消息?我在用公共汽车

我的SQL Server Service Broker队列中有消息,但我不确定如何处理它们


非常感谢,

我不确定,但我认为这些链接将帮助您:


从ServiceBroker队列提取消息的唯一方法是语句。Service Broker具有可触发运行RECEIVE语句的代码的功能。

NServiceBus不支持将SSSB作为传输。NServiceBus SQL Server传输使用表作为轮询队列

我基于IAdvancedSatellite创建了自己的SSSB处理。然而,SSSB似乎不是很可靠,我们停止使用它。原因是:

  • SSSB在数据库还原时关闭,无论备份数据库时是否关闭
  • SSSB以静默方式失败,因此当它最终被禁用时,已发布的消息将被吞没并消失在/dev/null中,而不会出现任何错误
  • 如果高级卫星停机,NServiceBus将继续运行,但不会处理您的SSSB消息。你必须自己小心找回卫星。但是,当使用传输时,当它停止时,整个服务通过关键故障处理得到结果
  • 在某些SQL Server上,SSSB收到一些已发布到Windows事件日志的拒绝访问错误。如果未对应用程序事件日志设置限制,则会填满整个磁盘并导致服务器崩溃
  • 因此,如果您必须使用SQL Server,我建议您使用strandard SQL Server传输。但是,您应该记住,它每秒都在轮询您的数据库。

    此代码将帮助您。 声明@messageType SYSNAME 声明@conversationHandle唯一标识符 声明@Handle唯一标识符 声明@MessageBody-Nvarchar(最大值)


    请使用此选项获取更多信息。

    我可以举个例子吗?但NServiceBus 4不支持开箱即用吗?我是说从SSB中提取消息?
    DECLARE @conversation_group_id UNIQUEIDENTIFIER ;
    
    WAITFOR(
    GET CONVERSATION GROUP @conversation_group_id
         FROM [UpdateReceiveQueue]
         );
    
    WAITFOR (
          RECEIVE TOP(1)
                @messageType=message_type_name,
                @MessageBody=message_body,
                @conversationHandle=conversation_handle
                FROM [UpdateReceiveQueue] where conversation_group_id = @conversation_group_id
    ),timeout 2000;    
    
    print @MessageBody