웹 서비스를 호출하는 저장 프로 시저 (서비스 브로커 인프라 내에서)를 구현하고 싶습니다. Service Broker에 대한 Aschenbrenner의 저서에서 몇 가지 예를 살펴 보았습니다. 그러나 나는 웹 서비스 호출을 발견하지 못한다. 아무도 도와 줄 수 있습니까? 귀하의 질문은 웹 서비스 호출을 구현의 세부 사항에 대해 경우Service Broker 및 웹 서비스
덕분에 Sqlbs
웹 서비스를 호출하는 저장 프로 시저 (서비스 브로커 인프라 내에서)를 구현하고 싶습니다. Service Broker에 대한 Aschenbrenner의 저서에서 몇 가지 예를 살펴 보았습니다. 그러나 나는 웹 서비스 호출을 발견하지 못한다. 아무도 도와 줄 수 있습니까? 귀하의 질문은 웹 서비스 호출을 구현의 세부 사항에 대해 경우Service Broker 및 웹 서비스
덕분에 Sqlbs
장 (10)의 첫 번째 예를 참조, 해당 웹 서비스 태그가 아닌 서비스 브로커와 질문에 태그를하시기 바랍니다.
우리 회사에서도 비슷한 작업을 수행했으며 .NET에서 webservices를 호출하고 호출 성공 후 메시지를 대기열에 두는 외부 활성기와 함께 비동기 트리거를 사용하는 것이 최적의 솔루션이라는 것을 알았습니다. 그 meas는 비동기 처리를 위해 메시지를 서비스 브로커 큐에 보내는 일반 데이터베이스 트리거를 만드는 것입니다. 일명 비동기 트리거. 여기 Klause의 책 대신에 관리 코드 (내부 활성화) 우리가 SQL 서버의 외부에서 그 처리를 오프로드하는 것이 좋습니다 결정을 통해 웹 서비스를 호출 할 저장 프로 시저를 사용
-- 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);
의 10 장에서 샘플입니다. Microsoft에서 만든이 멋진 도구 - 활성화 대기열을 듣고 대기열에 새 메시지가있을 때 응용 프로그램을 시작하는 - External Activator 을 발견했습니다. 구현을 위해서는 클라우스의 제 4 장을 참고하십시오.
안녕하세요, 메모 해 주셔서 감사합니다. 예제를 살펴 보았습니다. 이는 서비스 브로커 인프라 내에서 웹 서비스 직원의 소집에 관한 것입니다. 내가 정말로 필요한 것은 다음과 같습니다 : 테이블에 삽입/업데이트 된 트리거 - 트리거는 서비스 브로커 대기열에 메시지를 씁니다 -> SQL Server에 의해 활성화 된 저장된 proc -> 저장된 proc 호출 웹 서비스 -> 대화가 끝납니다. 어떤 아이디어? Sqlbs – user409679