1.安装ActiveMQ服务器(略)

2.启动ActiveMQ,浏览器访问8161端口,默认账号admin/admin

3. 生产者代码

package test001;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * @Created by zhengqinfeng
 * @Description :
 * @Date : created in 23:44 2018/5/14
 */
public class ProducerMQ {
    public static void main(String[] args) throws JMSException {
        //创建MQ工厂
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
        //创建连接
        Connection connection = factory.createConnection();
        //启动连接
        connection.start();
        //创建会话工厂, false:表示不以事务方式进行提交; Session.AUTO_ACKNOWLEDGE 表示自动签收
//        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //Session.CLIENT_ACKNOWLEDGE:手动签收
        Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
        //创建队列
        Queue testMQ = session.createQueue("testMQ1");
        //创建生产者
        MessageProducer producer = session.createProducer(testMQ);
        //消息不持久化
//        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        //持久化消息
        //producer.setDeliveryMode(DeliveryMode.PERSISTENT);
        for (int i = 0; i <= 10; i++) {
            System.out.println("###########我是生产者:"+i+"###############");
            sendMsg(session, producer, "我是生产者:" + i);
        }
            System.out.println("###########发送消息完毕###############");

}

private static void  sendMsg(Session session,MessageProducer producer,String i) throws JMSException {
        TextMessage textMessage = session.createTextMessage("hello activeMQ " + i);
        producer.send(textMessage);
    }
}

4.消费者代码

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * @Created by zhengqinfeng
 * @Description : 消费者
 * @Date : created in 12:47 2018/5/15
 */
public class ConsumerMQ {
    public static void main(String[] args) throws JMSException {
        System.out.println("消费者1");
        //创建MQ工厂
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
        //创建连接
        Connection connection = factory.createConnection();
        //启动连接
        connection.start();
        //创建会话工厂  AUTO_ACKNOWLEDGE:自动签收
//        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        // 手动签收
        Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
        //创建队列
        Queue testMQ = session.createQueue("testMQ1");
        //创建生产者
        MessageConsumer consumer = session.createConsumer(testMQ);

//第一种消费消息的方式
//        while (true) {
//            //获取消息
//            TextMessage message = (TextMessage) consumer.receive();
//            if (message != null) {
//                String text = message.getText();
//                System.out.println("消费者获取消息,text:" + text);
//                //手动签收,如果没有手动签收,消息还是会存在于队列中的(当然这是在Session.CLIENT_ACKNOWLEDGE模式下)
//                message.acknowledge();
//            } else {
//                break;
//            }
//        }
//        System.out.println("消费者获取消息完毕>>>>>>>>>>>>>>>>>>>..");

//第二种消费消息的方式
        consumer.setMessageListener(new MessageListener() {
            @Override
            public void onMessage(Message message) {
                TextMessage m = (TextMessage) message;
                try {
                    System.out.println("消费者获取消息:"+m.getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

  启动消费者代码,然后修改System.out.println("消费者1")为System.out.println("消费者2"),再次启动。模拟测试两个消费者

启动生产者

再查看消费者1:

查看消费者2:

结论:消费1和消费者均摊消费testMQ1这个队列中的消息。

ActiveMQ点对点模式的更多相关文章

  1. springBoot配置activeMq点对点模式消费信息以及独占模式消费如何设置

    1.在pom文件中引入对应jar包 <!--activeMQ start--> <dependency> <groupId>org.springframework. ...

  2. JMS-activeMq点对点模式

    上一篇对JMS进行介绍了一下,接下来总结一下activemq点对点模式以及订阅发布模式. (1)下载:首先到官网http://activemq.apache.org下载activemq (2)运行:解 ...

  3. ActiveMQ入门系列二:入门代码实例(点对点模式)

    在上一篇<ActiveMQ入门系列一:认识并安装ActiveMQ(Windows下)>中,大致介绍了ActiveMQ和一些概念,并下载.安装.启动他,还访问了他的控制台页面. 这篇,就用代 ...

  4. ActiveMQ点对点的消息发送案例

    公司最近会用MQ对某些业务进行处理,所以,这次我下载了apache-activemq-5.12.0-bin把玩下. 基于练习方便需要,使用Windows的版本. 参考的优秀文章: activemq的几 ...

  5. activeMQ点对点

    摘要: ActiveMQ 点对点消息 Point-to-Point 是一对一 创建消息生产者 /**  * 点对点消息生产者  *   * @author Edward  *   */ public  ...

  6. ActiveMQ发布-订阅消息模式(同点对点模式的区别)

    点对点与发布订阅最初是由JMS定义的.这两种模式主要区别或解决的问题就是发送到队列的消息能否重复消费(多订阅) 点对点: 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费 ...

  7. SpringBoot2.0之整合ActiveMQ(点对点模式)

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. ActiveMQ订阅模式持久化实现

    实现步骤:1.配置发送xml,applicationContext-send.xml <?xml version="1.0" encoding="UTF-8&quo ...

  9. activeMQ队列模式和主题模式的Java实现

    一.队列模式 生产者 import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destina ...

随机推荐

  1. python-判断一个字符串是不是小数

    ''' 1.判断小数点个数是不是1 count 2.分割,判断小数点右边是不是整数 3.判断小数点左边 1.是整数is_digit 2.如果是负整数,按照'-'符号右边的是不会整数 ''' def i ...

  2. 用python进行月份加减的函数

    import math def add_month(datamonth, num): """ 月份加减函数,返回字符串类型 :param datamonth: 时间(20 ...

  3. js 创建对象的方法

    <script> //1.字面量语法 var rectangle1 = {}; rectangle1.name="mindong"; rectangle1.width ...

  4. OpenResty json 删除转义符

    OpenResty 中删除 json 中的转义符 cjson 在 encode 时  “/” 会自动添加转义符 “\”: 在 decode 时也会自动将转义符去掉.工作中有个特殊需求,需要手工删除转义 ...

  5. 【ABAP系列】SAP 获取工单和工序的状态

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 获取工单和工序的状态   ...

  6. vue打包详情

    说明 本文代码中的配置基于vue-cli2 需求 在实际开发中我们可能有测试环境一套请求API 和 正式环境一套API,尤其是两个环境的域名不同时,就需要我们分环境打不同配置的包 了解 webpack ...

  7. hdu-4185.loiol_skimming(简单二分匹配模型)

    /************************************************************************* > File Name: hdu-4185. ...

  8. Codeforces 691E题解 DP+矩阵快速幂

    题面 传送门:http://codeforces.com/problemset/problem/691/E E. Xor-sequences time limit per test3 seconds ...

  9. CentOS 下 redis 安装与配置

    CentOS 下 redis 安装与配置   1.到官网上找到合适版本下载解压安装 [root@java src]# wget -c http://redis.googlecode.com/files ...

  10. 一个完整的http请求响应过程

    一. HTTP请求和响应步骤   图片来自:理解Http请求与响应 以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的. 二.TCP/IP协 ...