繁体   English   中英

在Service Broker上进行多次对话

[英]Multiple conversations on Service Broker

假设我有同一应用程序的两个实例与Service Broker中的后端服务进行交互。 每个实例如何知道只处理它发起的对话,而忽略其余对话? 如果我没记错的话,每个RECEIVE都会从队列中删除该消息。

这是一个例子:

-- Assume the SquareService return the square of the number sent to it

-- Instance 1
BEGIN DIALOG @Conversation1
    FROM SERVICE InitService
    TO SERVICE 'SquareService'
    ON CONTRACT (MyContract)
    WITH ENCRYPTION = OFF;

    SEND ON CONVERSATION @Conversation1 MESSAGE TYPE MyMessageType('1');

-- Instance 2
BEGIN DIALOG @Conversation2
    ...;
    SEND ON CONVERSATION @Conversation2 MESSAGE TYPE MyMessageType('2');

现在我该写谁的RECEIVE语句,以便实例1正确地获得1,而实例2正确地获得4?

您已经在使用会话组。 接收消息时,这不足以满足您的需求吗? ->一起使用GET CONVERSATION GROUP和RECEIVE,您可以在此处了解更多信息: http : //technet.microsoft.com/zh-cn/library/ms166131%28v=sql.105%29.aspx,以及Sql Server服务经纪人对话小组

我假设您有一个与InitService关联的InitQueue 您可以将WHERE子句与RECEIVE一起使用,以侦听同一会话中的消息:

WAITFOR (RECEIVE @response = CONVERT(xml, message_body)
    FROM InitQueue -- InitService setup to use InitQueue?
    WHERE conversation_handle = @Conversation1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM