vanitas-mundi
Neuer Benutzer
- Beiträge
- 2
Hallo!
Ich habe mit DBMS_AQADM eine Queue-Table + Queue erstellt, diese gestartet und mit
DBMS_AQ eine CallBack-Procedure registriert.
Nach einem Aufruf von DBMS_AQ.ENQUEUE und DBMS_AQ.DEQUEUE in der
CallBack-Procedure konnte ich auch tatsächliche meine Message verarbeiten.
So weit klappt alles prächtig ... aber wenn ich in der Message-Bearbeitung
mit DBMS_SESSION.SLEEP etwas Bearbeitungszeit simuliere, dann
werden weitere mit DBMS_AQ.ENQUEUE erzeugte Messages, erst
abgearbeitet, wenn die unter SLEEP definierte Zeit abgelaufen ist, zudem
kann man in SYS_CONTEXT('SESSION_ID') sehen, dass jede Message
mit der selben SessionId von der CallBack-Procedure bearbeitet wird.
In der Oracle-Dokumentation habe ich für mich heraus gelesen, dass
die Messages asynchron verarbeitet werden.
Ist dies ein Trugschluss oder was muss getan werden, dass die
CallBack-Procedure die Messages asynchron verarbeiten kann?
Danke, für jede Hilfe
Ich habe mit DBMS_AQADM eine Queue-Table + Queue erstellt, diese gestartet und mit
DBMS_AQ eine CallBack-Procedure registriert.
Nach einem Aufruf von DBMS_AQ.ENQUEUE und DBMS_AQ.DEQUEUE in der
CallBack-Procedure konnte ich auch tatsächliche meine Message verarbeiten.
So weit klappt alles prächtig ... aber wenn ich in der Message-Bearbeitung
mit DBMS_SESSION.SLEEP etwas Bearbeitungszeit simuliere, dann
werden weitere mit DBMS_AQ.ENQUEUE erzeugte Messages, erst
abgearbeitet, wenn die unter SLEEP definierte Zeit abgelaufen ist, zudem
kann man in SYS_CONTEXT('SESSION_ID') sehen, dass jede Message
mit der selben SessionId von der CallBack-Procedure bearbeitet wird.
In der Oracle-Dokumentation habe ich für mich heraus gelesen, dass
die Messages asynchron verarbeitet werden.
Ist dies ein Trugschluss oder was muss getan werden, dass die
CallBack-Procedure die Messages asynchron verarbeiten kann?
Danke, für jede Hilfe