博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jms学习篇二:ActiveMQ
阅读量:6520 次
发布时间:2019-06-24

本文共 13705 字,大约阅读时间需要 45 分钟。

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线

安装

1》下载:到http://activemq.apache.org/download.html 下载最新版本, 解压

2》配置环境变量:path:D:\Development Tools\apache-activemq-5.11.1\bin

3》启动测试bin\activemq.bat(activemq) 启动

4》服务启动地址:http://192.168.0.107:8161/admin/ (前面为本地电脑IP地址)

    用户名/密码: admin/admin

 

1.点对点

消息生产者
package com.java1234.activemq;import javax.jms.Connection;import javax.jms.ConnectionFactory;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;/** * 消息生产者 * @author Administrator * */public class JMSProducer {    private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名    private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码    private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址    private static final int SENDNUM=10; // 发送的消息数量        public static void main(String[] args) {                ConnectionFactory connectionFactory; // 连接工厂        Connection connection = null; // 连接        Session session; // 会话 接受或者发送消息的线程        Destination destination; // 消息的目的地        MessageProducer messageProducer; // 消息生产者                // 实例化连接工厂        connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);                try {            connection=connectionFactory.createConnection(); // 通过连接工厂获取连接            connection.start(); // 启动连接            session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 创建Session            destination=session.createQueue("FirstQueue1"); // 创建消息队列            messageProducer=session.createProducer(destination); // 创建消息生产者            sendMessage(session, messageProducer); // 发送消息            session.commit();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally{            if(connection!=null){                try {                    connection.close();                } catch (JMSException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }        /**     * 发送消息     * @param session     * @param messageProducer     * @throws Exception     */    public static void sendMessage(Session session,MessageProducer messageProducer)throws Exception{        for(int i=0;i
View Code
消息消费者
package com.java1234.activemq;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;/** * 消息消费者 * @author Administrator * */public class JMSConsumer {    private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名    private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码    private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址        public static void main(String[] args) {        ConnectionFactory connectionFactory; // 连接工厂        Connection connection = null; // 连接        Session session; // 会话 接受或者发送消息的线程        Destination destination; // 消息的目的地        MessageConsumer messageConsumer; // 消息的消费者                // 实例化连接工厂        connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);                        try {            connection=connectionFactory.createConnection();  // 通过连接工厂获取连接            connection.start(); // 启动连接            session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session            destination=session.createQueue("FirstQueue1");  // 创建连接的消息队列            messageConsumer=session.createConsumer(destination); // 创建消息消费者            while(true){                TextMessage textMessage=(TextMessage)messageConsumer.receive(100000);                if(textMessage!=null){                    System.out.println("收到的消息:"+textMessage.getText());                }else{                    break;                }            }        } catch (JMSException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }     }}
View Code
消息消费者2(监听模式)
package com.java1234.activemq;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;/** * 消息监听 * @author Administrator * */public class Listener implements MessageListener{    @Override    public void onMessage(Message message) {        // TODO Auto-generated method stub        try {            System.out.println("收到的消息:"+((TextMessage)message).getText());        } catch (JMSException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
View Code
package com.java1234.activemq;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;/** * 消息消费者 * @author Administrator * */public class JMSConsumer2 {    private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名    private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码    private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址        public static void main(String[] args) {        ConnectionFactory connectionFactory; // 连接工厂        Connection connection = null; // 连接        Session session; // 会话 接受或者发送消息的线程        Destination destination; // 消息的目的地        MessageConsumer messageConsumer; // 消息的消费者                // 实例化连接工厂        connectionFactory=new ActiveMQConnectionFactory(JMSConsumer2.USERNAME, JMSConsumer2.PASSWORD, JMSConsumer2.BROKEURL);                        try {            connection=connectionFactory.createConnection();  // 通过连接工厂获取连接            connection.start(); // 启动连接            session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session            destination=session.createQueue("FirstQueue1");  // 创建连接的消息队列            messageConsumer=session.createConsumer(destination); // 创建消息消费者            messageConsumer.setMessageListener(new Listener()); // 注册消息监听        } catch (JMSException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }     }}
View Code

 

2.订阅/发布

消息发布者

package com.java1234.activemq2;import javax.jms.Connection;import javax.jms.ConnectionFactory;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;/** * 消息生产者-消息发布者 * @author Administrator * */public class JMSProducer {    private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名    private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码    private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址    private static final int SENDNUM=10; // 发送的消息数量        public static void main(String[] args) {                ConnectionFactory connectionFactory; // 连接工厂        Connection connection = null; // 连接        Session session; // 会话 接受或者发送消息的线程        Destination destination; // 消息的目的地        MessageProducer messageProducer; // 消息生产者                // 实例化连接工厂        connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);                try {            connection=connectionFactory.createConnection(); // 通过连接工厂获取连接            connection.start(); // 启动连接            session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 创建Session            // destination=session.createQueue("FirstQueue1"); // 创建消息队列            destination=session.createTopic("FirstTopic1");            messageProducer=session.createProducer(destination); // 创建消息生产者            sendMessage(session, messageProducer); // 发送消息            session.commit();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally{            if(connection!=null){                try {                    connection.close();                } catch (JMSException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }        /**     * 发送消息     * @param session     * @param messageProducer     * @throws Exception     */    public static void sendMessage(Session session,MessageProducer messageProducer)throws Exception{        for(int i=0;i
View Code

订阅者1

package com.java1234.activemq2;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Session;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;/** * 消息消费者-消息订阅者一 * @author Administrator * */public class JMSConsumer {    private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名    private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码    private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址        public static void main(String[] args) {        ConnectionFactory connectionFactory; // 连接工厂        Connection connection = null; // 连接        Session session; // 会话 接受或者发送消息的线程        Destination destination; // 消息的目的地        MessageConsumer messageConsumer; // 消息的消费者                // 实例化连接工厂        connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);                        try {            connection=connectionFactory.createConnection();  // 通过连接工厂获取连接            connection.start(); // 启动连接            session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session            // destination=session.createQueue("FirstQueue1");  // 创建连接的消息队列            destination=session.createTopic("FirstTopic1");            messageConsumer=session.createConsumer(destination); // 创建消息消费者            messageConsumer.setMessageListener(new Listener()); // 注册消息监听        } catch (JMSException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }     }}package com.java1234.activemq2;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;/** * 消息监听-订阅者一 * @author Administrator * */public class Listener implements MessageListener{    @Override    public void onMessage(Message message) {        // TODO Auto-generated method stub        try {            System.out.println("订阅者一收到的消息:"+((TextMessage)message).getText());        } catch (JMSException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
View Code

订阅者2

package com.java1234.activemq2;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Session;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;/** * 消息消费者-消息订阅者二 * @author Administrator * */public class JMSConsumer2 {    private static final String USERNAME=ActiveMQConnection.DEFAULT_USER; // 默认的连接用户名    private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; // 默认的连接密码    private static final String BROKEURL=ActiveMQConnection.DEFAULT_BROKER_URL; // 默认的连接地址        public static void main(String[] args) {        ConnectionFactory connectionFactory; // 连接工厂        Connection connection = null; // 连接        Session session; // 会话 接受或者发送消息的线程        Destination destination; // 消息的目的地        MessageConsumer messageConsumer; // 消息的消费者                // 实例化连接工厂        connectionFactory=new ActiveMQConnectionFactory(JMSConsumer2.USERNAME, JMSConsumer2.PASSWORD, JMSConsumer2.BROKEURL);                        try {            connection=connectionFactory.createConnection();  // 通过连接工厂获取连接            connection.start(); // 启动连接            session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建Session            // destination=session.createQueue("FirstQueue1");  // 创建连接的消息队列            destination=session.createTopic("FirstTopic1");            messageConsumer=session.createConsumer(destination); // 创建消息消费者            messageConsumer.setMessageListener(new Listener2()); // 注册消息监听        } catch (JMSException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }     }}package com.java1234.activemq2;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;/** * 消息监听-订阅者二 * @author Administrator * */public class Listener2 implements MessageListener{    @Override    public void onMessage(Message message) {        // TODO Auto-generated method stub        try {            System.out.println("订阅者二收到的消息:"+((TextMessage)message).getText());        } catch (JMSException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
View Code

 

转载于:https://www.cnblogs.com/brant/p/5907576.html

你可能感兴趣的文章
unity3d平铺图片
查看>>
linux之SQL语句简明教程---CONCATENATE
查看>>
CentOS下面定时删除N天前的文件
查看>>
php 安装ffmpeg-php
查看>>
Tomcat安全加固配置手册
查看>>
拨×××后不影响正常上网
查看>>
linux挂载windows共享文件夹的方法
查看>>
zabbix优化记一次惨痛的zabbix数据库优化
查看>>
每日学习 SQL基础查询 + 重建SCCM
查看>>
composer
查看>>
Centos6.6下SVN配合Apache
查看>>
Why download Java?
查看>>
bash脚本编程
查看>>
后缀数组 TYVJ P1860 后缀数组
查看>>
我的友情链接
查看>>
Auto Layout简单应用——以编码的方式实现Auto Layout自动布局(一)
查看>>
VMware 5 里面的 VUSB
查看>>
云存储以及网络存储加速
查看>>
TCL通讯:云计算让数据中心“动”起来
查看>>
redis sentinel 集群
查看>>