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. 在vue中如何引jquer

    最近学习vue,习惯性的通过<script>标签引入jquery,写完后报错才想起来,这种方式在vue是不适用的. 1:因为已经安装了vue脚手架,所以需要在webpack中全局引入jqu ...

  2. 小白学数据分析--留存率分析_I次日留存率突然下降了50%

    小白学数据分析--留存率分析_I次日留存率突然下降了50% 最近在做留存分析时,遇到了不少的情况,也经常会有人问我,为什么我的游戏突然次日留存率降了一半.如果留存率是单单作为一个简单的指标的话,那对你 ...

  3. 当我写下Map<String,Object> map = new HashMap<>() https://www.jianshu.com/p/6b2e350e99be

    当我写下Map<String,Object> map = new HashMap<>();我到底在写什么? 我什么时候会写HashMap? 一个函数同时需要返回 多种 状态的情 ...

  4. linux查找所有文件中某个字符串

    查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xar ...

  5. sqluldr2 oracle直接导出数据为文本的小工具使用

    近期客户有需求,导出某些审计数据,供审计人进行核查,只能导出成文本或excel格式的进行查看,这里我们使用sqluldr2工具进行相关数据的导出. oracle导出数据为文本格式比较麻烦,sqluld ...

  6. [13期]mysql-root全手工注入写马实例实战

    回显方便的小工具

  7. 为什么说 Babel 将推动 JavaScript 的发展【转】

    Babel是一个转换编译器,它能将 ES6 转换成可以在浏览器中运行的代码.Babel 由来自澳大利亚的开发者Sebastian McKenzie创建.他的目标是使 Babel 可以处理 ES6 的所 ...

  8. [Python3] 017 字典的内置方法

    目录 1. Python3 中如何查看 dict() 的内置方法 2. 少废话,上例子 (1) 清理大师 clear() (2) 拷贝君 copy() (3) get(key, default=Non ...

  9. S5PV210刷机

    一. 刷机初识 1.1. 什么是刷机 a. 刷机就是通过各种手段把相应镜像烧录到设备中,让设备可以运行起来.常见的刷机如:安卓刷机,QT刷机 1.2. S5PV210刷机镜像 1.2.1. 刷安卓所需 ...

  10. Django之模板(T)

    一, 常用语法 Django模板中只需要记两种特殊符号: {{ }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 一, 变量 语法: {{ 变量名 }} ...