I have a use case where i am working on AQ JMS Integration. I was following this link to get started... Message not deleting from Topic after successfully dequeue
I created the topic as this...
EXEC dbms_aqadm.create_queue_table (queue_table=>'MY_Topic1', queue_payload_type=>'sys.aq$_jms_text_message', multiple_consumers=>true );
EXEC dbms_aqadm.create_queue(queue_name=>'MY_Topic1', queue_table=>'MY_Topic1');
then i have created a JMS Module, under that i have created a Foreign Server.
For the Foreign Server, general tab,I have given the following values...
JNDI Initial Context Factory: oracle.jms.AQjmsInitialContextFactory
JNDI Properties: datasource=xe/datasource (datasource is XA, using this data source user only, i have created the topic and queue table in database, and the schema is having all the required privileges)
and i have checked the "Default Targeting enabled"
For the Foreign Server, connection factories tab,I have given the following values...
Local JNDI Name: aqjms/XATopicConnectionFactory
Foreign JNDI Name: XATopicConnectionFactory
For the Foreign Server, foreign destinations tab,I have given the following values...
Local JNDI Name: AqTopic
Foreign JNDI Name: Topics/MY_Topic1
I have saved everything, updated and redeployed the JMS Adapter with JMS-Plan.xml.
Restarted all the servers.
Now, I have created an OSB project with the proxy service listening (subscriber) to the AQ Topic, and published the project to the OSB Server.
This is a stand alone instance i am trying on, and the JMS end point i gave is as below...
And, if i can see the topic subscribers table i.e., aq$my_topic1_s, i cannot see the subscriber in that (no records, i was thinking when a proxy which listens to that topic gets deployed, a record gets an entry over there)
can someone please help me understand how the entries gets created in the subscribers table ?
Also, how to enqueue messages to a topic, can we do this by creating a business service in OSB, JMS transport ? or SOA composite ? or any commands?
I'm not sure if I understood your case very well...
Are you using the JmsAdapter via JCA or a proxy service with JMS transport?
If you are using JmsAdapter via JCA, better to use the AqAdapter instead...
If you are using a proxy service with JMS transport... OSB doesn't know that's an AQ Topic, it will look like any other JMS implementation from OSB view... I recommend you to mark "Durable Subscription" but even then I'm not sure if that will create rows in aq$my_topic1_s...
Hope this helps...
There's a sample on OSB (10g) connecting Oracle AQ here that may be helpful... Look for AQADAPTERTUTORIAL...
Also have a look at this...
I am not sure with OSB. I never seen the face of it. But when you say you are not able to see the subscriber in the table then you cannot consume the message.
Can quickly create AQJMS adapter service in bpel and select your topic and deploy the service in SOA server. Once it deploy go to the aq$my_topic1_s check if you able to see or not. And also try de-queue a message from the same topic. I am using JMS Transport for Proxy Service and i have enabled the durable subscriber option as well. Please tell me how the entries in the subscribers table gets added.
You no need to do any thing. Just deploy your service and after that you should able to see record in the table. If record is not created then connection is not established between Topic and your service.
I have doubt with the endpoints only jms://localhost:8011/aqjms.XATopicConnectionFactory/AqTopic
Your JNDI name for connection factories given as aqjms/XATopicConnectionFactory and here its aqjms.XATopicConnectionFactory. Can you check it.
Apart of this everthing looks same. Try above and let us know it.
Edited by: Tarak on Nov 1, 2012 3:36 PM