消息中间件

Posted huxipeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息中间件相关的知识,希望对你有一定的参考价值。

1、什么是消息中间件?

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

2、什么是JMS? java - api

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

3、AMQP协议(为了跨语言) Wire-protocaol, 只支持 byte[] 二进制的消息类型

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

4、常用的消息中间件

      <1> ActiveMQ 完全支持JMS1.1与J2EE 1.4规范的JMS Provider实现。

             支持多种语言 Java c c++ c# Ruby Perl Python php,支持的应用协议:OpenWire, Stomp REST, WS Notification, Xmpp, AMQP  (没有JMS 因为不是应用协议,只是开发规范)。

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

             支持多种客户端, 如 Python Ruby .Net  java jms c php等

      <3> kafka  是一种高吞吐量的分布式发布订阅消息系统,是一个分布式的,分区的,可靠地分布式日志存储服务,它通过一种独一无二的设计提供了一个消息系统的功能。不是一个严格的消息中间件,

     主要是用来做日志储存。即使是非常普通的硬件kafka也可以支持每秒数百万的消息。

     比对:

     技术分享图片

5、消息模式

   主题和队列两种模式。

      队列模型: 客户端包含生产者和消费者

                         队列中的消息只能被一个消费者消费

                         消费者可以随时消费队列中的消息

技术分享图片

 

     主题模型:  客户端包括发布者和订阅者

         主题中的消息被所有的订阅者消费

         消费者不能消费订阅之前就发送到主题中的消息

技术分享图片

 

6、JMS 编码接口之间的关系

技术分享图片

 

以上是关于消息中间件的主要内容,如果未能解决你的问题,请参考以下文章

消息中间件

消息中间件专题-消息中间件引言

消息中间件之Kafka

厉害!一文了解消息中间件-RabbitMQ

消息中间件剖析

消息中间件