ActiveMQ点对点的发送和接收

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

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

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

ActiveMQ点对点的发送和接收第1张

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);
        }
    }
}

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

ActiveMQ点对点的发送和接收第2张

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

ActiveMQ点对点的发送和接收第3张

消息详情:

ActiveMQ点对点的发送和接收第4张

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();
        }
    }
}
控制台输出:
ActiveMQ点对点的发送和接收第5张

免责声明:文章转载自《ActiveMQ点对点的发送和接收》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇web项目引入extjs小例子JVM总结(二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

kaptcha Java验证码

原文:http://www.cnblogs.com/chizizhixin/p/5311619.html 在项目中经常会使用验证码,kaptcha 就一个非常不错的开源框架,分享下自己在项目中的使用: 1、首先下载kaptcha 把kaptcha-2.3.2.jar包放在lib下 2、登陆页面初始化 document.getElementById("myc...

Flask-爱家租房项目ihome-01-项目框架的搭建

项目介绍 该项目是一个简易版的租房平台项目, 房东可以在平台上发布自己的房源, 房客可以搜索心仪的房源并进行一定时间的租赁. 主要功能模块包括用户模块(注册/登录/个人信息), 租房首页, 房屋列表页,房屋详情页, 房屋预订页, 支付宝支付等. 该项目属于不完全的前后端分离, 前端使用的是html+css+jquery, 后端使用的是flask框架, 后端...

rabbitmq、kafka、activemq、rocketmq之间对比,区别

rabbitmq、kafka、activemq、rocketmq之间对比,区别 支持原创  转自 https://www.cnblogs.com/williamjie/p/9481780.html 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然...

Python自动化学习笔记(1)认识接口测试以及postman、Charles工具简单应用

一、什么是接口? 1)接口主要负责前端(包含客户端)与服务端进行数据通信的一种数据交互方式。最常见的接口协议是HTTP接口,接口会返回通用的数据类型(html/xml/json)。 接口有多种请求方式,最常见的为get和post请求。 2)get请求和post请求区别 get请求多用于从服务端获取数据,通常只需要通过浏览器直接访问,使用"?"来传入参数,使...

ORACLE查询进程,并杀死

用于存放常用SQL --查询主键在哪一列 set pagesize 20 --设置页大小 set linesize 120 --设置行大小 col COLUMN_NAME for a20 --设置字段显示长度 col TABLE_NAME for a20 col OWNER for a20 col CONSTRAINT_NAME for a20 sel...

使用Session.Abandon()注意

部分引用自: http://www.cnblogs.com/jintan/archive/2007/05/10/741175.html 最近在修改一个项目的时候碰到一个问题,在登录时使用Session.Abandon();Session.Clean();Session["user"] = "admin";然后用Page.Redirect("xxx.aspx...