我想實現調用Web服務的存儲過程(在服務代理基礎設施內)。我從Aschenbrenner關於Service Broker的書中找到了一些例子。但是,我沒有找到任何與Web服務調用。誰能幫忙?服務代理和Web服務
感謝 Sqlbs
我想實現調用Web服務的存儲過程(在服務代理基礎設施內)。我從Aschenbrenner關於Service Broker的書中找到了一些例子。但是,我沒有找到任何與Web服務調用。誰能幫忙?服務代理和Web服務
感謝 Sqlbs
參見第10章的第一個例子。如果你的問題是關於實現Web服務調用的詳細信息,請標記與適當的Web服務標籤,而不是服務代理的問題。
我們在我的公司也有類似的任務,想出了一個最佳的解決方案是使用與成功的電話後稱,從.NET和去隊列中的消息web服務的外部激活異步觸發器。這些措施是您創建常規數據庫觸發器,以便將消息發送到服務代理隊列進行異步處理。 AKA異步觸發器。這裏是從Klause的書
-- Create the trigger written with T-SQL
CREATE TRIGGER OnCustomerInserted ON Customers FOR INSERT
AS
DECLARE @conversationHandle UNIQUEIDENTIFIER
DECLARE @fromService SYSNAME
DECLARE @toService SYSNAME
DECLARE @onContract SYSNAME
DECLARE @messageBody XML
SET @fromService = 'CustomerInsertedClient'
SET @toService = 'CustomerInsertedService'
SET @onContract = 'http://ssb.csharp.at/SSB_Book/c10/CustomerInsertContract'
-- Check if there is already an ongoing conversation with the TargetService
SELECT @conversationHandle = ConversationHandle FROM SessionConversations
WHERE SPID = @@SPID
AND FromService = @fromService
AND ToService = @toService
AND OnContract = @onContract
IF @conversationHandle IS NULL
BEGIN
-- We have to begin a new Service Broker conversation with the TargetService
BEGIN DIALOG CONVERSATION @conversationHandle
FROM SERVICE @fromService
TO SERVICE @toService
ON CONTRACT @onContract
WITH ENCRYPTION = OFF;
-- Create the dialog timer for ending the ongoing conversation
BEGIN CONVERSATION TIMER (@conversationHandle) TIMEOUT = 5;
-- Store the ongoing conversation for further use
INSERT INTO SessionConversations (SPID, FromService, ToService, OnContract, ConversationHandle)
VALUES
(
@@SPID,
@fromService,
@toService,
@onContract,
@conversationHandle
)
END
-- Construct the request message
SET @messageBody = (SELECT * FROM INSERTED FOR XML AUTO, ELEMENTS);
-- Send the message to the TargetService
;SEND ON CONVERSATION @conversationHandle
MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c10/CustomerInsertedRequestMessage] (@messageBody);
而不是使用存儲過程,這將通過託管代碼(內部激活)我們決定,最好是卸載的SQL Server之外的處理調用Web服務的第10章的樣本。並發現微軟創建的這個漂亮的小工具 - External Activator ,它將偵聽激活隊列並在隊列中有新消息時啓動應用程序。有關實現,請參閱本書中克勞斯的第4章。
嗨, 謝謝您的筆記。 我看了一下這個例子。它涉及在服務代理基礎結構內調用Web服務。我真正需要的是這樣的: 行插入/更新到表 - >插入/更新觸發器觸發 - >觸發器寫入消息到服務代理隊列 - >存儲過程由SQL Server激活 - >存儲過程調用Web服務 - >談話結束。任何想法? Sqlbs – user409679 2010-08-24 13:57:55