Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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
Tsql ServiceBroker:在'中提供相同的服务;从'&';至';BEGIN DIALOG语句中的子句_Tsql_Service Broker - Fatal编程技术网

Tsql ServiceBroker:在'中提供相同的服务;从'&';至';BEGIN DIALOG语句中的子句

Tsql ServiceBroker:在'中提供相同的服务;从'&';至';BEGIN DIALOG语句中的子句,tsql,service-broker,Tsql,Service Broker,在我的ServiceBroker设计中,我需要进行异步调用,并且需要在后台完成一些工作(仅在SQLServer内部,如更新表) 根据要求,需要考虑以下几点: 这是一种单向数据推送。只需在SB队列中放入一条消息,然后忘记。不需要确认 设计中只涉及一个数据库。不需要多个数据库 消息将使用存储的进程(应用程序将调用此SP)放置到SB队列 通过观察以上几点,似乎需求不适合创建两个不同的SB服务,因为只有一个服务就足够了。我设计的场景只有一个SB服务,在创建对话对话框时,我为“From”和“to”子句指定

在我的ServiceBroker设计中,我需要进行异步调用,并且需要在后台完成一些工作(仅在SQLServer内部,如更新表)

根据要求,需要考虑以下几点:

  • 这是一种单向数据推送。只需在SB队列中放入一条消息,然后忘记。不需要确认
  • 设计中只涉及一个数据库。不需要多个数据库
  • 消息将使用存储的进程(应用程序将调用此SP)放置到SB队列
  • 通过观察以上几点,似乎需求不适合创建两个不同的SB服务,因为只有一个服务就足够了。我设计的场景只有一个SB服务,在创建对话对话框时,我为“From”和“to”子句指定了相同的服务名称。程序将数据推送到SB队列,activator将激活关联的存储过程。。它很好用

    BEGIN DIALOG CONVERSATION @RecordConversationHandle
    FROM SERVICE **UpdateQueueStatus**
    TO SERVICE '**UpdateQueueStatus**'
    WITH ENCRYPTION = OFF;
    

    请帮助我对上述设计提出任何建议?如果您有任何建议/问题或任何需要注意以改进设计以获得更好的性能和可扩展性,我们将不胜感激。

    Service broker是为对话而设计的,而不是为独白对话而设计的。不要设计新的东西(有很多很好的理由说明它们总是对话)


    您可以创建发送服务(Service1),该服务用于发送消息并接收“结束对话”消息和结束对话。另一个(服务2)接收消息并对其进行一些处理,然后在工作完成时结束对话。

    在对话和面向对话的对话中有两个服务的主要原因是能够禁用队列。可以启用启动器的队列,同时,出于某些目的或原因,可以禁用目标的队列。在这种情况下,sedning消息运行时不会出现“disabled queue”错误,消息将在传输队列中等待,直到目标队列再次启用

    这就是为什么契约可能只包含一种消息类型,并且可以在不指定任何契约的情况下创建队列。这是发起者的队列

    有一个警告:。它将标准消息
    https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer
    进入指定对话对话框所属的本地队列

    当同一服务上的对话框可能有用时,一个用例是恢复过程。但是,在这种情况下,应以比普通消息更高的优先级接收特定的消息类型。激活过程首先接收
    恢复
    消息,尝试恢复,如果未成功则回滚,然后接收普通消息并提交两种类型的接收消息,或者如果再次未成功则仅回滚