diff options
Diffstat (limited to 'trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/jmsexample/pubsub/Publisher.java')
-rw-r--r-- | trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/jmsexample/pubsub/Publisher.java | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/jmsexample/pubsub/Publisher.java b/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/jmsexample/pubsub/Publisher.java new file mode 100644 index 0000000000..360b2c6aed --- /dev/null +++ b/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/jmsexample/pubsub/Publisher.java @@ -0,0 +1,133 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.example.jmsexample.pubsub; + + +import javax.jms.*; +import javax.naming.Context; +import javax.naming.InitialContext; +import java.util.Properties; + +/** + * Publish messages to topics + */ +public class Publisher +{ + /* Used in log output. */ + private static final String CLASS="Publisher"; + + /** + * Run the message producer example. + * @param args Command line arguments. + */ + public static void main(String[] args) + { + Publisher publisher = new Publisher(); + publisher.runTest(); + } + + private void runTest() + { + try + { + Properties properties=new Properties(); + properties.load(this.getClass().getResourceAsStream("pubsub.properties")); + + //Create the initial context + Context ctx=new InitialContext(properties); + + // Declare the connection + ConnectionFactory conFac=(ConnectionFactory) ctx.lookup("qpidConnectionfactory"); + TopicConnection connection= (TopicConnection) conFac.createConnection(); + + // Create a session on the connection + // This session is a default choice of non-transacted and uses the auto acknowledge feature of a session. + System.out.println(CLASS + ": Creating a non-transacted, auto-acknowledged session"); + TopicSession session=connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); + + // Create a Message + TextMessage message; + System.out.println(CLASS + ": Creating a TestMessage to send to the topics"); + message=session.createTextMessage(); + + // lookup the topics usa.weather + Topic topic = (Topic)ctx.lookup("usa.weather"); + // Create a Message Publisher + System.out.println(CLASS + ": Creating a Message Publisher for topic usa.weather"); + TopicPublisher messagePublisher=session.createPublisher(topic); + publishMessages(message, messagePublisher); + + // lookup the topics usa.news + topic = (Topic)ctx.lookup("usa.news"); + // Create a Message Publisher + System.out.println(CLASS + ": Creating a Message Publisher for topic usa.news"); + messagePublisher=session.createPublisher(topic); + publishMessages(message, messagePublisher); + + // lookup the topics europe.weather + topic = (Topic)ctx.lookup("europe.weather"); + // Create a Message Publisher + System.out.println(CLASS + ": Creating a Message Publisher for topic europe.weather"); + messagePublisher=session.createPublisher(topic); + publishMessages(message, messagePublisher); + + // lookup the topics europe.news + topic = (Topic)ctx.lookup("europe.news"); + // Create a Message Publisher + System.out.println(CLASS + ": Creating a Message Publisher for topic europe.news"); + messagePublisher = session.createPublisher(topic); + publishMessages(message, messagePublisher); + + // send the final message + message=session.createTextMessage("That's all, folks!"); + topic = (Topic)ctx.lookup("control"); + // Create a Message Publisher + messagePublisher = session.createPublisher(topic); + messagePublisher + .send(message, DeliveryMode.PERSISTENT, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE); + + + // Close the connection to the broker + System.out.println(CLASS + ": Closing connection"); + connection.close(); + + // Close the JNDI reference + System.out.println(CLASS + ": Closing JNDI context"); + ctx.close(); + } + catch (Exception exp) + { + System.err.println(CLASS + ": Caught an Exception: " + exp); + } + } + + private void publishMessages(TextMessage message, TopicPublisher messagePublisher) throws JMSException + { + // Loop to publish 5 messages. + for (int i=1; i <= 6; i++) + { + message.setText("message " + i); + System.out.println(CLASS + ": Sending " + message.getText()); + messagePublisher + .send(message, DeliveryMode.PERSISTENT, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE); + } + } +} |