Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Добрый день!

Есть такая задача:есть два сервера: Server1 и Server2. У Server1 есть очередь Q1,У Server2 есть очередь Q2.
Server1 открывает диалог и отправляет сообщение в очередь Q2. Server2 отправляет подтверждения на Server1. Диалог закрывается.
Этот этап работает.
Теперь вопрос: может ли Server2 также открывать диалоги и отправлять сообщения в Q1 Server1?
при этом должны быть только эти две очереди Q1 и Q2
19 мар 13, 17:15    [14068777]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Гость333
Member

Откуда:
Сообщений: 3683
beaver06,

Может. А у вас что-то не получается?
19 мар 13, 17:33    [14068896]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Гость333,

С Server2 не отправляется. При этом profiler на Server2 показывает, что беседа начата (но не закрывается), а profiler на Server1 вообще не фиксирует событий service broker. Поэтому я и хочу понять - может так нельзя.
19 мар 13, 17:38    [14068920]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
При этом на Server1 есть Service1, привязанный к Q1, а на Server2 - Service1, привязанный к Q2.
Через Service1 открывается диалог в одну сторону, а через Service2 открывается диалог в другу сторону
19 мар 13, 17:41    [14068935]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Гость333
Member

Откуда:
Сообщений: 3683
beaver06,

А это смотрели? Troubleshooting Routing and Message Delivery
Сообщение на Server2 болтается в sys.transmission_queue? Если да, то с каким статусом?
19 мар 13, 17:50    [14068985]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Гость333,

в том то и дело, что статус пустой. Если б там были ошибки, то можно понять. А с пустым статусом...
19 мар 13, 17:53    [14069000]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
beaver06,

Покажите контракты на обоих концах, и какой из них для чего используется. В смысле, как вы диалоги открываете в обоих случаях, и в рабочем, и в нерабочем.
20 мар 13, 03:22    [14070331]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
beaver06
Гость333,

в том то и дело, что статус пустой. Если б там были ошибки, то можно понять. А с пустым статусом...


Если статус пустой, надо логи смотреть. Скорее всего сервере не может открыть соединение. Шифрование включить и проблемы с транспортным протоколом.
20 мар 13, 03:25    [14070333]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
Ennor Tiegael,

Вадим, привет! Как Аделаида?
20 мар 13, 03:28    [14070337]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Верблюд,

Спасибо, фантастическое место.

А мы точно знако... а-а-а, ишь ты, виртуалишь значит
20 мар 13, 03:33    [14070340]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Верблюд,

в логах также ничего нет
20 мар 13, 09:03    [14070586]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Ennor Tiegael,

контракт используется один и тот же.

Server1:
create master key encryption by password = 'Qwerty123'
GO
USE Client
CREATE MESSAGE TYPE [MessageC] VALIDATION = WELL_FORMED_XML
GO
CREATE CONTRACT [ContractC] ([MessageC] SENT BY ANY)
GO
CREATE QUEUE [dbo].[QueueC] WITH STATUS = ON , RETENTION = OFF , POISON_MESSAGE_HANDLING (STATUS = ON) ON [PRIMARY]
GO
CREATE SERVICE [ServiceC_Server1] ON QUEUE [dbo].[QueueC] ([ContractC])
CREATE ROUTE [Server2] WITH SERVICE_NAME = N'ServiceC_Server2' ,
BROKER_INSTANCE = 'B224564B-29B4-452E-911E-6F01258751C4', ADDRESS = N'TCP://Server2:4032'
GO

Server2:
create master key encryption by password = 'Qwerty123'
GO
USE Client
CREATE MESSAGE TYPE [MessageC] VALIDATION = WELL_FORMED_XML
GO
CREATE CONTRACT [ContractC] ([MessageC] SENT BY ANY)
GO
CREATE QUEUE [dbo].[QueueC] WITH STATUS = ON , RETENTION = OFF , POISON_MESSAGE_HANDLING (STATUS = ON) ON [PRIMARY]
GO
CREATE SERVICE [ServiceC_Server2] ON QUEUE [dbo].[QueueC] ([ContractC])
CREATE ROUTE [Server1] WITH SERVICE_NAME = N'ServiceC_Server1' , ADDRESS = N'TCP://Server1:4032'
GO

Открытие диалога с Server1 (работает)
BEGIN DIALOG @convHandler
FROM SERVICE [ServiceC_Server1]
TO SERVICE 'ServiceC_Server2'
ON CONTRACT [ContractC]
WITH ENCRYPTION = OFF;

SEND ON CONVERSATION @convHandler
MESSAGE TYPE [MessageC](@msg)

-- завершение диалога
--
END CONVERSATION @convHandler

Открытие диалога с Server2 (не работает)
BEGIN DIALOG @convHandler
FROM SERVICE [ServiceC_Server2]
TO SERVICE 'ServiceC_Server1'
ON CONTRACT [ContractC]
WITH ENCRYPTION = OFF;

SEND ON CONVERSATION @convHandler
MESSAGE TYPE [MessageC](@msg)

-- завершение диалога
--
END CONVERSATION @convHandler
20 мар 13, 09:17    [14070633]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
beaver06
CREATE ROUTE [Server1] WITH SERVICE_NAME = N'ServiceC_Server1' , ADDRESS = N'TCP://Server1:4032'
GO
А где у вас в маршруте на втором сервере брокер инстанс?
20 мар 13, 09:24    [14070654]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Ennor Tiegael,
а он же не обязателен. Насколько я понял id нужен, если на нескольких базах включен ServiceBroker.

Или я не прав?
20 мар 13, 09:27    [14070663]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Ennor Tiegael,
даже если я не прав, в profiler все равно должно что-то отобразиться про Service Broker.
20 мар 13, 09:28    [14070678]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
beaver06,

Правы, не обязателен.

Проверьте, не блокируется ли у вас трафик по этим портам. У меня был случай, когда на одном конце был закрыт порт для входящих соединений. Все работало, только вот диалоги не закрывались.
20 мар 13, 09:40    [14070730]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Ennor Tiegael,

telnet по этим портам проходит
20 мар 13, 11:44    [14071295]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Ennor Tiegael,
Я хочу понять - моя реализация в принципе может работать или нет. Если может, то я докопаюсь...
20 мар 13, 11:49    [14071326]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
beaver06
Ennor Tiegael,
Я хочу понять - моя реализация в принципе может работать или нет. Если может, то я докопаюсь...


END CONVERSATION должен выполняться на отвечающей стороне в одной транзакции с приемом данных. Если потеря данных критична для приложения. А так да - все должно работать.

Вдруг из небытия выплыло:

http://queue-net-ru.blogspot.ru/

20 мар 13, 12:57    [14071753]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Интересно, а можно отключить Service Broker на базе msdb?
20 мар 13, 13:03    [14071792]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Гость333
Member

Откуда:
Сообщений: 3683
beaver06
Интересно, а можно отключить Service Broker на базе msdb?

Можно. Стопите агента, отключаете брокер, стартуете агента.
20 мар 13, 13:07    [14071813]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Гость333,
я имею ввиду можно ли отключить Service Broker на msdb и при этом Service broker на пользовательской базе работал
20 мар 13, 13:14    [14071853]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
beaver06
Ennor Tiegael,
Я хочу понять - моя реализация в принципе может работать или нет. Если может, то я докопаюсь...
Должен, конечно. Ничего запредельного тут нет.

А проверьте свойства обеих ваших баз, trustworthy везде установлено?
20 мар 13, 13:18    [14071862]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
Гость333
Member

Откуда:
Сообщений: 3683
beaver06
Гость333,
я имею ввиду можно ли отключить Service Broker на msdb и при этом Service broker на пользовательской базе работал

А как msdb влияет на работу брокера в пользовательской базе?
У вас просто отвалится функционал, завязанный на доставку сообщений в msdb: Query Notifications, Event Notifications, Database Mail. А брокер в пользовательской БД будет работать.
20 мар 13, 13:27    [14071913]     Ответить | Цитировать Сообщить модератору
 Re: Service broker одна очередь  [new]
beaver06
Member

Откуда:
Сообщений: 681
Гость333,

спасибо. Это я и хотел узнать.
20 мар 13, 13:39    [14071974]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить