java消息中间件的使用与简介

一、为什么要使用消息中间件

       消息中间件就是可以省去繁琐的步骤,直达目的,怎么讲呢,就是比如你想很多人,知道你的动态,而知道的人可能手机没电,可能手机信号不好,可能手机不在服务区,或者看的人比较忙,看的时间不固定,这样的时候,你发送的消息怎么会让其看到呢,就是建立一个微信公众号,可以满足用户随时看到你想让其看到的消息,这就是中间件的一种应用方式,生活中老师讲课的黑板,家中的电视机都是中间件的一种体现方式。

消息中间件的好处

1、解耦

2、异步

3、横向扩展 :就是可以通过一个中间件进行一个功能多次的操作

4、安全可靠   消息中间件可以把消息保存

5、顺序保存,比如kafka

二、什么是中间件

      非底层操作系统软件,非业务应用软件,不是给最终用户使用,不能直接给用户带来价值的软件统称为中间件。

三、什么是消息中间件

      关注于数据的发送和接受,利用高效可靠的异步消息传递机制集成分布式系统。

四、什么是JMS

       Java消息服务(Java Message Service)即JMS,是一个Java平台中关于面向消息中间件的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

五、什么是AMQP

        AMQP(advanced message queuing protocol)是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制.

常见消息中间件对比

1、ActiveMQ

        ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线. ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位.

ActiveMQ特性

        (1)多种语言和协议编写客户端.语言:

                Java,C,C++,C#,Ruby,Perl,Python,PHP.

        (2)应用协议:

                 OpenWire、Stomp REST,WS Notification,XMPP,AMQP

         (3)完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)

          (4)虚拟主题、组合目的、镜像队列

2、RabbitMQ

          RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

 RabbitMQ特性    

         (1)支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript等

         (2)AMQP的完整实现(vhost、Exchange、Binding、Routing Key 等)

         (3)事务支持/发布确认

         (4)消息持久化

3、Kafka

        Kafka是一种高吞吐量的分布式发布订阅消息系统,是一个分布式的、分区的、可靠的分布式日志存储服务。它通过一种独一无二的设计提供了一个消息系统的功能。(不是个严格的中间件,主要是用于日志转存的)

 Kafka特性:

    (1)通过O(1)  的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。

    (2)高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。

    (3)Partition、Consumer Group

原文地址:https://www.cnblogs.com/liuyangfirst/p/7813226.html