簡體   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