Why do the JMS dbms_aqadm.add_subscriber and dbms_aqadm.remove_subscriber calls sometimes hang when there are concurrent enqueues or dequeues happening on the same queue to which these calls are issued?
Answer / munnu
Add_subscriber and remove_subscriber are administrative operations on a queue. Though AQ does not prevent applications from issuing administrative and operational calls concurrently, they are executed serially. Both add_subscriber and remove_subscriber will block until pending transactions that have enqueued or dequeued messages commit and release the resources they hold. It is expected that adding and removing subscribers will not be a frequent event. It will mostly be part of the setup for the application. The behavior you observe will be acceptable in most cases. The solution is to try to isolate the calls to add_subscriber and remove_subscriber at the setup or cleanup phase when there are no other operations happening on the queue. That will make sure that they will not stay blocked waiting for operational calls to release resources.
| Is This Answer Correct ? | 0 Yes | 0 No |
Does JMS specification define transactions?
What are all the features of JMS API in J2EE platform?
How you can deliver a java message to a non-java client?
Explain about session interface?
What is JMS session?
What is jms in java with example?
Why do I get java.security.AccessControlException when using JMS MessageListeners from Java stored procedures inside Oracle8i JServer?
what is Java Message Service (JMS)?
What are the steps involved in configuring the jms?
What is a connection factory?
What are the functionalities of a jms provider?
Can two different jms services talk to each other? For instance, if a and b are two different jms providers, can provider a send messages directly to provider b? If not, then can a subscriber to provider a act as a publisher to provider b?