ActiveMQ
Posted light-sunset
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActiveMQ相关的知识,希望对你有一定的参考价值。
一、JMS规范
-
定义:Java Message Service,本质是API,Java平台消息中间件的规范,java应用程序之间进行消息交换。包含点对点(Ponit to Point)和发布/订阅(Publish/Subscribe)2种消息模型,提供可靠的消息传输、事务和消息过滤等机制。主要特点包括:1)消息异步接受,消息发送者不需要等待消息接受者的响应;2)消息可靠接受,缺陷消息在中间件可保存,只有接收方收到后才删除消息,多个消息也可以组成原子事物。
- JMS对象模型:
1)连接工厂
2)JMS连接
3)JMS会话
4)JMS目的
5)JMS生产者
6)JMS消费者
7)Broker
二、消息模型
1. Point-to-Point(P2P) / 点对点
一条消息仅能被一个consumer收到。如果在message发送的时候没有可用的consumer,那么它将被保存一直到能处理该message的consumer可用。如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另一个consumer那儿。一个Queue可以有很多consumer,并且在多个可用的consumer中负载均衡。好比是两个人打电话,这两个人是独享这一条通信链路的。一方发送消息,另外一方接收。在实际应用中因为有多个用户对使用p2p的链路,它的通信场景如下图所示:
2. Publish/Subscribe(Pub/Sub) / 主题(发布订阅)
一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个subscriber将接收到消息的一个拷贝。 发布订阅模式有点类似于我们日常生活中订阅报纸。每年到年尾的时候,邮局就会发一本报纸集合让我们来选择订阅哪一个。在这个表里头列了所有出版发行的报纸,那么对于我们每一个订阅者来说,我们可以选择一份或者多份报纸。比如北京日报。那么这些个我们订阅的报纸,就相当于发布订阅模式里的topic。有很多个人订阅报纸,也有人可能和我订阅了相同的报纸。那么,在这里,相当于我们在同一个topic里注册了。对于一份报纸发行方来说,它和所有的订阅者就构成了一个1对多的关系。这种关系如下图所示:
总结:p2p模式的消息会发送给当前线上或者线下(上线后)都能接受,且发送的消息只能发送给一个消费者,消费者接受后会消息会自动删除。pub/sub模式的消息会发送给当前在线上的订阅者。因为好比你在看电视,好比听广播,如果我们要完整的听一个节目,肯定是在节目开始之前把收音机打开,如果我们在节目开始之后再打开收音机,肯定听不完全。在运行玩发布者之后,如果上趟厕所,回来再运行订阅者,你会发现一条消息都收不到。
三、ActiveMQ
ActiveMQ 是Apache组织下的开源消息总线,遵循JMS1.1规范。
主要特点有:
1)支持多种语言,但JAVA优先;
2)单机吞吐量达万级;
3)可用性遵从主从
4)文档完备性高
5)支持OpenWire、STOMP、REST、XMPP、AMQP协议
缺点是:存在消息丢失莫名其妙丢失现象,目前社区活跃性不高,重心转移到activemq6.0-apollo产品,不支持上千个队列的应用场景。
四、安装步骤待续
......
以上是关于ActiveMQ的主要内容,如果未能解决你的问题,请参考以下文章