powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Service Broker для репликации
25 сообщений из 179, страница 6 из 8
Service Broker для репликации
    #39949788
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все разобрался
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39949794
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч
Вопрос такой..
Например на 1 сервер у меня порт 4022..Этот порт мониторится ,что 1 точка = 1 порт?
Проще говоря на другую БД другой порт?


нет. жто точка входа на сервер. она одна на весь экземпляр.
все сообщения приходят на прослушиватель порта, и потом раскидываются по маршрутам из базы msdb

вот сейчас трасса правильная но она только с инициатора, посмотрите такую же на таргете
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39949911
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Максим Александровитч
Вопрос такой..
Например на 1 сервер у меня порт 4022..Этот порт мониторится ,что 1 точка = 1 порт?
Проще говоря на другую БД другой порт?


нет. жто точка входа на сервер. она одна на весь экземпляр.
все сообщения приходят на прослушиватель порта, и потом раскидываются по маршрутам из базы msdb

вот сейчас трасса правильная но она только с инициатора, посмотрите такую же на таргете


Так..вопрос такой.
У меня отключается очередь..почему может такое быть?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39949914
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

из-за откатов транзакций по ошибке.
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39949923
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч
felix_ff
пропущено...


нет. жто точка входа на сервер. она одна на весь экземпляр.
все сообщения приходят на прослушиватель порта, и потом раскидываются по маршрутам из базы msdb

вот сейчас трасса правильная но она только с инициатора, посмотрите такую же на таргете


Так..вопрос такой.
У меня отключается очередь..почему может такое быть?


это значит что у вас включенна активация на очереди с опцией poison_message_handling (по умолчанию включена)

в случае если в процедуре активации будет производится откат транзакции то по достижении 5 откатов подряд очередь автоматически отключится.

анализируйте свою процедуру активации на наличие ошибок или явных rollback transaction
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950312
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Максим Александровитч
пропущено...


Так..вопрос такой.
У меня отключается очередь..почему может такое быть?


это значит что у вас включенна активация на очереди с опцией poison_message_handling (по умолчанию включена)

в случае если в процедуре активации будет производится откат транзакции то по достижении 5 откатов подряд очередь автоматически отключится.

анализируйте свою процедуру активации на наличие ошибок или явных rollback transaction


Да,нашел.
Еще вопрос.
Полазил по сайтам не нашел инфо такого рода.
Нужно ли держать диалог открытым в условиях постоянного обмена сообщениями или же закрывать и открывать каждый раз при отправке?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950400
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

зависит от вашей бизнес модели.
если вас устраивает что вы в рамках одного диалога обмениваетесь сообщениями то пожалуйста.

учтите только что в рамках одного диалога поддержка многозадачности активации на диалоге исключается.
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950408
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Максим Александровитч,

зависит от вашей бизнес модели.
если вас устраивает что вы в рамках одного диалога обмениваетесь сообщениями то пожалуйста.

учтите только что в рамках одного диалога поддержка многозадачности активации на диалоге исключается.

Можно подробнее про многозадачность?
насколько трудоемкий процесс для БД открытия и закрытия диалога?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950443
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

Очередь - внутренее это таблица. открытие диалога почти тоже самое что добавление строки в таблицу (с оговорками конечно).

Для самих диалогов используются внутрение системные таблицы sysdercv sysdesend. ими управляет ядро и вам особого дела до них нет. можно сказать что управление выполнено эффективно: в один момент может быть открыто несколько милионов диалогов и это не будет большой проблемой.
Другое дело что если вы не будете своевременно диалоги закрывать они так и будут копиться в таблице, а чем большими данными оперирует сиквел как известно, тем медленней процесс.

Под многозадачностью я понимал процесс активации в котором экземпляр процедуры активации может запускаться на очереди в нескольких сессиях подряд.
у вас же есть возможность указать в инструкции alter queue опцию MAX_QUEUE_READRES. это собственно и есть контроль количества возможных параллельных сессий которые будут запускать процедуру активации.
по умолчаю каждые 5 секунд внутренний монитор на очереди проверяет справляется ли процедура активации с разгребанием сообщений в очереди, если сообщения продолжают поступать он подключает еще один экземпляр хранимки в обработку и так далее до достижения лимита max_queue_readers или пока не наступит момент когда экземпляров процедурок будет хватать.

но инструкция receive накладывает блокировку на ключ conversation_hanlde поэтому если у вас к примеру 1000000 сообщений в одном диалоге и вы считаете что сейчас "брокер разгонится и как начнет в 10 сессий вычитывать сообщения из этого диалога" то сильно ошибаетесь, экземпляр процедуры активации действительно запустится в одной сессии и начнет обрабатывать данные этого конкретного диалога, только делать он это будет один, больше экземпляров хранимок не запустится.

поэтому если нужно быстро разгрести огромный поток сообщений то лучше организовать отправку в виде пачек к примеру на один диалог 10 сообщений или просто отправить миллион сообщений в миллион диалогов. но здесь четкой рекомендации нет, надо тестировать на каждой отдельно взятой системе.

опять таки же все еще зависит от того как написать процедуру активации.
есть еще внешняя активация, которая тоже крайне полезна, описывать ее не буду легче нагуглить Service Broker External Activation
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950478
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Максим Александровитч,

Очередь - внутренее это таблица. открытие диалога почти тоже самое что добавление строки в таблицу (с оговорками конечно).

Для самих диалогов используются внутрение системные таблицы sysdercv sysdesend. ими управляет ядро и вам особого дела до них нет. можно сказать что управление выполнено эффективно: в один момент может быть открыто несколько милионов диалогов и это не будет большой проблемой.
Другое дело что если вы не будете своевременно диалоги закрывать они так и будут копиться в таблице, а чем большими данными оперирует сиквел как известно, тем медленней процесс.

Под многозадачностью я понимал процесс активации в котором экземпляр процедуры активации может запускаться на очереди в нескольких сессиях подряд.
у вас же есть возможность указать в инструкции alter queue опцию MAX_QUEUE_READRES. это собственно и есть контроль количества возможных параллельных сессий которые будут запускать процедуру активации.
по умолчаю каждые 5 секунд внутренний монитор на очереди проверяет справляется ли процедура активации с разгребанием сообщений в очереди, если сообщения продолжают поступать он подключает еще один экземпляр хранимки в обработку и так далее до достижения лимита max_queue_readers или пока не наступит момент когда экземпляров процедурок будет хватать.

но инструкция receive накладывает блокировку на ключ conversation_hanlde поэтому если у вас к примеру 1000000 сообщений в одном диалоге и вы считаете что сейчас "брокер разгонится и как начнет в 10 сессий вычитывать сообщения из этого диалога" то сильно ошибаетесь, экземпляр процедуры активации действительно запустится в одной сессии и начнет обрабатывать данные этого конкретного диалога, только делать он это будет один, больше экземпляров хранимок не запустится.

поэтому если нужно быстро разгрести огромный поток сообщений то лучше организовать отправку в виде пачек к примеру на один диалог 10 сообщений или просто отправить миллион сообщений в миллион диалогов. но здесь четкой рекомендации нет, надо тестировать на каждой отдельно взятой системе.

опять таки же все еще зависит от того как написать процедуру активации.
есть еще внешняя активация, которая тоже крайне полезна, описывать ее не буду легче нагуглить Service Broker External Activation


Черт..огонь.
Был бы Оскар для форумчан дал бы вам ,без сомнения.
Про внешний активатор и не слышал даже..
Скажите,на свой практике вы его использовали?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950495
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черт..огонь.
Был бы Оскар для форумчан дал бы вам ,без сомнения.
Про внешний активатор и не слышал даже..
Скажите,на свой практике вы его использовали?

использовал.

Проблема внутренней активации в том что как я уже написал внутренний таймер мониторинга срабатывает каждые 5 секунд.
Это хард-код поведение которое никак не изменить. То есть даже при явном наличии большого пула сообщений внутренняя активация разгоняется до максимального количества одновременно работающих процедур активации относительно небыстро.

А вот внешняя активация устроена так что помимо основной очереди, есть еще "следящая" очередь. закидивая сообщения определенного типа в следяющуу очередь можно вызвать "внешний" обработчик очереди в которую поступают сообщения. это может быть ваша собственная самописная программа или уже готовое решение от microsoft (называется ssbeas). оно как раз следит за начилием сообщений в следящей очереди постоянной инструкцией waitfor receive и как только в следящую очередь поступает сообщение вызывает логику которая начинает вычитку сообщений из основной очереди.
в этом плане можно легко контролировать кол-во одновременно работающий обработчиков очереди. не хватает к примеру: запулил сразу 10 сообщений в следящую очередь и в тот же момент поднялось 10 внешних приложений которые начали вычитывать сообщения из основной очереди.

написал может быть сумбурно немного но лучше качните ssbeas там есть справка в виде вордовского документа, да и на просторах гугла можно найти примеры как реализуется внешняя активация. лично я писал собственную.
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950525
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Черт..огонь.
Был бы Оскар для форумчан дал бы вам ,без сомнения.
Про внешний активатор и не слышал даже..
Скажите,на свой практике вы его использовали?


использовал.

Проблема внутренней активации в том что как я уже написал внутренний таймер мониторинга срабатывает каждые 5 секунд.
Это хард-код поведение которое никак не изменить. То есть даже при явном наличии большого пула сообщений внутренняя активация разгоняется до максимального количества одновременно работающих процедур активации относительно небыстро.

А вот внешняя активация устроена так что помимо основной очереди, есть еще "следящая" очередь. закидивая сообщения определенного типа в следяющуу очередь можно вызвать "внешний" обработчик очереди в которую поступают сообщения. это может быть ваша собственная самописная программа или уже готовое решение от microsoft (называется ssbeas). оно как раз следит за начилием сообщений в следящей очереди постоянной инструкцией waitfor receive и как только в следящую очередь поступает сообщение вызывает логику которая начинает вычитку сообщений из основной очереди.
в этом плане можно легко контролировать кол-во одновременно работающий обработчиков очереди. не хватает к примеру: запулил сразу 10 сообщений в следящую очередь и в тот же момент поднялось 10 внешних приложений которые начали вычитывать сообщения из основной очереди.

написал может быть сумбурно немного но лучше качните ssbeas там есть справка в виде вордовского документа, да и на просторах гугла можно найти примеры как реализуется внешняя активация. лично я писал собственную.

Под линукс есть?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950541
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

интересно, какой бизнес-кейс требует столь интенсивного использования брокера?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950547
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

готовое из коробки от мелкомягких только под винду, можно запустить в эмуляторе типа wine или VMware
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950560
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
felix_ff,

интересно, какой бизнес-кейс требует столь интенсивного использования брокера?



у нас в основном он используется с целью перевода в асинхронную модель обработки документов тормозной АБС.
по бизнес процессу некое начисление должно создать достаточно большой пул документов за относительно короткий промежуток времени. из-за невозможности ни горизонтального масштабирования ни использования параллелизма, модель сообщений подошла как нельзя кстати, при этом инфраструктурных изменений потребовалось минимум.

а на прошлых местах работы у нас обработка карточных транзакций была построенна на компоненте, там существенную роль играла гарантия доставки, время от времени канал мог отваливаться и то что SB сам разруливает ситуацию доступности сервиса таргета сильно экономило время и нервы.
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39950657
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
felix_ff,

интересно, какой бизнес-кейс требует столь интенсивного использования брокера?


Например игтеграцию между различными системами..кол-во записей в день 1 сторону около 4 млн
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39952144
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,
Итак.
Настраиваю в очередной раз SB.
Постоянно какие-то разные траблы

Настроил все везд..Отправляю на таргет

IF OBJECT_ID('TelemedDBStore..Test', 'U') IS NOT NULL DROP TABLE Test ;
create table Test (id int identity(0,1),Test varchar (max))

Получаю

Connection handshake failed. The login 'public' does not have CONNECT permission on the endpoint. State 84.
Права на логин дал
grant send on service::s2Insert to public;
grant send on service::s2Update to public;
grant send on service::s2Delete to public;
Что может быть не так?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39952147
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм..почему-то пользователю не дались права на точки
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39952151
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

у Вас текущее сообщение об ошибке это транспортный уровень, вы аутентификацию не по сертификату что ли настроили?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39955731
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Никак не пойму в чем проблема.
Настроил все,посылаю в очередь.
Проверяю запросом

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select top (11)
      ce.[conversation_handle], 
      ce.[state],
      ce.[far_broker_instance],
      ce.[security_timestamp],
      tq.[from_service_name],
      ce.[far_service],
      cast(tq.[message_body] as xml) as [msg],
      tq.[transmission_status]
from sys.conversation_endpoints ce
    left join sys.transmission_queue tq on tq.[conversation_handle] = ce.[conversation_handle]
order by ce.[send_sequence] desc;



Скрин
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39955732
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А до таргета не доходит.
Подскажите,что может быть не так?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39955733
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня соединение не открывается почему-то
Код: sql
1.
select * from sys.dm_broker_connections
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39955825
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч
У меня соединение не открывается почему-то
Код: sql
1.
select * from sys.dm_broker_connections



Если соединения нет значит накосячили с эндпоинтами, проверьте наличие сертификатов и конечных точек.

Код: sql
1.
select * from sys. Dm_service_broker_endpoints
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39955827
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том,что я уже настраивал неоднократно..скрины вот
На 1-и м 2-м скрине данные по сертификатам из Source сервера.
Все норм
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39955839
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

Ну этот скриншот действительно выглядит норм, непонятно правда почему удиалога far_ broker_ instance нулевой. Ну запустите евент- сессию на обоих серверах я тут в этом топике ее код гдето приводил и посмотрите возникающие события. В случае ошибок будут message undeliverable.

С телефона не удобно просто писать
...
Рейтинг: 0 / 0
25 сообщений из 179, страница 6 из 8
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Service Broker для репликации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]