Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Var79
Member

Откуда:
Сообщений: 890
Есть один SQL Server, с одной БД, а значит с одним Service Broker-ом, ничего распределенного не надо.
Попробую описать задачу.

Пусть для начала будет одна очередь сообщений.
В этой очереди есть сообщения:
- "для техников" (любой техник может взять сообщение и начать его исполнять, если не может исполнить, сообщение в очередь не возвращается, техник исполнит его позже сам).
-
-
9 окт 12, 15:24    [13291053]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5126
а для чего здесь сервис_брокер??
9 окт 12, 15:36    [13291172]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Var79
Member

Откуда:
Сообщений: 890
Извините сорвалось.

Есть один SQL Server, с одной БД, а значит с одним Service Broker-ом, ничего распределенного не надо.
Попробую описать задачу.

Пусть для начала будет одна очередь сообщений.
В этой очереди есть сообщения для следующих целей:
- "для техников" (любой техник может взять сообщение и начать его исполнять, если не может исполнить, сообщение в очередь не возвращается, техник исполнит его позже сам).
- "для грузчиков"
- "для бухгалтеров"
- "для Васи"

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

Думаю как бы лучше сделать, создавать новые типы (CREATE TYPE) и потом добавлять в контракт (ALTER CONTRACT)? Это кажется подозрительным.

В конечном итоге нужно что то вроде
select body from queueTable where target = 'Вася',
то есть цели будут смотреть есть ли для них сообщения.

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

Покритикуйте/предложите лучше вариант.
Если что непонятно написал - спрашивайте.
9 окт 12, 15:40    [13291214]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Var79
Member

Откуда:
Сообщений: 890
Дедушка
а для чего здесь сервис_брокер??

может и не для чего, но во первых
в системе будет использоваться SqlDependency, так что сервис_брокер уже есть,
во вторых нужна сама по себе очередь, причем если где то не будет сервис_брокера то очередь будет реализованна на табличке
9 окт 12, 15:43    [13291248]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Var79
Member

Откуда:
Сообщений: 890
на данный момент интересует как бы задавать "цели" без постоянного создания типов, контрактов, служб.
можно ли обойтись DEFAULT контрактом или чем то еще по умолчанию.
просто если использовать DEFAULT контракт то он вроде может принимать только один тип сообщений, тогда не понятно как различать цели сообщений, если бы можно было в DEFAULT контракт передавать несколько типов сообщений то тип сообщения равнялся бы цели.
9 окт 12, 15:50    [13291302]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Var79
Member

Откуда:
Сообщений: 890
Дедушка,

считаете что SB тут не применим или не эффективен?
9 окт 12, 15:55    [13291342]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Var79
ничего распределенного не надо

Дедушка
а для чего здесь сервис_брокер??
9 окт 12, 16:10    [13291467]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Var79
Member

Откуда:
Сообщений: 890
Jovanny
Var79
ничего распределенного не надо

Дедушка
а для чего здесь сервис_брокер??


1) в системе будет использоваться SqlDependency, так что сервис_брокер уже есть,
2) нужна сама по себе очередь, причем если где то не будет сервис_брокера, будет например sqlite, то очередь будет реализована на табличке.
9 окт 12, 16:20    [13291534]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Var79
Member

Откуда:
Сообщений: 890
что в таком случае лучше использовать, SB или таблицу?
9 окт 12, 16:21    [13291541]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Для Вашей задачи достаточно одной таблицы и двух хранимых процедур.
Зачем всё усложнять?
9 окт 12, 16:54    [13291820]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как лучше реализовать переменное и неизвестное количество целей?  [new]
Var79
Member

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

если два коннекшина будут читать из одной таблицы, нужно следить что бы только один из них прочел одну строку, это конечно не проблема, просто в SB эта возможность встроена и все равно SB используется для других задач.
В общем ладно, спасибо всем.
9 окт 12, 22:04    [13292811]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить