Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 AQ & Propagation  [new]
ale-Just
Member

Откуда:
Сообщений: 71
Доброго дня.
Разбирался с очередями. Не заработала доставка сообщения из одной очереди в другую, точнее сообщение получил в дочерней очереди, но из родительской та отказывается говорить что PROCESSED (всё в рамках одного экземпляра).
По порядку :
1.создал очередь multiconsumer_queue в схеме mgr_queue.
2.создал очередь queue_multiconsumer в схеме mgr_queue2.
3.раздал привилегии
BEGIN
   DBMS_AQADM.GRANT_QUEUE_PRIVILEGE (
      privilege     =>     'ALL', 
      queue_name    =>     'mgr_queue.multiconsumer_queue',
      grantee       =>     'mgr_queue2', 
      grant_option  =>      false);
END;
4.создал двух подписчиков:
DECLARE 
   subscriber       sys.aq$_agent; 
BEGIN 
   subscriber := sys.aq$_agent('subscriber1', null, null); 
   DBMS_AQADM.ADD_SUBSCRIBER(
      queue_name =>  'multiconsumer_queue', 
      subscriber =>   subscriber); 
END;

DECLARE
  subscriber sys.aq$_agent;
BEGIN
  subscriber := sys.aq$_agent('subscriber2',
                              'mgr_queue2.queue_multiconsumer',
                              null);
  DBMS_AQADM.ADD_SUBSCRIBER(queue_name     => 'multiconsumer_queue',
                            subscriber     => subscriber,
                            queue_to_queue => TRUE);
END;
5.Указал, как доставлять
BEGIN
  DBMS_AQADM.SCHEDULE_PROPAGATION(queue_name        => 'multiconsumer_queue',
                                  destination       => NULL,
                                  destination_queue => 'mgr_queue2.queue_multiconsumer',
                                  start_time        => sysdate,
                                  next_time         => 'sysdate + 1 / 24 / 6',
                                  latency           => 0);
END;
Ставлю сообщение в очередь и вижу что в aq$multiconsumer_qtab висит два сообщения по одному для каждого подписчика. Сообщение в дочернюю очередь доставлено, но статус READY остался. После прочтения сообщений из очередей, статус для первого подписчика изменяется в PROCESSED, у второго READY(родительской таблицы, из дочерней сообщение уходит).
Опираясь на документацию :
A message is marked as processed in the source queue immediately after the message has been propagated, even if the consumer has not dequeued the message at the remote queue.

Подскажите, где я ошибся.
PS:10.2.0.4(WinXP)
13 окт 08, 16:54    [6299526]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить