RabbitMQ程序员技术干货

Spring集成RabbitMQ-配置消息服务

2017-08-21  本文已影响774人  Jackie_Zheng

AMQP协议是描述了有关消息服务器是如何配置我们经常提到的队列(Queues)、交换器(Exchanges)以及绑定关系(Bindings),这个服务器也经常被称为Broker。

在AMQP0.8版本以及更高版本都有一系列方便易用的方法来完成上面的这些声明创建,他们都在AmqpAdmin接口下,而RabbitMQ也有基于AmqpAdmin的相应实现,即位于org.springframework.amqp.rabbit.core报下的RabbitAdmin。

AmqpAdmin

下面是AmqpAdmin接口的所有成员方法,其是在Spring AMQP的基础上高度抽象出来的

image.png image.png

声明RabbitAdmin
上面提到的AmqpAdmin的实现类RabbitAdmin主要用于创建队列和交换器以及绑定关系等,其在XML中声明方式如下

image.png

声明Queue
在XML中声明一个Queue很简单
<rabbit:queue name="stocks.trade.queue"/>

除了声明Queue的name属性,还可以通过id属性来标识queue。除此以外,还可以声明queue的其他属性信息比如x-message-ttl、x-ha-policy,借助<rabbit:queue-arguments>标签即可

image.png

我们还可以在<rabbit:queue-arguments>标签中定义不同类型的参数

image.png

在Spring Framework 3.2版本之后,我们可以使用下面更加简洁的方式来声明

image.png

忽略异常
默认情况下,RabbitAdmin如果遇到一处抛异常,那么RabbitAdmin就会直接停止服务,这种情况因为一处异常而影响了RabbitAdmin的正常运行,我们可以通过声明ignore-declaration-exceptions属性来解决这个问题,从这个属性的命名就可以知道他的作用了。

在RabbitAdmin中,我们可以通过ignoreDeclarationExceptions这个属性来设置。在1.6版本之前,这个属性还只能作用与IOException,在该版本之后,该属性作用于所有的异常情况,保证及时有一处因为某种原因抛异常,但是RabbitAdmin仍然能够很好的工作,完成队列、交换器等的声明和定义。

实例

下面通过实例,来看看AMQP服务Broker是如何完成服务端和客户端的声明以及绑定等操作的,这里通过JAVA配置类的方式实现的。
先创建一个抽象类AbstractStockAppRabbitConfiguration配置类

image.png

服务端声明

image.png

客户端声明​********

image.png
上一篇下一篇

猜你喜欢

热点阅读