Nachricht von SQL Server an externe Anwendung (activemq)

Ich habe eine SQL Server-Datenbank und Activemq in meinem System installiert. Ich habe versucht, den Endpunkt zu erstellen, um den Port abzuhören, an dem sich activemq befindet. Der Hafen ist 61617

CREATE ENDPOINT InstInitiatorEndpoint
STATE = STARTED
AS TCP ( LISTENER_PORT = 61617 )
FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
GO

Dies führt jedoch zu einem Fehler:

Der Service Broker-Endpunkt kann aufgrund des folgenden Fehlers nicht auf Verbindungen warten: '10013 (Es wurde versucht, auf einen Socket zuzugreifen, der durch seine Zugriffsberechtigungen verboten ist.)'.

Da activemq bereits auf demselben Port läuft. Sollte ich einen anderen Port angeben? Wenn ich eine andere Portnummer gebe, wird der Befehl erfolgreich ausgeführt. Aber im GrundeLISTENER_PORT=61617 bedeutet, dass der Endpunkt Port 61617 abhört, nicht wahr? Kann jemand meinen Zweifel klären?

BEARBEITEN: Angenommen, ich habe Endpunkt, Nachrichtentyp, Vertrag, Warteschlange und Service wie folgt erstellt

 CREATE MESSAGE TYPE RequestMessage
   VALIDATION = WELL_FORMED_XML;
 CREATE MESSAGE TYPE ReplyMessage
   VALIDATION = WELL_FORMED_XML;
 GO



 CREATE CONTRACT SimpleContract
  (RequestMessage
     SENT BY INITIATOR,
   ReplyMessage
     SENT BY TARGET
  );
 GO


  CREATE QUEUE InstInitiatorQueue;

 CREATE SERVICE InitiatorService
   AUTHORIZATION InitiatorUser
   ON QUEUE InstInitiatorQueue;
 GO



DECLARE @Cmd NVARCHAR(4000);

SET @Cmd = N'USE InstInitiatorDB;
CREATE ROUTE InstTargetRoute
WITH SERVICE_NAME =
   N''TargetService'',
 ADDRESS = N''TCP://localhost:61617'';';

EXEC (@Cmd);

DECLARE @Cmd NVARCHAR(4000);
SET @Cmd = N'USE msdb
CREATE ROUTE InstInitiatorRoute
WITH SERVICE_NAME =
   N''InitiatorService'',
 ADDRESS = N''LOCAL''';

 EXEC (@Cmd);
GO

CREATE REMOTE SERVICE BINDING TargetBinding
  TO SERVICE
     N'TargetService'
  WITH USER = TargetUser;

GO

Jetzt erstelle ich als Handle für das Gespräch

 DECLARE @InitDlgHandle UNIQUEIDENTIFIER;
 DECLARE @RequestMsg NVARCHAR(100);

 BEGIN TRANSACTION;

 BEGIN DIALOG @InitDlgHandle
 FROM SERVICE InitiatorService
 TO SERVICE N'TargetService'
 ON CONTRACT SimpleContract
 WITH
     ENCRYPTION = ON;

 SELECT @RequestMsg = N'<RequestMsg>Message for Target service434.</RequestMsg>';

 SEND ON CONVERSATION @InitDlgHandle
 MESSAGE TYPE RequestMessage
 (@RequestMsg);

SELECT @RequestMsg AS SentRequestMsg;

COMMIT TRANSACTION;
GO

Hier Wenn Sie sehen, habe ich versucht, am Beispiel einer Konversation zwischen zwei SQL Server-Instanzen eine Konversation zwischen SQL Server und activemq herzustellen. Ich muss Server-zu-Server-Kommunikation angeben, dafür muss ich Dienst (Initiator) zu Dienst (Ziel) angeben. Ich kenne den Initiator-Server, bei dem es sich um einen SQL-Server handelt, aber ich kenne den Dienst von activemq nicht. Welchen Dienst von activemq sollte ich für die datenbankseitige Konversation festlegen?

Antworten auf die Frage(0)

Ihre Antwort auf die Frage