zoukankan      html  css  js  c++  java
  • ActiveMQ点对点的发送和接收

    最近在工作中用到了ActiveMQ的点对点模式,在此用一个范例简单描述下使用过程。

    1.首先在工程导入ActiveMQ的jar包,此jar包在下载的ActiveMQ资源里,这里用的是ActiveMQ版本是5.9。

    2.编写消息发送者

    package com.cool.jms;
    
    import org.apache.activemq.ActiveMQConnection;
    import org.apache.activemq.ActiveMQConnectionFactory;
    
    import javax.jms.*;
    
    /**
     *  消息生产者
     * Created by hejin on 2017/4/12 0012.
     */
    public class JMSProducer {
    
        //默认连接用户名
        private static final String USER= ActiveMQConnection.DEFAULT_USER;
        //默认连接密码
        private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;
        //默认连接地址
        private static final String URL=ActiveMQConnection.DEFAULT_BROKER_URL;
        //发送的消息数量
        private static final int SENDNUM=10;
    
        public static void main(String[] args) throws JMSException {
            //连接工厂
            ConnectionFactory connectionFactory;
            //连接
            Connection connection;
            //会话(接收或发送消息的线程)
            Session session;
            //消息目的地
            Destination destination;
            //消息生产者
            MessageProducer messageProducer;
            //实例化连接工厂
            connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USER,JMSProducer.PASSWORD,JMSProducer.URL);
    
    
            try {
                //通过连接工厂获取连接
                connection = connectionFactory.createConnection();
                //启动连接
                connection.start();
                //创建session
                session=connection.createSession(true,Session.AUTO_ACKNOWLEDGE);
                //创建一个名称为HelloWorld的消息队列
                destination= session.createQueue("HelloWorld");
                //创建消息生产者
                messageProducer = session.createProducer(destination);
                //发送消息
                sendMessage(session,messageProducer);
                //提交
                session.commit();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
        public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{
            for (int i=0;i<JMSProducer.SENDNUM;i++){
                //创建需要发送的消息
                TextMessage message = session.createTextMessage("ActiveMQ发送消息:" + i);
                System.out.println("ActiveMQ发送消息:"+i);
                messageProducer.send(message);
            }
        }
    }
    

      

    执行上面的代码控制台输出

    在浏览器访问MQ的页面:http://127.0.0.1:8161/admin/queues.jsp,可以查看发送的队列的消息信息。

    消息详情:

    3.编写消费package com.cool.jms;

    import org.apache.activemq.ActiveMQConnection;
    import org.apache.activemq.ActiveMQConnectionFactory;
    
    import javax.jms.*;
    
    /**
     * Created by hejin on 2017/4/12 0012.
     */
    public class JMSConsumer {
        //默认连接名称
        private static  String USER= ActiveMQConnection.DEFAULT_USER;
        //默认密码
        private static  String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;
        //默认连接地址
        private static String URL=ActiveMQConnection.DEFAULT_BROKER_URL;
    
        public static void main(String[] args) {
           //连接工厂
            ConnectionFactory connectionFactory;
            //连接
            Connection connection;
            //会话 接收或发送消息的进程
            Session session;
            //消息的目的地
            Destination destination;
            //消息的消费者
            MessageConsumer messageConsumer;
    
            //实例化连接工厂
            connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USER,JMSConsumer.PASSWORD,JMSConsumer.URL);
    
            //IDEA快速捕获异常快捷键:Ctrl+Alt+T
            try {
                //通过连接工厂获取连接
                connection=connectionFactory.createConnection();
                //启动连接
                connection.start();
                //创建session
                session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
                //创建一个HelloWorld的消息队列
                destination=session.createQueue("HelloWorld");
                //创建消息消费者
                messageConsumer = session.createConsumer(destination);
    
                while(true){
                    TextMessage message = (TextMessage) messageConsumer.receive(100000);
                    if(message!=null){
                        System.out.println("收到的消息:"+message.getText());
                    }else{
                        break;
                    }
                }
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }

    控制台输出:


  • 相关阅读:
    MVC提交时验证
    远程计划任务管理
    教你一步一步部署.net免费空间OpenShift系列之四------绑定域名、使用CDN加速
    启用IIS7报错功能
    教你一步一步部署.net免费空间OpenShift系列之三------上传ASP.net程序
    教你一步一步部署.net免费空间OpenShift系列之二------创建应用
    Spring SimpleJdbcOperations 批量更新
    c#获取已安装的所有NET版本
    (转载)数据库效率提高的方案
    linux两台服务器之间文件/文件夹拷贝
  • 原文地址:https://www.cnblogs.com/againn/p/6743510.html
Copyright © 2011-2022 走看看