Oracle Advanced Queuing Experience - PullRequest
       42

Oracle Advanced Queuing Experience

2 голосов
/ 23 января 2012

Я планирую использовать технологию Oracle Advanced Queuing для асинхронной связи.Моя цель - использовать его для одновременного выполнения процессов (асинхронные вызовы процедур PL / SQL).

Текущая унаследованная реализация для параллельного выполнения процессов состоит из сценариев Unix KornShell (ksh), которые мы запускаем из внешнего интерфейса.через SSH соединение в фоновом режиме.У нас это работает нормально, но я недоволен таким решением из-за:

  • Безопасность (интерфейс запускает SSH-соединение и выполняет сценарии ksh в фоновом режиме. От наших коллег я заметил, что этотип входа в нашу компанию будет ограничен.)
  • Техническое обслуживание (Не все в нашей команде знакомы со сценариями ksh)
  • Разнообразие в технологиях (я пытаюсь уменьшить разнообразие в технологиях из-заноу-хау и усилия по миграции)
  • Ведение журнала (Наша внутренняя система регистрирует таблицы журналов базы данных, параллельное выполнение частично записывает в файл журнала)

При переходе от ksh к базе данныхЯ смогу повысить общее качество своей системы:

  • Безопасность (больше нет SSH-соединений, клиентский интерфейс отправляет сообщения в базу данных, а прослушиватель сообщений базы данных реагирует на сообщения и выполняет процедуры* асинхронно)
  • Обслуживание (Мы используем PL / SQL, где мы знакомы)
  • Разнообразие в технологиях (При следующей миграции ОС нам потребуется перенести только объекты базы данных и данные)
  • Ведение журнала (Мы будем полностью использовать наше решение для ведения журнала в бэкэнде)

Что вы думаете о моих соображениях и каков ваш опыт работы с Oracle Advanced Queuing?Особенно в стабильности, производительности и обслуживании?Есть ли лучшие альтернативы?

Ответы [ 2 ]

2 голосов
/ 05 декабря 2014

Управление потоками с помощью асинхронных очередей Oracle имеет свои преимущества и недостатки:

ПРЕИМУЩЕСТВА

  1. Возможность управления потоками по типам, создавая специальный код для создания обработчика (JOB EVENT или APPLY PROCESS) для управления различными подпотоками
  2. Простое создание целого типа потоков, закрывающих очередь DEQUEUE.
  3. Управление приоритетами (параметр при создании Coda) MSG дляВСТАВИТЬ ВРЕМЯ или ПРИОРИТЕТ (параметр msg в полезной нагрузке) Управляющее сообщение с указанием крайнего срока или истекшего ВРЕМЕНИ.
  4. Привести парадигму к решению EVENT no POLLING

НЕДОСТАТКИ

  1. Загрузка бизнес-логики будет все в БД.
  2. При установке новой PKG вам нужно будет остановить очереди (очереди и DEQUEUEING), чтобы перезапустить HANDLER, который указывает на PKG.
  3. Необходимость внедрения системы восстановления msg Неправильно обработано.

Я думаю, что хорошим решением было бы использование ХПКE JMS (JMS-провайдер) на хвостах ORACLE, чтобы переместить BL на JAVA и использовать различные возможности языка, включая Logging.

2 голосов
/ 23 января 2012

Я, очевидно, не знаю деталей вашего проекта, но если ваша единственная цель - асинхронные вызовы процедур PL / SQL, возможно, будет проще использовать DBMS_SCHEDULER. Ваша программа может отправлять задания для «запуска сейчас» через планировщик, который вызывает ваш PL / SQL. На мой взгляд, с планировщиком работать гораздо проще, чем с AQ.

...