最近由于公司项目需要,开始学习JMS,用的是ActiveMQ。由于这方面网上的例子不是很多,而且有的也不完整。于是经过几天的摸索学习,写了一个简单的小例子,现在贴出来与大家分享。
ProducerTool.java用于发送消息:
java 代码
- package homework;
-
- import javax.jms.Connection;
- import javax.jms.DeliveryMode;
- import javax.jms.Destination;
- import javax.jms.JMSException;
- import javax.jms.MessageProducer;
- import javax.jms.Session;
- import javax.jms.TextMessage;
-
- import org.apache.activemq.ActiveMQConnection;
- import org.apache.activemq.ActiveMQConnectionFactory;
-
- public class ProducerTool {
-
- private String user = ActiveMQConnection.DEFAULT_USER;
-
- private String password = ActiveMQConnection.DEFAULT_PASSWORD;
-
- private String url = ActiveMQConnection.DEFAULT_BROKER_URL;
-
- private String subject = "TOOL.DEFAULT";
-
- private Destination destination = null;
-
- private Connection connection = null;
-
- private Session session = null;
-
- private MessageProducer producer = null;
-
-
- private void initialize() throws JMSException, Exception {
- ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
- user, password, url);
- connection = connectionFactory.createConnection();
- session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- destination = session.createQueue(subject);
- producer = session.createProducer(destination);
- producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
- }
-
-
- public void produceMessage(String message) throws JMSException, Exception {
- initialize();
- TextMessage msg = session.createTextMessage(message);
- connection.start();
- System.out.println("Producer:->Sending message: " + message);
- producer.send(msg);
- System.out.println("Producer:->Message sent complete!");
- }
-
-
- public void close() throws JMSException {
- System.out.println("Producer:->Closing connection");
- if (producer != null)
- producer.close();
- if (session != null)
- session.close();
- if (connection != null)
- connection.close();
- }
- }
ConsumerTool.java用于接受消息,我用的是基于消息监听的机制,需要实现MessageListener接口,这个接口有个onMessage方法,当接受到消息的时候会自动调用这个函数对消息进行处理。
java 代码
- package homework;
-
- import javax.jms.Connection;
- import javax.jms.Destination;
- import javax.jms.JMSException;
- import javax.jms.MessageConsumer;
- import javax.jms.Session;
- import javax.jms.MessageListener;
- import javax.jms.Message;
- import javax.jms.TextMessage;
-
- import org.apache.activemq.ActiveMQConnection;
- import org.apache.activemq.ActiveMQConnectionFactory;
-
- public class ConsumerTool implements MessageListener {
-
- private String user = ActiveMQConnection.DEFAULT_USER;
-
- private String password = ActiveMQConnection.DEFAULT_PASSWORD;
-
- private String url = ActiveMQConnection.DEFAULT_BROKER_URL;
-
- private String subject = "TOOL.DEFAULT";
-
- private Destination destination = null;
-
- private Connection connection = null;
-
- private Session session = null;
-
- private MessageConsumer consumer = null;
-
-
- private void initialize() throws JMSException, Exception {
- ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
- user, password, url);
- connection = connectionFactory.createConnection();
- session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- destination = session.createQueue(subject);
- consumer = session.createConsumer(destination);
-
- }
-
-
- public void consumeMessage() throws JMSException, Exception {
- initialize();
- connection.start();
-
- System.out.println("Consumer:->Begin listening...");
-
- consumer.setMessageListener(this);
-
- }
-
-
- public void close() throws JMSException {
- System.out.println("Consumer:->Closing connection");
- if (consumer != null)
- consumer.close();
- if (session != null)
- session.close();
- if (connection != null)
- connection.close();
- }
-
-
- public void onMessage(Message message) {
- try {
- if (message instanceof TextMessage) {
- TextMessage txtMsg = (TextMessage) message;
- String msg = txtMsg.getText();
- System.out.println("Consumer:->Received: " + msg);
- } else {
- System.out.println("Consumer:->Received: " + message);
- }
- } catch (JMSException e) {
-
- e.printStackTrace();
- }
- }
- }
如果想主动的去接受消息,而不用消息监听的话,把consumer.setMessageListener(this)改为Message message = consumer.receive(),手动去调用MessageConsumer的receive方法即可。
下面是测试类Test.java:
java 代码
- package homework;
-
- import javax.jms.JMSException;
-
- public class Test {
-
-
-
-
- public static void main(String[] args) throws JMSException, Exception {
-
- ConsumerTool consumer = new ConsumerTool();
- ProducerTool producer = new ProducerTool();
-
- consumer.consumeMessage();
-
-
- Thread.sleep(500);
- producer.produceMessage("Hello, world!");
- producer.close();
-
-
- Thread.sleep(500);
- consumer.close();
- }
- }
以上就是我学习ActiveMQ之后写的一个简单的例子,希望对你有帮助,如果有什么错误还请指正。
分享到:
相关推荐
activemq+spring demo 简单示例。安装activemq 启动,运行Test
ActiveMQ是一种开源的,实现了JMS规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。
这是一个activemq应用的简单示例代码,使用maven搭建的.适合刚刚开始学习activemq的程序员
activemq+spring demo 简单示例
这是一个关于activeMQ如何使用的简单案例,使用时可以套用
使用activeMQ实现生产者消费者
activeMQ消息中间件,简单的的生产者和消费者测试消息传递。
ActiveMQ简单入门示例,采用点对点的通信方式
ActiveMQ消息中间件,C#创建生产者与消费者实现简单通讯示例,代码有详细注释。
简单示例如何 使用
使用ActiveMQ类使用官方例程编写简单的例子,带有头文件和类库,方便初学者
由于我在windows下开发GUI,比较关心C++和C#,其中C#的ActiveMQ很简单,Apache提供NMS(.Net Messaging Service)支持.Net开发,只需如下几个步骤即能建立简单的实现。C++的应用相对麻烦些,后面会有文章介绍。 1、...
包含两个示例中,第一个示例须要运行单独MQ(Apache Active MQ 5.15.0以下的版本)。第二个示例不需要运行单独的MQ。 有兴趣的朋友可以看看。两个示例运用的不同的方法去实现的。
springboot整合activemq完整示例,以及mq界面简单配置。涵点对点消息模式、Top订阅模式
ActiveMQ 简单应用和一些具体要点示例代码。
activemq-jms-spring 关于ActiveMQ,这是一个简单的示例。
服务访问要求Apache ActiveMQ 5 ( ) Java 8 Maven 3怎么跑启动 ActiveMQ 代理(如有必要,在setup之前进行引导) ~/ $ activemq setup ~/ $ activemq start使工件可用于 Maven 依赖项解析 ~/service-access $ mvn ...
您需要配置一个名为 BATCH_CONF 的环境变量,其中包含 conf 文件在本地计算机上的路径。 就像是: $BATCH_CONF={$LOCAL_WORKSPACE}/batch/batch-conf/wc 设置 ActiveMQ 您将需要来自 Apache Software Foundation ...
这个非常简单的例子展示了如何设置 ActiveMQ、Camel 并从两个参与者发送 Ping/Pong 消息。 一个演员是 PingGenerator,它向 Pong 演员发送一个案例类。 PingGenerator 有一个 PingProducer,它使用请求/响应消息...
这个Demo程序演示了如何使用SpringBoot来构建一个最简单的基于ActiveMQ的JMS程序。