|
|
|
DBMS_AQ Дождаться получения всех сообщений
|
|||
|---|---|---|---|
|
#18+
Добрый день. Первый раз сталкиваюсь с DBMS_AQ и прошу подсказать как правильнее реализовать следующее. Одна сессия потихоньку пихает в очередь сообщения, а вторая вычитывает. Необходимо чтобы вторая сессия вычитала все сообщения, после чего отработала. Создадим все необходимое: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. В первой сессии начинаем передавать сообщения с задержкой Код: 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. Во второй сессии читаем: Код: 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. Если убирать dequeue_options.wait := DBMS_AQ.NO_WAIT; - вычитывает все сообщения, но потом еще черти знает сколько висит. Понимаю, что можно условно передавать в конце цикла отправляющей сессии сообщение типа "Finish", а в принимающей сессии вычитав такое сообщение выходить из цикла. Но может штатный механизм позволяет сделать это без таких костылей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 09:56 |
|
||
|
DBMS_AQ Дождаться получения всех сообщений
|
|||
|---|---|---|---|
|
#18+
feagor, не зацепил, вначале тип создаем, конечно Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 09:57 |
|
||
|
DBMS_AQ Дождаться получения всех сообщений
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. попробуй такие опции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 10:55 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=105&tid=1883612]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 345ms |

| 0 / 0 |
