RabbitMQ你了解吗?
你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。

消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。
一、RabbitMQ是什么?
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
二、RabbitMQ能干什么?
简单的说一下RabbitMQ的使用场景,RabbitMQ就一个轻量级的消息队列中间件,一般都这么叫它。最直接的就是用这个东西可以把程序解耦。
举个例子最常使用的发布文章,以前一般发布一篇文章就是直接提交给程序,然后直接写入到数据库,但是用这个消息队列就可以把这篇文章推入RabbitMQ仓库中(当然这里你可以把RabbitMQ理解成数据库也可以),然后订阅者从仓库中把队列里的消息取走,也有点像是中转站,一般用它来解决高并发。

RabbitMQ其实就是消息队列。是软件开发中经常用到的通信方法。像IBM WEBSPHERE MQ等等做的都很成熟,今天就说说MQ在java中使用方法。


1、打开eclipse开发工具,点击导航栏上的【File】菜单,然后在点击New,新建个Maven Project,在新建的项目里演示RabbitMQ在java中的使用。如下图所示。

2、项目新建完成后,会自动生成个pom文件,打开pom文件,添加上RabbitMQ的依赖包,如下图所示。
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.0.4</version>
</dependency>

3、RabbitMQ消息队列就是应用在通信里,这里我们就用java模拟生产,消费二者的通信。新建个Consumer类,作为消费类,具体代码,如下图所示。

4、接着在新建个生产者Producer类,代码类似Consumer类,具体请看我的截图,如下图所示。

5、消费和生产类都实现好后,我们先运行消费者类,选中Consumer后,右键鼠标,然后点击【Run As】--->【Run on server】,如下图所示。


6、消费类运行后,在选中生产Producer类,右键鼠标,然后点击【Run As】--->【Run on server】,如下图所示。

7、运行后,可以在eclipse的Console控制台那里看到MQ的通信,我们可以看到先运行的消费类,但是并没有执行而是等待,因为没有生产,是不可能消费的,得到的结果是正确的,如下图所示。

想要学习更多的RabbitMQ知识可以观看视频教程哦~
