Oracle8i Application Developer's Guide - Advanced Queuing Release 2 (8.1.6) Part Number A76938-01 |
|
JMS Operational Interface: Basic Operations (Publish-Subscribe), 20 of 29
Create a durable subscriber for an adt topic with selector.
To create a durable subscriber for a Topic of Oracle Object type, the client needs to specify the CustomDatumFactory for the Oracle Object Type in addition to the Topic and subscriber name.
Optionally, a message selector may be specified. Only messages matching the selector will be delivered to the subscriber.
ADT messages do not contain any user defined properties. However, the selector can be used to select messages based on priority or correlation id or attribute values of the message payload
The syntax for the selector for queues containing ADT messages is different from the syntax for selectors on queues containing standard JMS payloads (text, stream, object, bytes, map)
The selector is similar to the AQ rules syntax
a. Selector on priority or correlation is specified as follows
For example.:- priority > 3 AND corr_id = 'Fiction'
b. Selector on message payload is specified as follows. The attribute
name must be prefixed with tab.user_data.
For example:-
tab.user_data.color = 'GREEN' AND tab.user_data.price < 30000
TopicConnectionFactory tc_fact = null; TopicConnection t_conn = null; TopicSession jms_sess; TopicSubscriber subscriber1; Topic shipped_orders; int myport = 5521; AQjmsAgent[] recipList; /* the java mapping of the oracle object type created by J Publisher */ ADTMessage message; /* create connection and session */ tc_fact = AQjmsFactory.getTopicConnectionFactory("MYHOSTNAME", "MYSID", myport, "oci8"); t_conn = tc_fact.createTopicConnection("jmstopic", "jmstopic"); jms_sess = t_conn.createTopicSession(true, Session.CLIENT_ACKNOWLEDGE); shipped_orders = ((AQjmsSession )jms_sess).getTopic("OE", "Shipped_Orders_ Topic"); /* create a subscriber, specifying the correct CustomDatumFactory and selector */ subscriber1 = jms_sess.createDurableSubscriber(shipped_orders, "WesternShipping", " priority > 1 and tab.user_data.region like 'WESTERN %'", false,AQjmsAgent.getFactory());
|
![]() Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
|