ACTIVEMQ介绍
来源:互联网 发布:好看的步兵番号知乎 编辑:程序博客网 时间:2024/05/18 19:47
一、 名词解释
1. MQ(message queue):消息队列;个人理解:本质上是一个队列,存放message,然后还能按照规则去取;主要的目的是为了系统解耦。
2. JMS(Java Message Service):是一个java面向mq中间件的规范;
3. ACTIVEMQ:实现了JMS1.1规范的面向消息的中间件; 还有其它中间件RabbitMQ、Kafka、ZeroMQ等等,有些实现了JMS规范,有些则没有;
二、 概述
activemq是一个快速的开源消息组件(框架),支持集群,同等网络,自动检测,TCP,SSL,广播,持久化,XA,和J2EE1.4容器无缝结合,并且支持轻量级容器和大多数跨语言客户端上的Java虚拟机。消息异步接受,减少软件多系统集成的耦合度。消息可靠接收,确保消息在中间件可靠保存,多个消息也可以组成原子事务。
三、 JMS(ACTIVEMQ)应用场景
1. 作为RPC的替代
使用RPC同步调用的应用十分普遍。尽管很多系统很成功,但是转换使用异步消息可以带来很多好处,而且也不会放弃响应保证。使用同步请求的系统在规模上有较大的限制,因为请求会被阻塞,从而导致整个系统变慢。如果使用异步消息替代,可以很容易增加额外的消息接收者,使得消息能被并发消耗,从而加快请求处理。当然,你的系统应用间应该是解耦的。
2. 应用之间解耦
紧耦合架构可以导致很多问题,尤其是如果他们是分布的。松耦合架构,在另一方面,证实了更少的依赖性,能够更好地处理不可预见的改变。不仅可以在系统中改变组件而不影响整个系统,而且组件交互也相当的简单。相比使用同步的系统(调用者必须等待被调用者返回信息),异步系统(调用方发送消息后就不管,即fire-and-forget)能够给我们带来事件驱动架构(event-driven architecture EDA)。
3. 作为事件驱动架构的主干
解耦、异步风格架构允许软件本身进一步扩展(水平的可扩展性),而不是依赖硬件的可扩展性(垂直的可扩展)。
四、 JMS(ACTIVEMQ)基本概念与应用
JMS支持两种消息传递模型:基于队列(Queue)点对点模型和基于主题(Topic)发布/订阅模型。这两种消息传递模型非常相似,但有以下区别:
1. Queue消息传递模型规定了一条消息只能够传递给一个消费者。
2. Topic消息传递模型允许一条消息传递给多个消费者
4. 点对点的消息传递模型
通过点对点的消息传递模型,一个应用程序可以向另外一个应用程序发送消息。在此传递模型中,目标类型是队列。消息首先被传送至队列目标,然后从该队列将消息传送至对此队列进行监听的某个消费者,如下图:
一个队列可以关联多个队列发送方和接收方,但一条消息仅传递给一个接收方。如果多个接收方正在监听队列上的消息,JMS Provider将根据“先来者优先”的原则确定由哪个接收方接受下一条消息。如果没有接收方在监听队列,消息将保留在队列中,直至接收方连接到队列为止。
温馨提示:在此列模型中,消息不会自动推给给客户端,而是要求客户端从队列中请求获得。
5. 发布/订阅消息传递模型
通过发布/订阅消息传递模型,应用程序能够将一条消息发送到多个接收方。在此传送模型中,目标类型是主题。消息首先被传送至主题目标,然后传送至所有已订阅此主题的送消费者。如下图:
主题目标也支持长期订阅。长期订阅表示消费者已注册了主题目标,但在消息到达目标时该消费者可以处于非活动状态。当消费者再次处于活动状态时,将会接收该消息。如果消费者均没有注册某个主题目标,该主题只保留注册了长期订阅的非活动消费者的消息。与点对点消息传递模型不同,发布/订阅消息传递模型允许多个主题订阅者接收同一条消息。JMS一直保留消息,直至所有主题订阅者都接收到消息为止。
- ActiveMQ : ActiveMQ入门介绍
- ActiveMQ介绍
- ActiveMQ介绍
- ActiveMQ介绍
- ACTIVEMQ介绍
- ActiveMQ(二)--ActiveMQ基本介绍
- ActiveMQ 介绍和学习
- Apache ActiveMQ介绍
- Apache ActiveMQ介绍
- apache ActiveMQ 介绍
- Apache ActiveMQ介绍
- Apache ActiveMQ介绍 .
- ActiveMQ 学习介绍
- ActiveMQ基本介绍
- Activemq使用介绍
- ActiveMQ基本介绍
- activeMq集群介绍
- ActiveMQ基本介绍
- spring框架(五)——springMVC模块(一)
- 【实战】Docker Machine + Compose + Swarm
- MFC控件数据交换:DDX
- Java线程(八):锁对象Lock-同步问题更完美的处理方式
- JAVA基础知识点
- ACTIVEMQ介绍
- c#数据类型导图
- layer--在开发之中的简单应用
- mysql题目
- Defects4j数据集的使用
- Java
- Python简单抓取瀑布流型百度图片
- docker命令
- Wifi源码学习(Android5.1)之wifi optionItem