Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> How-to send a non-persistent (BUFFERED) message using JMS?

How-to send a non-persistent (BUFFERED) message using JMS?

From: bolek <tromanow_at_hotmail.com>
Date: 14 Jun 2006 08:41:11 -0700
Message-ID: <1150299671.207156.227130@y43g2000cwc.googlegroups.com>


I'm trying to send a BUFFERED (in Oracle terms) message using JMS. I would expect the Oracle implementation of JMS to map the JMS non-perisstent delivery mode in the Oracle BUFFERED delivery mode. However, try as I might my JMS programs always send messages as persistent. Why? Is there any way I can send a BUFFERED AQ message using JMS? I can soo easily do that using PL/SQL I'm just trying to accomplish the same thing from a different programmatic environment. This is on Oracle 10.2.1 jars from 10.2.1 as well.

import javax.jms.*;
import oracle.jms.*;
import oracle.xdb.*;

public class jms
{

	public static void main (String args [])
	throws java.sql.SQLException, ClassNotFoundException, JMSException
	{
		try

{
String ora_sid = "tap620"; String host = "hadrian"; String schema = "ops$tromanow"; String password = "tromanow"; String queueName = "Q_XML_RFD_OUTPUT"; int port = 1521; Enqueue(ora_sid, host, schema, password, queueName, port); System.out.println("You should see 3 messages in Q_XML_RFD_INPUT. Should be buffered but they are persistent instead"); } catch (Exception ex)
{
System.out.println("Exception: " + ex); } } public static void Enqueue(String ora_sid, String host, String schema, String password, String queueName, int port) { QueueConnectionFactory qc_fact = null; QueueConnection q_conn = null; QueueSession q_sess = null; java.sql.Connection db_conn = null; Queue queue = null; AdtMessage adt_msg = null; QueueSender q_sender = null; oracle.xdb.XMLType xtype = null; String data = null; try
{
qc_fact = AQjmsFactory.getQueueConnectionFactory(host, ora_sid, port, "thin"); q_conn = qc_fact.createQueueConnection(schema, password); q_sess = q_conn.createQueueSession(true,
Session.CLIENT_ACKNOWLEDGE);
			q_conn.start();
			db_conn = ((AQjmsSession)q_sess).getDBConnection();

			queue = ((AQjmsSession)q_sess).getQueue(schema, queueName);

			q_sender = q_sess.createSender(queue);

			adt_msg = ((AQjmsSession)q_sess).createAdtMessage();

			data = "<bolek>olek</bolek>";

			xtype = oracle.xdb.XMLType.createXML(db_conn, data);

			adt_msg.setAdtPayload(xtype);

			//try sending a buffered message, different ways, none of them
works!
			((AQjmsQueueSender)q_sender).send(queue, adt_msg,
					DeliveryMode.NON_PERSISTENT, 1,
					AQjmsConstants.EXPIRATION_NEVER);

			q_sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
			((AQjmsQueueSender)q_sender).send(queue, adt_msg,
					DeliveryMode.NON_PERSISTENT, 1,
					AQjmsConstants.EXPIRATION_NEVER);

			adt_msg.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
			((AQjmsQueueSender)q_sender).send(queue, adt_msg,
					DeliveryMode.NON_PERSISTENT, 1,
					AQjmsConstants.EXPIRATION_NEVER);

			q_sess.commit();
			q_sess.close();
			q_conn.close();

		}
		catch (Exception e)

{
System.out.println("Exception: " + e); } }
Received on Wed Jun 14 2006 - 10:41:11 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US