This content has been marked as final. Show 6 replies
Queue is defines as multiple_consumers => TRUE, then you need to have at least one subscriber in order to store messages in the queue.
Check that you have a subsriber on that queue.
Hi, this reply sounds strange to me.
The AQ user's guide says:
Publish/subscribe describes a situation in which a publisher application enqueues
messages to a queue anonymously (no recipients specified). The messages are then
delivered to subscriber applications based on rules specified by each application.
Thus it should be allowed to have an empty recipient list - where consumers are defined by a dynamic subscriber list.
When a queue is a multi-consumer queue you need to either specify a recipient list on enqueue or have added a default subscriber to the queue in order to avoid the ORA-24033 error.
You can also get an ORA-24033 if you have a rules-based subscriber on the queue and the rule evaluates to false on enqueue and will result in the ORA-24033.
Yes, and the very most annoying thing is, that a similar Java setup does NOT return any information that the message is not enqueued !/(#&%!"/! So you can have a faulty setup - and a program doing mio of enqueues (and no one apart from the end user discovers that somethings was very wrong). How rude !!!
I would reaaly like to see the same Oracle return code in PL/SQL and Java ..... (and other languages for that matter, but I have only tested with pl/sql and java in this case)
Ok, then I wonder whether I could implement a broadcast model having a dynamic, undefined number of consumers.
In such a case the producer doesn't know anything concerning existing consumers, which at enqueuing time might exist or not.
Say he puts a message in the queue, then if any subscriber exists - then he's notified - otherwise the message remains queued till someone will scan the queue (assuming a persistent queue is used).
Is that pattern compatible with AQ ?
could you specify your previous settings (i.e. DBMS_MGWADM.CREATE_MSGSYSTEM_LINK, DBMS_MGWADM.REGISTER_FOREIGN_QUEUE,
DBMS_MGWADM.SCHEDULE_PROPAGATION) ? These informations are necessary for finding a solution.