200 likes | 440 Views
Oracle Advanced Queuing ( Oracle Streams AQ ). Цветан Петров Главен експерт Анализ и дизайн Направление Платежни системи Банксервиз АД София tzpetrov@bsbg.net. Асинхронна връзка. Приложения-производители нареждат съобщения на опашка Приложения-консуматори вземат съобщения от опашка
E N D
Oracle Advanced Queuing(Oracle Streams AQ) Цветан Петров Главен експерт Анализ и дизайн Направление Платежни системи Банксервиз АД София tzpetrov@bsbg.net
Асинхронна връзка • Приложения-производители нареждат съобщения на опашка • Приложения-консуматори вземат съобщения от опашка • Съобщението си седи в опашката, докато консуматорът си го вземе или изтече максималното време за престой в опашката • Производителят може да нареди съобщение, което ще стане видимо за консуматорите след известно време • Консуматорът може да изчака при опита си за вземане на съобщение, докато се появи такова • Едно приложение може да изпълнява едновременно да произвежда и консумира • Консумацията не е задължително да бъде в реда на производството • Произведените съобщения не е задължително да бъдат консумирани • Много производители може да произвеждат за един консуматор • Много производители може да произвеждат, а консуматорите да консумират по дадени критерии
Oracle Streams AQ • DB базирано решение • DB интегрирано • Съобщенията се съхраняват в таблици • Разпространяват се до опашки в други бази данни, други компютри • Връзка с MQ
Приложение А enqueue dequeue dequeue enqueue Опашка за заявки Опашка за отговори Приложение Б Услуга по заявка
xml-базиран транспорт http(s), smtp oci, pl/sql, java клиенти Правила Трансформации Опашки Oracle mgw разпространение MQ Интеграция на приложения
Производител enqueue Абонати Б,В Г dequeue за Г, Д Д dequeue Б В Много консуматори • Списък от абонати за опашка • Списък от получатели на съобщението
Производител Регистър на правила за абонамент priority>1 priority=1 Б Г priority=3 В Абонамент с правила
правила за насочване трансформация разпространение Преформатиране Интеграция на приложения • При нареждане в опашка • При разпространение • При консумиране
Характеристики • Нареждане в опашка • Масив от съобщения с общи опции за нареждането в опашка • Корелация между съобщенията • Списък от абонати • Списък от получатели • Абонамент по правила • Приоритет и подредба • Групиране на съобщения • Разпространение • Идентификация на изпращача • Специфициране на времеви интервал, в който съобщението е достъпно за консумация • Асинхронна нотификация
Характеристики • Вземане от опашка • Масив от съобщения • Множество получатели • Избор на съобщение – първото, следващо след последно взетото, според корелационния идентификатор • Режими – само преглед или вземане • Време за очакване на съобщение • Приоритет и подредба • Повторни опити и пауза между тях • Видимост на всяко съобщение или на всички в рамките на транзакцията • Опашка за изключения • Прослушване на множество опашки • Вземане на заглавната информация без полезния товар
Характеристики • Разпространение • Автоматична координация между опашки за нареждане и получаване – сравняване на вида полезен товар • AQ-AQ – чрез database link • AQ-MQ(TIB/Rendezvous) – Messaging Gateway • Особености при LOB – grant Select, Insert and Update върху таблицата с опашката • Планиране на разпространението – стартово време, времеви прозорец за разпространение, следващ прозорец за периодично разпространение • Следене на пропагандите - DBA_QUEUE_SCHEDULES
Характеристики • И още • Монитор на опашките • До 10.1 – QMNx, AQ_TM_PROCESSES • От 10.1 - Queue Monitor Coordinator (QMNC) и негови роби qXXX • Забавени съобщения • Съобщения с изтекъл срок • Брой повторни опити • Разчистване на таблиците след времето за запаметяване • Интеграция с OEM • Използване на SQL срещу таблиците с опашките • Select • DML – само с API!!! • Статистики – GV$AQ
Характеристики • И още • Структуриран полезен товар • Насочване според съдържанието • Абонамент според съдържанието • SQL справки в съдържанието • XMLtype полезен товар • Всякакъв тип съобщение • Вътрешно представяне в CLOB • Проверка за съответствие със схема (xsd) • Справки в съдържанието
Характеристики • И още • Време за запаметяване след консумация и история • Проследяване на нишката между съобщенията • ENQ_TRAN_ID • DEQ_TRAN_ID • USER_DATA • CORR_ID • MSG_ID • Привилегии на ниво опашка • Има и неустойчиви опашки – губят съдържанието си при падане на базата
Важни детайли • dbms_aqadm • Константи • retention • 0, 1, 2... • INFINITE • message_grouping • TRANSACTIONAL • NONE • queue_type • NORMAL_QUEUE • EXCEPTION_QUEUE • NON_PERSISTENT_QUEUE • Подпрограми за опашкови таблици – create, alter, drop, purge… • За привилегии – grant,revoke system,queue privilege
Важни детайли • dbms_aqadm • За опашки - create, alter, drop, start, stop… • За абонати – add, alter, remove subscriber • За нотификации – get, set watermark • За разпространение – schedule, unschedule, enable, disable • …
Важни детайли • dbms_aq • Константи • Visibility - IMMEDIATE, ON_COMMIT • dequeue mode - BROWSE, LOCKED, REMOVE, REMOVE_NODATA • navigation - FIRST_MESSAGE, NEXT_MESSAGE, NEXT_TRANSACTION • state - WAITING, READY, PROCESSED, EXPIRED • wait - FOREVER, NO_WAIT • delay - NO_DELAY • expiration - NEVER • enque, dequeue, enqueue_array, dequeue_array • listen • register, unregister
Важни детайли • Таблица AQ$MESSAGE_TYPES • При първо разпространение се сверяват типовете от двете страни и се записва TOID на отсрещния тип, verified=T • Таблица REG$ • Регистър за асинхронна нотификация • Опашка AQ_SRVNTFN_TABLE_Q • Съдържа нотифициращи съобщени • Views • Dba_queues • Dba_queue_schedules • dba_dblinks • Jobs • next_date := sys.dbms_aqadm.aq$_propaq(job); • sys.dbms_aqadm_sys.register_driver(); • Параметър • job_queue_processes
Важни детайли • Повторни опити за разпространение се извършват до 16 пъти през интервали • 30 секунди • 1 минута • 2 минути • … • 16384 минути (11-12 дни) • Може да се управлява с промяна на времето на job-а • При 16 неуспешни опита – schedule_disabled става Y • listen връща първия агент със съобщение, но в реда, в който са подредени агентите в списъка
B-Star – Oracle AQ интеграционно решение B-Star Bati