ActiveMQ消息中间件学习(一)
来源:互联网 发布:爱淘宝1元红包抽不中 编辑:程序博客网 时间:2024/05/30 02:52
同步通讯:客户端向服务器端发出请求,并一直等待服务器端的响应。直到获取到服务器端返回的响应信息,客户端才能继续执行。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。
MOM消息中间件:消息发送端将消息发送给消息服务器,消息服务器将消息存放在若干个队列中,在合适的时候再将消息转发给消息接收端。在这种模式下,发送消息和接收消息是一个异步的过程,消息发送端和消息接收端不一定同时运行,消息发送端在发送完消息后也无需继续等待消息接收端的响应信息,而可以继续做其它事情。
Java提供JMS规范,即定义了Java访问消息中间件的接口,它并没有提供接口的实现。目前,有很多的JMS Provider提供了这些接口的实现,包括Apache的ActiveMQ、阿里巴巴的RocketMQ、Pivotal的RabbitMQ。
JMS中相关术语:
Provider:消息生产者
Customer:消息消费者
Publish/Subscribe:消息的发布订阅模式
Queue:消息对列
Topic:消息主题
ConnectionFactory:连接工厂,用于创建连接
Connection:消息生产者或消费者到JMS Provider的连接
Destination:消息的目的地
Session:会话,一个发送或接收消息的线程
消息格式定义:
StreamMessage:数据流
MapMessage:名称-值对
TextMessage:字符串对象
ObjectMessage:序列化的Java对象
BytesMessage:字节数据流
在ActiveMQ的官网下载最新版本的软件包
ActiveMQ的配置文件、jetty容器的配置文件
ActiveMQ软件包中一个比较全的jar包
webapps包含可以部署到jetty中的admin管控台程序
在bin目录下通过bat文件启动ActiveMQ
查看jetty.xml中的端口号
启动完成后,使用浏览器访问
消息生产者Producer
package com.cb;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;public class Producer {public static void main(String[] args) throws Exception{//1.创建ConnectionFactory对象ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");//2.创建一个Connection并开启Connection connection=connectionFactory.createConnection();connection.start();//3.创建Session会话,用来接收消息,通过参数可以设置:是否启用事务、消息签收模式Session session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);//4.创建Destination对象。在点对点模式中,该对象被称为Queue;在发布订阅模式中,该对象被称为TopicDestination destination=session.createQueue("queue1");//5.创建消息的生产者MessageProducer messageProducer=session.createProducer(destination);//6.设置生产者的消息持久化与非持久化特性messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//7.选择需要的JMS消息格式,创建并发送消息,此处选择的是TextMessage字符串对象TextMessage textMessage=session.createTextMessage();textMessage.setText("生产者"+"activemq消息测试");messageProducer.send(textMessage);//8.释放Connectionif(null!=connection){connection.close();}}}
运行上述代码,查看控制台
点击队列名称,查看详情
此时,生产者发送消息到消息中间件ActiveMQ中了。
消息消费者Customer
package com.cb;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;public class Customer {public static void main(String[] args) throws Exception{//1.创建ConnectionFactory对象ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");//2.创建一个Connection并开启Connection connection=connectionFactory.createConnection();connection.start();//3.创建Session会话,用来接收消息,通过参数可以设置:是否启用事务、消息签收模式Session session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);//4.创建Destination对象。在点对点模式中,该对象被称为Queue;在发布订阅模式中,该对象被称为TopicDestination destination=session.createQueue("queue1");//5.创建消息的消费者MessageConsumer messageConsumer=session.createConsumer(destination);//6.消费者从消息中间件的Queue获取消息while(true){TextMessage textMessage=(TextMessage) messageConsumer.receive();if(null==textMessage){break;}System.out.println("消费者接收到的内容:"+textMessage.getText());}//7.释放Connectionif(null!=connection){connection.close();}}}
运行上面消费消息的代码,并查看控制台
此时,点击queue1查看队列中消息,发现为空,因为消息已经被消费了
在Eclipse的Console中结果如下图:
在activemq.xml中可以设置安全验证,只有验证通过的用户才可以向ActiveMQ消息中间件中发送、获取消息。
<plugins><simpleAuthenticationPlugin><users><authenticationUser username="cb" password="123456" groups="users,admins"/></users></simpleAuthenticationPlugin></plugins>
同时修改Producer、Customer第1步中的用户名和密码
- ActiveMQ消息中间件学习(一)
- 消息中间件(一)JMS与ActiveMQ
- ActiveMQ(一)-消息中间件概述
- 消息中间件activeMq ------------开篇(一)
- 【中间件】消息队列(一):RabbitMQ、ActiveMQ、Kafka和Redis
- 消息中间件(二)---ActiveMQ
- 分布式消息中间件(一)——ActiveMQ点对点消息模式
- JMS学习篇《一》ActiveMQ消息中间件的简单介绍与用法-概念篇
- JMS消息中间件(ActiveMQ_上)
- activemq消息中间件
- 初识ActiveMQ消息中间件
- 消息队列中间件ActiveMQ
- 消息中间件-ActiveMQ
- 初识ActiveMQ消息中间件
- 消息中间件 ActiveMQ基础
- 中间件 消息队列 ActiveMQ
- 消息中间件入门(ActiveMQ)
- linux下消息中间件ActiveMQ的入门笔记一
- URL编码
- 树
- 数据结构实验之排序五:归并求逆序数
- windows安装shapely
- JavaWeb三大组件之Servlet
- ActiveMQ消息中间件学习(一)
- ActiveMQ安装
- MindManager 2018中文破解版免费下载安装教程
- 万树IT:软件测试必备网络知识
- 从github上下载的项目无法在androidstudio中打开的解决方法
- 18.验证子串
- 使用Scrapy爬取CSDN博客首页文章
- 怎样设置Apache访问限制(根据目录、url路径等条件限制)
- java心得(IO)