jstrachan 2002/11/07 11:13:48
Modified: messenger/src/java/org/apache/commons/messenger
MessengerSupport.java
Log:
Added support for setting the default delivery mode on a Messenger.
This allows you to specify in a Messenger.xml something like
<messenger name="myQueueConnection" persistentDeliver="false">
...
to by default enable or disable persistent message delivery. This delivery mode is
then defaulted on any MessageProducer.
You can override this delivery mode later if required on a per MessageProducer
basis, but at least this mechanism provides a simple defaulting mechanism on a per
Messenger basis
Revision Changes Path
1.32 +45 -5
jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/MessengerSupport.java
Index: MessengerSupport.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/MessengerSupport.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- MessengerSupport.java 6 Sep 2002 11:53:00 -0000 1.31
+++ MessengerSupport.java 7 Nov 2002 19:13:47 -0000 1.32
@@ -17,6 +17,7 @@
import javax.jms.Connection;
import javax.jms.ConnectionConsumer;
import javax.jms.ConnectionFactory;
+import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
@@ -63,7 +64,10 @@
/** are topic subscribers durable? */
private boolean durable;
-
+
+ /** the delivery mode used by default when sending messages */
+ private int deliveryMode = Message.DEFAULT_DELIVERY_MODE;
+
/** the durable name used for durable topic based subscriptions */
private String durableName;
@@ -856,6 +860,34 @@
this.cacheProducers = cacheProducers;
}
+ /**
+ * Returns the delivery mode used on messages sent via this Messenger
+ * @return int
+ */
+ public int getDeliveryMode() {
+ return deliveryMode;
+ }
+
+ /**
+ * Sets the delivery mode used on messages sent via this Messenger
+ * @param deliveryMode The deliveryMode to set
+ */
+ public void setDeliveryMode(int deliveryMode) {
+ this.deliveryMode = deliveryMode;
+ }
+
+
+ /**
+ * Sets whether message delivery should be persistent or not
+ *
* @param persistentDelivery
*/
+ public void setPersistentDelivery(boolean persistentDelivery) {
+ if (persistentDelivery) {
+ setDeliveryMode(DeliveryMode.PERSISTENT);
+ }
+ else {
+ setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+ }
+ }
// Implementation methods
//-------------------------------------------------------------------------
@@ -917,14 +949,22 @@
Session session,
Destination destination)
throws JMSException {
+
+ MessageProducer answer = null;
if (isTopic(session)) {
TopicSession topicSession = (TopicSession) session;
- return topicSession.createPublisher((Topic) destination);
+ answer = topicSession.createPublisher((Topic) destination);
}
else {
QueueSession queueSession = (QueueSession) session;
- return queueSession.createSender((Queue) destination);
+ answer = queueSession.createSender((Queue) destination);
+ }
+
+ // configure the MessageProducer
+ if (deliveryMode != Message.DEFAULT_DELIVERY_MODE) {
+ answer.setDeliveryMode(deliveryMode);
}
+ return answer;
}
/**
--
To unsubscribe, e-mail: <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>