您的位置:首页 > 其它

消息中间件技术

2017-03-16 00:00 113 查看

1.什么是Message Queue

提到消息中间件,那么首先就必须理解一下所谓的Message Queue。

在平常的开发中,应用开发人员完全可以通过发送和接受消息的方式来方便的与应用程序进行可靠的通信,并且消息的处理为我们提供了方便的消息传递和许多业务处理的可靠的防止故障的方法。

但消息传递与传统的应用程序交互又有区别?最明显的区别就是实时性了。Message Queue不适合实时性要求比较高的场景,因为Message Queue通过异步的方式与server端进行交互,不用担心server端的长时间处理过程。

举个例子,平常的应用程序之间的调用大部分都是通过暴露接口的形式进行相互的调用,一旦业务复杂起来,接口之间的管理也会很麻烦。这时候如果通过Message Queue的方法的话,只要在需要的时候把消息发送到Queue Manage就可以,这时候Message Queue就成了嫁接各个系统之间的桥梁。

上面也提到了实时性的问题,比如一个生成报表的功能,为了给用户更好的体验度,我们不可能让用户等待很长的时间,这时可以把对报表的处理使用MQ,客户端只需要把必要的报表请求和一些必要的报表条件放置到Queue中处理,处理好后,再给用户发送一个消息即可。

2.什么是消息中间件

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。JMS是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

3.常见消息传递方式

点对点或队列模型

在点对点或队列模型下,一个生产者向一个特定的队列发布消息,一个消费者从该队列中读取消息。这里,生产者知道消费者的队列,并直接将消息发送到消费者的队列。这种模式被概括为:

只有一个消费者将获得消息;

生产者不需要在接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态;

每一个成功处理的消息都由接收者签收。

发布者/订阅者模型

发布者/订阅者模型支持向一个特定的消息主题发布消息。0或多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方。这种模式好比是匿名公告板。这种模式被概括为:

多个消费者可以获得消息;

在发布者和订阅者之间存在时间依赖性。发布者需要建立一个订阅(subscription),以便客户能够订阅。订阅者必须保持持续的活动状态以接收消息,除非订阅者建立了持久的订阅。在那种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布。

4. 常用消息队列

ActiveMQ

RabbitMQ

Kafka

RocketMQ

Redis

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: