Обновлено: Кажется, что-то есть с двумя очередями в одной схеме.
Я пытаюсь поэкспериментировать с распространением очереди, но не вижу записей в очереди назначения. Но это может быть легко из-за того, что у меня нет всех частей на своих местах.
Есть ли у кого-нибудь тестовый пример, который они могут опубликовать? Я включу то, что пытался, ниже. Я обнаружил, что устранение неполадок в документации немного освещено, а распространение - это такой черный ящик, что трудно понять, почему он не движется.
Вот что у меня есть; не смеяться.
CREATE OR REPLACE TYPE test_payload AS OBJECT(
test_id NUMBER,
test_dt DATE);
DECLARE
subscriber SYS.aq$_agent;
BEGIN
--- Create Originating Queue and start it
DBMS_AQADM.create_queue_table( queue_table => 'Test_MQT', queue_payload_type => 'Test_Payload',
multiple_consumers => TRUE ); --- multiple subscriber
DBMS_AQADM.create_queue( 'Test_Q', 'Test_MQT' );
DBMS_AQADM.start_queue( queue_name => 'Test_Q' );
--- Create Destination Queue and start it
DBMS_AQADM.create_queue_table( queue_table => 'Dest_MQT', queue_payload_type => 'Test_Payload',
multiple_consumers => TRUE );
DBMS_AQADM.create_queue( 'Dest_Q', 'Dest_MQT' );
DBMS_AQADM.start_queue( queue_name => 'Dest_Q' );
--- Add Subscriber and schedule propagation
subscriber := SYS.aq$_agent( 'test_local_sub', 'Dest_Q', NULL );
DBMS_AQADM.add_subscriber( queue_name => 'Test_Q', subscriber => subscriber );
DBMS_AQADM.schedule_propagation( queue_name => 'Test_Q', destination_queue => 'Dest_Q' );
END;
DECLARE
enqueue_options DBMS_AQ.enqueue_options_t;
message_properties DBMS_AQ.message_properties_t;
message_handle RAW( 16 );
MESSAGE test_payload;
BEGIN
MESSAGE := test_payload( 2, SYSDATE );
DBMS_AQ.enqueue( queue_name => 'Test_Q', enqueue_options => enqueue_options,
message_properties => message_properties, payload => MESSAGE, msgid => message_handle );
COMMIT;
END;
DECLARE
dequeue_options DBMS_AQ.dequeue_options_t;
message_properties DBMS_AQ.message_properties_t;
message_handle RAW( 16 );
MESSAGE test_payload;
BEGIN
dequeue_options.navigation := DBMS_AQ.first_message;
DBMS_AQ.dequeue( queue_name => 'Dest_Q', dequeue_options => dequeue_options,
message_properties => message_properties, payload => MESSAGE, msgid => message_handle );
DBMS_OUTPUT.put_line( 'Test_ID: ' || MESSAGE.test_id );
DBMS_OUTPUT.put_line( 'Test_Date: ' || MESSAGE.test_dt );
COMMIT;
END;





Возможно, вам нужно его включить?
DBMS_AQADM.ENABLE_PROPAGATION_SCHEDULE(queue_name => 'Test_Q');
Я считаю, что это требуется только в том случае, если ему предшествует DISABLE_Prop_schd.
Я считаю, что вам все равно стоит попробовать.
Возможно, вы захотите прочитать эту ветку Тома Кайта на AQ:
Я сделал перед отправкой. хотя спасибо ... Я ценю всех, кто указывает людям на AskTom.
У вас должен быть подписчик по умолчанию для целевой очереди распространения. Что-то должно быть там, чтобы слушать
Когда Марк Брэди принимает ответ Оракула от Скотта Чера, у меня на глазах наворачиваются слезы!
Каков результат вышеизложенного? он просто висит на dequeue?