Je tiens à mettre en œuvre une procédure stockée (dans une infrastructure de courtier de service) qui appelle un service Web. J'ai regardé quelques exemples du livre d'Aschenbrenner sur le courtier de service. Cependant, je ne trouve aucun avec un appel de service Web. Quelqu'un pourrait-il aider? P>
merci SQLBS P>
3 Réponses :
Voir le premier exemple au chapitre 10. Si votre question concerne les détails de la mise en œuvre des appels de service Web, veuillez étiqueter la question avec des balises de service Web appropriées plutôt que du courtier de service. P>
Bonjour, merci pour vos notes. J'ai regardé l'exemple. Il s'agit de l'appel d'une servie Web au sein de l'infrastructure de courtiers de service. Ce dont j'ai vraiment besoin, c'est quelque chose comme ceci: rangée insérée / mise à jour à la table -> Insertion / mise à jour des incendies de déclenchement -> Trigger écrit Message de la file d'attente de courtier-service -> STOCKE PROC activé par SQL Server -> Service Web de PROP stocké -> Conversation se termine . Une idée? SQLBS
Je ferais un service Windows qui se trouve à la fin du courtier de service (et appelez le service Web comme dans n'importe quelle application Win). En quelque sorte, ne pensez pas que l'appelant service Web de DB est une bonne idée. P>
peut trouver aout activateur externe ici . Et téléchargez l'interface de courtier de service / activateur externe ici . L'interface de courtier de service est juste géniale! Facile à utiliser. P>
Nous avons eu une tâche similaire chez mon entreprise et avons trouvé une solution optimale consistait à utiliser des déclencheurs asynchrones avec un activateur externe qui appelle desservices de messages .NET et de filtrage après succès. Ce que MASE est que vous créez un déclencheur de base de données régulier qui envoie un message à la file d'attente de courtiers de service pour le traitement asynchrone. Aka déclencheur asynchrone. Voici un échantillon du chapitre 10 du livre de 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);