二、Java之activeMQ的使用

本文基于上一篇:activeMQ服务安装,将展示如何使用activeMQ;

一、简介

上一篇我们了解了如何创建和启动一个activeMQ消息服务。那我们应当要如何去使用这个服务呢?其实也就是我们需要学习怎么去写客户端的代码。

1)activeMQ的客户端需要引入依赖的支持:

<dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-all</artifactId>
        <version>5.15.3</version>
</dependency>

2)activeMQ是根据JMS规范实现的,而JMS规范定义了它的架构模型,我们可以在文档里面查看:https://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html

根据文档提供的构建模型,我们可以罗列出客户端代码编写的流程大体如下:

2-1、创建ConnectionFactory

2-2、创建Connection

2-3、创建Session

2-4、创建Producer或Consumers

2-5、发送消息或消息监听

其实我们可以简单理解为:将客户端与服务端连接,而后进行消息发送或者消息监听

二、点对点/发布订阅

在具体示例代码之前,我们先了解两个概念

1)点对点:顾名思义,其实就是一对一的消息发送,每一条消息只能有一个消费者;

2)发布订阅:即一条消息发布出去,可以有多个消费者来进行消费,一对多的关系;

三、示例代码

下面将以点对对的方式作为示例代码:

生产者

public class ActiveMQProducer {

    static String brokerUrl = "tcp://127.0.0.1:61616";
    static String userName = "admin";
    static String password = "admin";

    public static void main(String[] args) throws JMSException {
        // 创建connection工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, password, brokerUrl);
        // 创建connection连接
        Connection connection = connectionFactory.createConnection();
        // 创建session,开启事务,消息自动确认
        Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
        // 创建消息体
        Message message = session.createTextMessage("hello jms");
        // 创建队列
        Destination destination = session.createQueue("queue1");
        // 创建生产者
        MessageProducer messageProducer = session.createProducer(destination);
        // 发送消息
        messageProducer.send(message);
        // 事务提交
        session.commit();
        // 关闭连接
        connection.close();
        System.out.println("发送完毕...");
    }
}

消费者

public class ActiveMQReceiver {

    static String brokerUrl = "tcp://127.0.0.1:61616";
    static String userName = "admin";
    static String password = "admin";
static void createReceiver() throws JMSException {// 创建connection工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, password, brokerUrl);
        // 创建connection连接
        Connection connection = connectionFactory.createConnection();
        connection.start();
        // 创建session,开启事务,消息自动确认
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        // 创建队列
        Destination destination = session.createQueue("queue1");
        // 创建生产者
        MessageConsumer messageConsumer = session.createConsumer(destination);
        messageConsumer.setMessageListener(new ReceiveListener());
        // 接受消息
//        Message message = messageConsumer.receive(1000);
        // 关闭连接
//        connection.close();
        System.out.println("接收监听...");
    }

    public static void main(String[] args){
        try {
            createReceiver();
            createReceiver();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

class ReceiveListener implements MessageListener{

    @Override
    public void onMessage(Message message) {
        try {
            TextMessage textMessage = (TextMessage)message;
            System.out.println(textMessage.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

注意:这里使用的是实现MessageListener的方式来监听消息,如代码注释部分,我们也可以用调用方法来接收,不过推荐使用监听的方式

参考文档:

JMS文档:https://docs.oracle.com/javaee/6/tutorial/doc/bncdx.html#bnceb

JavaEE JMS的API:http://tool.oschina.net/apidocs/apidoc?api=javaEE6

activeMQ文档:http://activemq.apache.org/getting-started.html

activeMQ的API文档:http://activemq.apache.org/maven/apidocs/index.html

原文地址:https://www.cnblogs.com/lay2017/p/8945301.html

时间: 2024-09-30 07:03:20

二、Java之activeMQ的使用的相关文章

20135234马启扬 实验二 Java面向对象程序设计

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1352  姓名:马启扬  学号:20135234 成绩:             指导教师:娄嘉鹏    实验日期:2015.5.7 实验密级:         预习程度:         实验时间:15:50--22:50 仪器组次:34         必修/选修: 选修            实验序号:02 实验名称:实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和T

Java学习(二)--java概述

一 发展 看了java的发展史,发现他的发展充满了戏剧性.它没有经过精心的策划.制作,但是它的产生却具有了划时代的意义,一切的形成都好像顺利成章,又充满了传奇. 1990年,sun公司准备为下一代只能家电编写通用控制系统.因为C++的api存在的问题,创造了一种新的语言oak. 1992年,在其竞争机顶盒平台倡议中,因其过分给用户控制权而落选.否极泰来,在这里得到了最好的验证,再坚持一点点.下一个一点点就是转机. 1994年,互联网和浏览器的出现给oak带了希望.进过调整后,着眼于浏览器方法.更

20145237 实验二 “Java面向对象程序设计”

20145237 实验二 “Java面向对象程序设计” 实验内容 • 理解并掌握面向对象三要素:封装.继承.多态 • 初步掌握UML建模 • 熟悉S.O.L.I.D原则 • 使用TDD设计实现复数类 实验步骤 单元测试 •1.三种代码: • 伪代码: 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“及格” 如果成绩在70与80之间,转成“中等” 如果成绩在80与90之间,转成“良好” 如果成绩在90与100之间,转成“优秀” 其他,转成“错误” 产品代码: 3

20145311实验二 &quot;Java面向对象程序设计&quot;

20145311实验二 "Java面向对象程序设计" 程序设计过程 实验内容 使用单元测试.TDD的方式设计实现复数类 Complex 编写代码: 1.首先设计实现复数类 Complex,复数类 Complex的方法设计有:复数类的定义.复数类输出的形式,复数的加法.减法.乘法.除法(除法因为涉及到一个整除的问题,所以会有些缺陷)运算. 2.伪代码:Complex类中会有一个复数的实部与虚部,以及复数输出的形式然后是四种运算:加法:实部相加,虚部相加,最后返回虚数的形式减法:实部相减,

20145326《Java程序设计》实验二Java面向对象程序设计实验报告

20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 一.单元测试 1. 三种代码·伪代码·产品代码·测试代码Example:需求:我们要在一个MyUtil类中解决一个百分制成绩转成“优.良.中.及格.不及格”五级制成绩的功能. 伪代码: 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“

20165336 实验二 Java面向对象程序设计

20165336 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:13:45 - 15:25 实验序号:实验二 实验名称:Java面向对象程序设计 实验目的与要求: 二.实验内容 1初步掌握单元测试和TDD 2 理解并掌握面向对象三要素:封装.继承.多态 3 初步掌握UML建模 4 熟悉S.O.L.I.D原则 5 了解设计模式 三.实验要求 1.没有Li

20165306 实验二 Java面向对象程序设计

实验二 Java面向对象程序设计 实验要求 1.提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号.本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试. 2.使用JUnit学习Java,以 TDD的方式研究学习StringBuffer.提交你的单元测试用例和测试通过的截图,截图要加上学号水印.测试自己会不会写JUnit测试用例. 3.对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解

20165332实验二 Java面向对象程序设计

20165332实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"

20165308 实验二 Java面向对象程序设计

20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:15:35 - 17:15 实验序号:实验二 实验名称:Java面向对象程序设计 实验内容及要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容.步骤与体会 目

201771010117马兴德 实验二 Java基本程序设计(1)

实验二 Java基本程序设计(1)  第一部分    理论知识的学习. 第三章Java基本程序设计结构 1  基本知识: (1)标识符:标识符由字母.下划线.美元符号和数字组成,且第一个符号不能为数字.比如Hello,$1234都是合法的字符:同时标识符也可用作类名.变量名.方法名.文件名等. (2)关键字:关键字就是Java语言中被赋予特定意义的一些单词.比如 class.public.try等,但是关键字不能用作变量名. (3)注释:Java有三种注释方法,如://./*和*.(定义一个注释