I've to develop a mechanism to coalesce multiple messages commited to a queue in the same transaction to a single event handling in a destination queue.
== Scenario ==
Using PL/SQL multiple messages are commited together in the INPUT_QUEUE. There is an subscribed agent that perform queue-to-queue propagation to a OUTPUT_QUEUE on another instance via DBLink. On the OUTPUT_QUEUE there is a registered subscriber with a PL/SQL callback. The callback is called and everything is working just fine, processing one message at the time.
== Wants ==
I'd like to use AQ message grouping feature to dequeue all messages from the OUTPUT_QUEUE that insist on the same transaction group together.
If I register or listen on the OUTPUT_QUEUE, am I guaranteed that when I get notified of a new message, all messages regarding that group are already present in the queue?
Is there a way to SUBSCRIBE a callback with a transaction grouped notification? The callback should be called only _one_ time the entire message group, not for each message of the group.
Or I should LISTEN on OUTPUT_QUEUE and dequeue messages manually?