Транзакционная организация очередей/исключение из очереди

Я видел вашу ссылку, вы можете попробовать использовать JOIN с агрегатной функцией в подзапросе.

получить счет больше единицы на salesman_id.

SELECT s.salesman_id,s.city
FROM 
(  select salesman_id
    FROM  Customer i
    GROUP BY i.salesman_id
    having count(*) > 1
)o JOIN Salesman s on s.salesman_id = o.salesman_id  
5
задан chadmyers 3 October 2008 в 05:50
поделиться

6 ответов

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

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

Раздражающий: как Программное обеспечение предприятия, MSMQ имеет потребности безопасности, которые просто делают еще одной вещью настроить и бороться с клиентским администратором сети.

Недопустимое: затем прибыл время, мы хотели устроиться на следующую работу, но не использование простого поп, но что-то как "получает затем СИНЕЕ задание", или "получают затем ЖЕЛТОЕ задание". не может сделать этого!

Мы перешли к плану B: Реализованный наш собственный Q с единственной таблицей SQL 2005. не могло быть более счастливым

Я подчеркнул, тестируют его с сообщениями 200K в день, работал. Мы можем сделать "следующую" логику столь сложной, как мы хотим.

выгода: необходимо быть очень осторожными с SQL, который берет следующий объект. Так как Вы хотите, чтобы это было быстро и не блокировало. существует 2 очень важных подсказки SQL, которые мы использовали на основе некоторого исследования. Волшебство проходит примерно так:

SELECT TOP 1 @Id = callid
FROM callqtbl WITH (READPAST, XLOCK)
where 1=1 ORDER BY xx,yy
5
ответ дан 13 December 2019 в 19:39
поделиться

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

Вы, вероятно, уже знать об этом, но на.NET существует несколько легких библиотек, которые обеспечивают некоторые хорошие абстракции по MSMQ (и теоретически другие транспорты также)

nServiceBus: www.nservicebus.com

Общественный транспорт: http://code.google.com/p/masstransit/

Кроме того, у Oren Eini есть интересное если экспериментальная файловая система базирующаяся, транзакционная очередь. Преимущество этой библиотеки - то, что, в отличие от MSMQ, она может быть развернута как библиотека и не требует головной боли обслуживания развертывания MSMQ.

Можно читать об этом здесь: http://ayende.com/Blog/archive/2008/08/01/Rhino.Queues.Storage.Disk.aspx

Кроме того, SQL Server, 2005 действительно обрабатывает организацию очередей справедливо изящно, с помощью Брокера SQL Server Service, но Вам будет нужен SQL Server, установленный в каждой конечной точке, и я не знаю, пересекает ли SSB брандмауэр.

Наконец, если Вы не получаете ответ, Вы ищете здесь, я настоятельно рекомендую nSErviceBus дискуссионный форум. Udi Dahan отвечает, что эти виды вопросов наряду с его маленькой полосой сообщения ориентировали подписчиков, и это - лучший ресурс, который я нашел до сих пор для получения, моя очередь ориентировала вопросы, отвеченные быстро и со знанием дела. Тот форум здесь: http://tech.groups.yahoo.com/group/nservicebus/

4
ответ дан 13 December 2019 в 19:39
поделиться

Кварц. Сеть является системой планирования задания с открытым исходным кодом.

1
ответ дан 13 December 2019 в 19:39
поделиться

Это - то, какой MSMQ разработан для - ставящий в очередь с транзакциями. Если это не работает на Вас, проверяет функцию "Service Broker" SQL Server - это - "очередь в таблице SQL", которую 'csmba' описывает в его ответе, но это - интегрированный компонент SQL Server, приятно упакованный и выставленный для Вашего использования.

1
ответ дан 13 December 2019 в 19:39
поделиться

Является WebSphere MQ (Ряд MQ) опцией? Поддержки транзакционный обмен сообщениями.

0
ответ дан 13 December 2019 в 19:39
поделиться

Можно посмотреть на функцию Oracle под названием Усовершенствованная Организация очередей

0
ответ дан 13 December 2019 в 19:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: