Сообщение от SQL Server во внешнее приложение (activemq)
В моей системе установлена база данных SQL Server и Activemq. Я попытался создать конечную точку для прослушивания порта, где находится activemq. Порт 61617
CREATE ENDPOINT InstInitiatorEndpoint
STATE = STARTED
AS TCP ( LISTENER_PORT = 61617 )
FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
GO
Но это приводит к ошибке:
Конечная точка компонента Service Broker не может прослушивать соединения из-за следующей ошибки: «10013 (была предпринята попытка получить доступ к сокету способом, запрещенным его правами доступа.)».
Поскольку ActiveMQ уже работает на том же порту. Должен ли я дать другой порт? Если я даю другой номер порта, то он выполняется успешно. Но в основномLISTENER_PORT=61617
означает, что конечная точка прослушивает порт 61617, не так ли? Кто-нибудь может прояснить мои сомнения?
РЕДАКТИРОВАТЬ: Предположим, я создал конечную точку, тип сообщения, контракт, очередь и службу следующим образом.
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
Теперь я создаю ручку для разговора как
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
Здесь Если вы видите, я попробовал пример диалога между двумя экземплярами SQL-сервера, чтобы установить диалог между SQL-сервером и activemq. Мне нужно указать связь между серверами, для этого мне нужно указать службу (Инициатор) для службы (цель). Я знаю сервер инициатора, который является сервером sql, но я не знаю службу activemq. Какую службу activemq я должен указать при обработке дескриптора на стороне базы данных?