Spring集成RabbitMQ-连接和消息模板

Posted JackieZheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring集成RabbitMQ-连接和消息模板相关的知识,希望对你有一定的参考价值。

ConnectionFactory

  • ConnectionFactory是RabbitMQ服务掌握连接Connection生杀大权的重要组件

  • 有了它,就可以创建Connection(org.springframework.amqp.rabbit.connection.Connection)

  • CachingConnectionFactory是仅有的默认会创建一个能够被应用共享的连接代理,下图是CachingConnectionFactory的继承关系

  • 上篇提过,在CachingConnectionFactory的构造函数中,可以赋值hostname,username和passoword等

  • Channel这个概念应该熟悉,可以认为是一个连接通道,CachingConnectionFactory中默认最多可以缓存25个Channel,也可以通过方法setChannelCacheSize()设置

下面是构造CachingConnectionFactory和创建Connection的代码

Spring集成RabbitMQ-连接和消息模板

当然,我们使用XML配置文件的方式也可以实现同样的效果

Spring集成RabbitMQ-连接和消息模板

这还没完,使用了Spring-rabbitmq,我们还可以这样定义

Spring集成RabbitMQ-连接和消息模板

这是使用了RabbitMQ的命名空间定义的,这里除了定义hostname,username等,还定义了channel-cache-size,这就是我们前面说的默认值是25的属性。

消息发送的确认和返回

使用CachingConnectionFactory的方法setPublisherConfirms和setPublisherReturns设置为true,则创建的Channel就会回传这些属性

Connection和Channel监听器

Connection和Channel分别有对应的监听器接口ConnectionListener和ChannelListener,在CachingConnectionFactory上可以注册这两个监听器的实现类。

这两个接口可以监听有关Connection和Channel生命周期已经相关事件,比如创建、关闭等。

下面分别是ConnectionListener和ChannelListener的源码

Spring集成RabbitMQ-连接和消息模板

Spring集成RabbitMQ-连接和消息模板

RabbitTemplate

  • Spring amqp有AmqpTemplate一个具体实现类,那就是RabbitTemplate

  • 可以使用RetryTemplate为RabbitTemplate配置重试相关的参数

通过XML形式配置重试参数

Spring集成RabbitMQ-连接和消息模板

  • initialInterval是重试的重试间隔时间

  • maxInterval是重试最大间隔时间

  • multiplier是从初始值到最大的增长倍数,其实我们还可以配置SimpleRetryPolicy来指定重试的次数

通过Java配置类形式配置重试参数

码字不易,欢迎点赞,转发~~~

以上是关于Spring集成RabbitMQ-连接和消息模板的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMq 集成 spring boot 消息队列 入门Demo

Spring Boot系列——7步集成RabbitMQ

消息中间件系列四:RabbitMQ与Spring集成

Spring Boot 入门:集成RabbitMQ消息队列

Spring Boot(十三)RabbitMQ安装与集成

Spring集成rabbitmq