前言:ActiveMQ学习心得
1.MQ是什么
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。其中较为成熟的MQ产品有IBM WEBSPHERE MQ、Apache ActiveMQ等等。
1.1.ActiveMQ的概述
ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。
1.3.ActiveMQ的实现原理
如图所示:当客户端A和客户端B通信,客户端A发送消息到队列或主题中,然后等待客户端B接收消息。当客户端B接收消息并且确认消息后,消息才会
从队列中删除。
2.ActiveMQ的下载
2.1.下载路径
官方网站下载:http://activemq.apache.org/
2.2ActiveMQ的运行
我下载的是active5.9版本的进入ActiveMQ的解压包bin目录开始启动服务
2.2.ActiveMQ发布订阅模式代码示例
首先添加jar包为
开始编写代码既然是消息中间件就是来处理消息的,那么处理消息就有发送方和接收方,在发布订阅模式下面需先运行消息接收方在运行发送方可接收到消息
发送方代码
/**
* @摘要 测试发送单条数据的类
*/
public class ZMQOneSendTest{
public static void main(String[] args) throws Exception {
// 4.开始建立连接时间
Long nStartTime = System.currentTimeMillis();
// 5.建立连接工厂
org.apache.activemq.ActiveMQConnectionFactory nFactory = new org.apache.activemq.ActiveMQConnectionFactory("tcp://localhost:61616");
// 6.用工厂建立Connection连接
javax.jms.TopicConnection nConnection = nFactory.createTopicConnection();
// 7.创建会话Session,不启动事务,签收模式为自动确认模式
javax.jms.TopicSession nSession = nConnection.createTopicSession(false,javax.jms.Session.AUTO_ACKNOWLEDGE);
// 8.创建主题
javax.jms.Topic nTopic = nSession.createTopic("199");
// 9.创建发布者
javax.jms.TopicPublisher nPublihser = nSession.createPublisher(nTopic);
// 10.设置持久化
nPublihser.setDeliveryMode(javax.jms.DeliveryMode.PERSISTENT);
// 11.启动连接
nConnection.start();
// 12.查询开始时间
Long nStartSelectTime = System.currentTimeMillis();
// 14.查询结束时间
Long nEndSelectTime = System.currentTimeMillis();
// 15.创建消息
javax.jms.TextMessage nMessage = nSession.createTextMessage();
nMessage.setText("我是发送的数据");
// 16.发送开始时间
Long nStartSendTime = System.currentTimeMillis();
// 17.发布者发布消息
nPublihser.publish(nMessage);
// 18.发布结束时间
Long nEndSendTime = System.currentTimeMillis();
// 19.打印消息
System.out.println("已发送消息 "+nMessage);
// 关闭发布者、会话、连接
nPublihser.close();
nSession.close();
nConnection.close();
// 20.计算时间
System.out.println("查询消息时间 "+(nEndSelectTime-nStartSelectTime));
System.out.println("发送消息时间"+(nEndSendTime-nStartSendTime));
System.out.println("总时间"+(nEndSendTime-nStartTime));
}
}
接收方代码
import javax.jms.JMSException;
public class ZMQReadTest {
public static void main(String[] args) throws JMSException {
// 1.建立连接工厂
org.apache.activemq.ActiveMQConnectionFactory nFactory = new org.apache.activemq.ActiveMQConnectionFactory("tcp://localhost:61616");
// 2.用工厂建立Connection连接
javax.jms.TopicConnection nTopicConnection = nFactory.createTopicConnection();
// 3.为客户端设置一个唯一ID
nTopicConnection.setClientID("5");
// 4.创建会话Session,不启动事务,签收模式为自动确认模式
javax.jms.TopicSession nSession = nTopicConnection.createTopicSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
// 5.创建主题
javax.jms.Topic nTopic = nSession.createTopic("199");
// 6.创建订阅者
javax.jms.TopicSubscriber nTopicSubscriber = nSession.createDurableSubscriber(nTopic, "min");
// 6.1.为消费者添加消息监听器,onMessage方法接收消息
nTopicSubscriber.setMessageListener(new javax.jms.MessageListener() {
public void onMessage(javax.jms.Message nMessage) {
try {
if (nMessage instanceof javax.jms.TextMessage) {
String nTextMessage = ((javax.jms.TextMessage) nMessage).getText();
System.out.println("收到的消息:" + nTextMessage);
}
} catch (javax.jms.JMSException e) {
e.printStackTrace();
}
}
});
// 7.开启连接
nTopicConnection.start();
}
}
测试消息的发送和接收是否成功时需要先运行消费者(消息的接收者)再运行生产者(消息发送者)当显示如下消息接收方和发送方打印消息如下即可。
好的给大家写好一个发布订阅案例了不懂的可以问我哈!!!
- 大小: 19.1 KB
- 大小: 25.8 KB
- 大小: 5.7 KB
- 大小: 28.2 KB
- 大小: 27.6 KB
分享到:
相关推荐
并比较了两种模式:生产者-消费者模式和发布-订阅模式的区别。 包含的特性如下: 1.开启activeMQ,访问http://localhost:8080/demo 2.在项目中,我们为消息的生产者和发布者分别注册了两个消费者和订阅者,当有...
004-p2p模式+pulish-subscribe发布订阅模式+与spring集成;005-集群部署1;006-集群部署2;007-集群部署3;activemq集群配置文档.pdf;ActiveMQ(中文)参考手册.doc;ActiveMQ集群:网络连接模式(network connector)...
分别实现生产者-消费者模式和发布-订阅模式,作为java编程发送消息和消费消息的基础示例。 源码主要包含如下内容: 1.spring boot配置初始化activeMQ 2.队列类型queue,生产者发送队列消息,以及消费者消费相关队列...
ActiveMQ 是Apache出品,最流行的,能力...本压缩包是是实现ActiveMQ中点对点与发布订阅模式的java项目,下载后可配合运行好的ActiveMQ服务直接运行。 没有ActiveMQ服务的可下载本人的ActiveMQ消息中间件,运行即可。
并比较了两种模式:生产者-消费者模式和发布-订阅模式的区别。 包含的特性如下: 1.开启activeMQ,访问http://localhost:8080/demo 2 在项目中,我们为消息的生产者和发布者分别注册了两个消费者和订阅者,当有消息...
本项目基于Spring这一平台,整合流行的开源消息队列中间件ActiveMQ,实现一个向ActiveMQ添加和读取消息的功能。并比较了两种模式:生产者-消费者模式和发布-订阅模式的区别。
PublisherSubscriber(发布订阅者)消息模式开发流程 详细讲解企业项目中ActiveMQ使用经验 ActiveMQ与Tomcat整合 分布式ActiveMQ集群开发详解 ActiveMQ集群配置方法 在Spring下集成ActiveMQ ActiveMQ中间件实现实时...
ActiveMQ是Apache软件基金会所研发开源的消息中间件,为应用程序提供高效的、可扩展的、稳定的... ActiveMQ提供了两种消息模式:点对点模式(Queue)、发布订阅模式(Topic),这两种模式基本上可以覆盖大部分的需求了
股票信息系统使用了发布/订阅模式。发布者会广播股票的价格信息到每一个感兴趣的订阅者。消息被发送到成为“主题”的地址,然后客户端均从这个地址接收消息。 任务队列系统使用了点对点模式。消息生产者发送工作消息...
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件...一种是订阅(Topic)模式,可以被多个订阅者订阅,订阅者都会接收到同样的消息。 而ActiveMQ就是对JMS的实现之一。
消息中间件java操作demo 提供activeMq的 java实现,和两种模式:点对点、发布和订阅 直接clone下来,导入maven项目启动test包下的 Client.java
接下来的Kafka是LinkedIn开源的分布式发布-订阅消 息系统,目前这个项目已经属于Apache顶级项目。Kafka的主要特点是基于Pull的模式来处理消息消息,追 求高吞吐量,后面的Kafka学习文档中会详细讲解,这里就不一一...
activemq_acks:存储持久订阅的信息和最后一个持久订阅接收的消息ID activemq_lock:跟kahadb的lock文件类似,确保数据库在某一时刻只有一个broker在访问 Memory 消息存储 他是基于内存的消息存储,就是消息存储在...
在职开发人员学完后会让你的薪资更高,让你更了解互联网是如何解决高并发 学完SSM框架的同学就可以学习,能让你切身感受到企业级开发环境目标1:理解消息中间件、JMS等概念目标2:掌握JMS点对点与发布订阅模式的收发...
ActiveMQ P2P及PUB/SUB模式详解 ActiveMQ消息确认及重发策略 ActiveMQ基于Spring完成分布式消息队列实战 Kafka Kafka基于Zookeeper搭建高可用集群实战 kafka消息处理过程剖析 Java客户端实现Kafka生产者与...
支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递 支持拉(pull)和推(push)两种消息模式 单一队列百万消息的堆积能力 支持多种消息协议,如 JMS、MQTT 等 ...
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 Github:https://github.com/rabbitmq 官网地址:http://www.rabbitmq.com 安装RabbitMQ 安装RabbitMQ 可以参考之前的文章 ...