当前位置: 首页 >服务端 >

ActiveMQ简介

  ActiveMQ是Apache研发的消息中间件,支持JMS1.1和J2EE1.4规范的JMS Provider实现

  主要应用于分布式系统架构中,帮助构建高可用,高性能,可伸缩的企业级面向消息服务的系统

ActiveMQ应用场景

1.异步发送消息

<ActiveMQ> _ JavaClub全栈架构师技术笔记

2.应用间解耦

<ActiveMQ> _ JavaClub全栈架构师技术笔记

3.流量削锋

<ActiveMQ> _ JavaClub全栈架构师技术笔记

ActiveMQ安装

<ActiveMQ> _ JavaClub全栈架构师技术笔记

tar -zxvf **.tar.gz

./activemq start 启动服务

访问页面 ip:port

注意 此版本需要jdk1.8及以上

<ActiveMQ> _ JavaClub全栈架构师技术笔记

JMS基本概念

java message service 是java平台中关于面向消息中间件的API,用于两个应用程序之间,或者分布式系统中发送消息,进行异步通信 。

类似JDBC,由厂商去实现

JMS是一个与具体平台无关的API,绝大多数MOM(message oriented middleware)面向消息中间件提供商都对JMS提供了支持。

下图就是MOM的模型

MOM:面向消息的中间件,使用消息传送提供者来协调消息传输操作。 MOM需要提供API和管理工具。 客户端调用api。 把消息发送到消息传送提供者指定的目的地

在消息发送之后,客户端会技术执行其他的工作。并且在接收方收到这个消息确认之前。提供者一直保留该消息

<ActiveMQ> _ JavaClub全栈架构师技术笔记

JMS规范

<ActiveMQ> _ JavaClub全栈架构师技术笔记

消息传递域:

* 点对点 p2p

  1.每个消息只能被消费一次,也就是只能有一个消费者

  2.消息的生产者和消费者没有时间上的相关性,无论消费者在生产者发送消息的时候是否是运行状态,都可以提取消息。

* 发布定于 pub/sub

  1.每个消息可以有多个消费者

  2.消息的生产者和消费者之间存在时间上的相关性,订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS规范允许提供客户端创建持久订阅

简单的例子:

<dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.15.0</version></dependency>
package org.maple.producer;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;/** * @author mapleins * @Date 2018-12-20 19:46 * @Desc 生产者 **/public class Producer {public static void main(String[] args) {//创建连接工厂ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.0.110:61616");//创建连接Connection connection = null;try {//建立连接connection = connectionFactory.createConnection();connection.start();//通过连接创建会话Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);//通过Session创建队列,如果存在则不会再创建//destination是目的地Destination destination = session.createQueue("first queue");//创建消息发送者MessageProducer producer =session.createProducer(destination);//创建消息TextMessage textMessage = session.createTextMessage("hello , activemq");producer.send(textMessage);//提交会话session.commit();//关闭会话session.close();} catch (JMSException e) {e.printStackTrace();} finally {if(connection!=null){try {connection.close();} catch (JMSException e) {e.printStackTrace();}}}}}
package org.maple.consumer;import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.ActiveMQMessageConsumer;import javax.jms.*;import javax.xml.soap.Text;/** * @author mapleins * @Date 2018-12-20 19:54 * @Desc 消费者 **/public class Consumer {public static void main(String[] args) {//创建连接工厂ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.0.110:61616");//创建连接Connection connection = null;try {//建立连接connection = connectionFactory.createConnection();connection.start();//通过连接创建会话Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);//通过Session创建队列,如果存在则不会再创建//destination是目的地Destination destination = session.createQueue("first queue");//创建消费者MessageConsumer consumer = session.createConsumer(destination);//接收消息TextMessage message = (TextMessage) consumer.receive();System.out.println(message.getText());//提交会话session.commit();//关闭会话session.close();} catch (JMSException e) {e.printStackTrace();} finally {if(connection!=null){try {connection.close();} catch (JMSException e) {e.printStackTrace();}}}}}

 

JMS API

  ConnectionFactory  连接工厂

  Connection             封装客户端与JMS provider之间的一个虚拟的连接

  Session                    生产和消费消息的一个单线程上下文; 用于创建producer、consumer、message、queue..

  Destination               消息发送或者消息接收的目的地

  MessageProducer/consumer 消息生产者/消费者

消息组成

  消息头

    包含消息的识别信息和路由信息

  消息体

    TextMessage

    MapMessage

    BytesMessage

    StreamMessage   输入输出流

    ObjectMessage  可序列化对象

  属性

 

作者:mapleins
来源链接:https://www.cnblogs.com/mapleins/p/10151462.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/113157.html

标签:ActiveMQ
分享给朋友:

” 的相关文章

pycharm安装教程,超详细 2022年05月16日 21:28:02
[C#][控件]列表控件listbox(一) 2022年05月17日 20:45:24
CentOS yum 源的配置与使用 2022年05月19日 19:54:27
centos7中 yum的安装 2022年05月19日 19:54:29
Python 散列表查询 2022年05月20日 21:28:09
软件工程专业如何就业! 2022年05月23日 22:31:42
Tomcat服务器目录结构 2022年05月28日 22:49:58