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. day41—JavaScript运动的停止条件

    转行学开发,代码100天——2018-04-26 前面学过了JavaScript运动的两种常用情形:匀速运动与缓冲运动.在这两种运动的处理过程中最大的区别在于速度的处理和到达目标点的处理. 即本文需要 ...

  2. sort_values()和sort_index()函数

    sort_values() 1 可用于对dateframe的多列同时进行排序 True是升序,False是降序,默认是升序 kk.sort_values(by=['listing_id','order ...

  3. [转载]OpenSSL中文手册之命令行详解(未完待续)

     声明:OpenSSL之命令行详解是根据卢队长发布在https://blog.csdn.net/as3luyuan123/article/details/16105475的系列文章整理修改而成,我自己 ...

  4. virutalenv一次行安装多个requirements里的文件

  5. 浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法

    首先请连矩阵乘法乘法都还没有了解的同学简单看一下这篇博客: https://blog.csdn.net/weixin_44049566/article/details/88945949 首先直接暴力求 ...

  6. Windows操作系统命令整理-Win7

    注册表(Windows95以后Windows系统版本,windows server中regedit和regedit32合并为一个新的编辑器,名称仍然是regedit) HKEY_LOCAL_MACHI ...

  7. tbox新增stackless协程支持

    tbox之前提供的stackfull协程库,虽然切换效率已经非常高了,但是由于每个协程都需要维护一个独立的堆栈, 内存空间利用率不是很高,在并发量非常大的时候,内存使用量会相当大. 之前考虑过采用st ...

  8. 0基础入门 docker 部署 各种 Prometheus 案例 - 程序员学点xx 总集篇

    目录 大家好, 学点xx 系列也推出一段时间了.虽然 yann 能力有限,但还是收到了很多鼓励与赞赏.对这个系列 yann 还是很喜欢的,特别是 Prometheus 篇,在期间经历公众号 100 篇 ...

  9. C#for(;;)是什么意思?

    一,正常for循环我们都接触过很多,如下,我们都理解 ,,,,, }; ; i < ; i++) { Console.WriteLine(tt[i]); } 二,但是for(;;)实际上它的含义 ...

  10. 360CTF Re wp

    这比赛唯一的一道Re