|
AQ, propagation и список получателей
|
|||
---|---|---|---|
#18+
Приветствую уважаемых участников форума! Есть вопрос по AQ и пропагации сообщения через DBLink. Есть локальная очередь DEV_AQ, подписчик по умолчанию, пропагация по DBLink в другую очередь TEST_AQ@TESTDB. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Есть блок постановки сообщения в очередь. Без указания списка получателей (v_msg_properties.recipient_list) сообщения уходят для получателя по-умолчанию (REMOTE_SUBSCRIBER) и пропагация в удаленную очередь срабатывает нормально (queue_to_queue => true). Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Но вот если указать получателей вручную, то пропагация не срабатывеает. Адрес, естественно, имеет формат 'AQ_USR.TEST_AQ@TESTDB'. Код: plsql 1. 2. 3. 4.
Получается, что пропагация работает только для умолчательных подписчиков очереди, которые были добавлены командой add_subscriber? Или можно как-то сделать пропагацию для получателей, указанных вручную? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2014, 10:13 |
|
AQ, propagation и список получателей
|
|||
---|---|---|---|
#18+
В идеале бы хотелось сделать вот что: Указать для очереди несколько подписчиков: SUBSCRIBER_1, SUBSCRIBER_2...SUBSCRIBER_N с настроенной пропагацией в 'AQ_USR.TEST_AQ@TESTDB'. 1. В разных pl/sql-блоках формируются разного типа xml-ки и отправляются разным получателям (т.е. указываем получателя в recipient_list). 2. Делается пропагация в удаленную очередь. 3. В удаленной БД разработчики принимают эти сообщения и уже проводят индивидуальную их обработку в зависимости от того, какой получатель принял сообщение. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2014, 10:41 |
|
AQ, propagation и список получателей
|
|||
---|---|---|---|
#18+
Покурил доки на сайте оракла по этой теме и вроде придумал вариант как можно сделать. Будем использовать правило (rule) при добавлении подписчика для очереди. От чистого XMLTYPE пришлось отказаться, но ввиду того, что очень нужно использовать именно XML, то сделали следующий формат передачи сообщений: Код: plsql 1. 2. 3. 4.
В msg_type будет храниться некий строковый тип сообщения, это поле затем будет использоваться в rule. Подписчиков для очереди добавляем следующим образом: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Получается, что в разных pl/sql блоках будут формироваться сообщения с разными msg_type (01, 02 или 03) и при постановке сообщения в очередь оно будет ставиться только для соответствующего получателя. Ну а на стороне удаленной БД будут работать 3 подписчика, извлекать свои сообщения и обрабатывать их как надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2014, 13:50 |
|
|
start [/forum/topic.php?fid=52&fpage=87&tid=1882891]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 188ms |
0 / 0 |