summaryrefslogtreecommitdiff
path: root/java/client/src/test/java/org/apache/qpid/example/publisher/MonitorPublisher.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/client/src/test/java/org/apache/qpid/example/publisher/MonitorPublisher.java')
-rw-r--r--java/client/src/test/java/org/apache/qpid/example/publisher/MonitorPublisher.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/java/client/src/test/java/org/apache/qpid/example/publisher/MonitorPublisher.java b/java/client/src/test/java/org/apache/qpid/example/publisher/MonitorPublisher.java
new file mode 100644
index 0000000000..4c1d884f5d
--- /dev/null
+++ b/java/client/src/test/java/org/apache/qpid/example/publisher/MonitorPublisher.java
@@ -0,0 +1,64 @@
+package org.apache.qpid.example.publisher;
+
+import javax.jms.Message;
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import org.apache.qpid.client.BasicMessageProducer;
+import org.apache.log4j.Logger;
+
+/**
+ * Subclass of Publisher which uses QPID functionality to send a heartbeat message
+ * Note immediate flag not available via JMS MessageProducer
+ * Author: Marnie McCormack
+ * Date: 12-Sep-2006
+ * Time: 09:41:07
+ * Copyright JPMorgan Chase 2006
+ */
+public class MonitorPublisher extends Publisher
+{
+
+ private static final Logger _log = Logger.getLogger(Publisher.class);
+
+ BasicMessageProducer _producer;
+
+ public MonitorPublisher(String host, int port, String clientID, String queueName,
+ String user, String password, String virtualPath, String destinationDir)
+ {
+ super(host,port,clientID,queueName,user,password,virtualPath,destinationDir);
+ }
+
+ public MonitorPublisher(String hostdetails, String clientID, String queueName,
+ String user, String password, String virtualPath, String destinationDir)
+ {
+ super(hostdetails,clientID,queueName,user,password,virtualPath,destinationDir);
+ }
+
+ /*
+ * Publishes a non-persistent message using transacted session
+ */
+ public boolean sendImmediateMessage(Message message) throws UndeliveredMessageException
+ {
+ try
+ {
+ _producer = (BasicMessageProducer)_session.createProducer(_destination);
+
+ //Send message via our producer which is not persistent and is immediate
+ //NB: not available via jms interface MessageProducer
+ _producer.send(message, DeliveryMode.NON_PERSISTENT, true);
+
+ //commit the message send and close the transaction
+ _session.commit();
+
+ }
+ catch (JMSException e)
+ {
+ //Have to assume our commit failed but do not rollback here as channel closed
+ _log.error(e);
+ e.printStackTrace();
+ throw new UndeliveredMessageException("Cannot deliver immediate message",e);
+ }
+
+ _log.info(_name + " finished sending message: " + message);
+ return true;
+ }
+}