其他消息中间件及场景应用(上)

版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!)             

  https://blog.csdn.net/yinwenjie/article/details/51247935

目录([+]

1、概述

目前业界有很多消息中间件可供大家选择,主要分为两类:需要付费的商业软件和开源共享的非商业软件。对于商业软件您和您的团队可以选择IBM WebSphere集成的MQ功能,也可以选择Oracle WebLogic集成的MQ功能。本文首先介绍除Apache ActiveMQ以外的两款开源共享的消息中间件产品,然后列举三个实际的业务常见,为读者介绍如何在这些实际业务中使用消息中间件解决问题。

2、RabbitMQ及特性

RabbitMQ基于Erlang语言开发和运行。它与Apache ActiveMQ有很多相同的特性,例如RabbitMQ完整支持多种消息协议:AMQP、STOMP、MQTT、HTTP,我们使用RabbitMQ时会默认使用AMQP1.0 协议。当然,RabbitMQ作为Apache ActiveMQ最主要的竞品之一也有其独特的功能特性。例如RabbitMQ支持一套特有的Routing-Exchange消息路由规则。这套规则可以按照消息内容,自动将消息归类到不同的消息队列中。关于这套Routing-Exchange消息路由规则可参见我另一篇文章的详细介绍:架构设计:系统间通信(20)——MQ:消息协议(下)

2-1、RabbitMQ软件特性

下面我们来看看RabbitMQ官网上对这款消息中间件软件的特性介绍:

  • Reliability(可靠性):

RabbitMQ offers a variety of features to let you trade off performance with reliability, including persistence, delivery acknowledgements, publisher confirms, and high availability.

RabbitMQ支持消息持久化、消息重试操作(比ActiveMQ的相关功能还要强大)、消息回执确认规则、消息生产者发送确认机制(实际上是消息生产者端的一种事务机制)和高可用性HA(多节点热备方案)等特性来提供RabbitMQ服务的高可靠性。

  • Flexible Routing(灵活的路由规则):

Messages are routed through exchanges before arriving at queues. RabbitMQ features several built-in exchange types for typical routing logic. For more complex routing you can bind exchanges together or even write your own exchange type as a plugin.

这就是我们提到的RabbitMQ所支持的一套特有的Routing-Exchange消息路由规则。一定注意这套规则不是AMQP协议规范提供的。关于个消息路由规则可参见我另一篇文章的详细介绍:架构设计:系统间通信(20)——MQ:消息协议(下)

  • Clustering(RabbitMQ服务集群):

Several RabbitMQ servers on a local network can be clustered together, forming a single logical broker。

RabbitMQ服务集群主要解决的问题是单个RabbitMQ服务节点的性能瓶颈。关于RabbmitMQ集群的搭建过程由于本文篇幅限制,我将随后安排时间为各位读者详细介绍。

  • Plugin System & Federation(支持第三方插件模块,其中RabbitMQ Federation [插件]需要特别说明):

RabbitMQ ships with a variety of plugins extending it in different ways, and you can also write your own.

For servers that need to be more loosely and unreliably connected than clustering allows, RabbitMQ offers a federation model.

RabbitMQ支持第三方扩展插件,在RabbitMQ的官网上(http://www.rabbitmq.com/plugins.html)列举了各种由RabbitMQ官方开发的插件,以及实验性质的插件,包括(但不限于):rabbitmq_federation、rabbitmq_management、rabbitmq_mqtt、rabbitmq_stomp、rabbitmq_tracing等等。您还可以按照RabbitMQ提供的插件规范,开发您自己的RabbitMQ-Plugins。特别说明一下rabbitmq_federation 插件:这个插件允许您在多个RabbitMQ Clusters之间传递消息。

  • Multi-protocol(多协议支持):

RabbitMQ supports messaging over a variety of messaging protocols.

上文已经提到,RabbitMQ完整支持多种消息协议,包括:AMQP(默认使用该协议)、STOMP、MQTT、HTTP。其中一些协议要安装相应的插件进行支持,例如rabbitmq_stomp插件。

  • Many Clients(多客户端/多语言支持):

There are RabbitMQ clients for almost any language you can think of.

您可以想到的各种编程语言都可以作为RabbitMQ的客户端进行连接,包括(但不限于):Java 、.NET 、Ruby、 Python 、PHP、 JavaScript、Scala、Groovy……

  • Tracing(消息追溯):

If your messaging system is misbehaving, RabbitMQ offers tracing support to let you find out what’s going on.

如果您发现发送给RabbitMQ的消息存在异常(如发送到了错误的队列中,发送给了错误的订阅者等等),RabbitMQ提供了消息处理过程追溯功能,以便帮助开发人员分析错误原因。

2-2、RabbitMQ使用概要

RabbitMQ的安装过程非常简单:由于RabbitMQ是基于Erlang语言开发并运行的,所以安装RabbitMQ的第一步是安装Erlang运行环境。您可以在https://www.erlang-solutions.com/resources 下载最新Erlang版本进行安装(注意不同的RabbitMQ版本有不同的Erlang最低版本要求,笔者使用的RabbitMQ版本为V3.5.4,Erlang版本为V18.0);

接下来您可以在RabbitMQ官方(http://www.rabbitmq.com/)下载各种RabbitMQ的安装版本,建议直接使用各种操作系统对应的rpm文件进行安装即可。安装完成后,可以使用15672端口访问RabbitMQ的管理界面(默认的用户名和密码都是guest)

其他消息中间件及场景应用(上)

RabbitMQ消息消费者

来源:weixin_33918357

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年3月12日
下一篇 2018年3月13日

相关推荐