消息中间件 activeMQ 及 JMS 学习

1、消息中间件

        消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)。

常见的消息中间件产品:

(1)ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。

(2)RabbitMQ

AMQP协议的领导实现,支持多种场景。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。

(3)ZeroMQ

史上最快的消息队列系统.

(4)Kafka

Apache下的一个子项目 。特点:高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统。适合处理海量数据。

 

2、activeMQ

(1)列表各列信息含义如下:

Number Of Pending Messages  等待消费的消息 这个是当前未出队列的数量。

Number Of Consumers  消费者 这个是消费者端的消费者数量

Messages Enqueued  进入队列的消息  进入队列的总数量,包括出队列的。

Messages Dequeued  出了队列的消息  可以理解为是消费这消费掉的数量

(2)数量关系:

Messages Enqueued  -   Messages Dequeued   =  Number Of Pending Messages 

 

3、JMS

       JMS(Java Messaging Service)是Java平台上有关面向消息中间件的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。JMS本身只定义了一系列的接口规范,是一种与厂商无关的 API,用来访问消息收发系统。JMS 定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。

(1) TextMessage--一个字符串对象

(2) MapMessage--一套名称-值对

(3) ObjectMessage--一个序列化的 Java 对象

(4) BytesMessage--一个字节的数据流

(5) StreamMessage -- Java 原始值的数据流

 

4、JMS 消息传递类型

(1)点对点

即一个生产者和一个消费者一一对应;

      点对点的模式主要建立在一个队列上面,当连接一个列队的时候,发送端不需要知道接收端是否正在接收,可以直接向消息中间件(以ActiveMQ为例)发送消息,发送的消息,将会先进入队列中,如果有接收端在监听,则会发向接收端,如果没有接收端接收,则会保存在activemq服务器,直到接收端接收消息,点对点的消息模式可以有多个发送端,多个接收端,但是一条消息,只会被一个接收端给接收到,哪个接收端先连上ActiveMQ,则会先接收到,而后来的接收端则接收不到那条消息

       应用场景: solr 服务等。

 

(2)发布/ 订阅模式

即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。

同时开启2个以上的消费者,再次运行生产者,观察每个消费者控制台的输出,会发现每个消费者会接收到消息。

应用场景:  生成商品详细页服务等

 

猜你喜欢

转载自blog.csdn.net/py_tamir/article/details/81351202
今日推荐