尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

RabbitMQ 环境配置和 DirectRabbitConfig 的 SpringBoot 4.0.X 版本

RabbitMQ 环境配置和 DirectRabbitConfig 的 SpringBoot 4.0.X 版本 一、Rabbit MQ隧道的创建我不想让外面的网络访问我都云服务器我只让我本机来访问我的云服务器仅限我本地测试还未上线。我给我的RabbitMQ 设置了本地的隧道但是只设置了端口号为15672 的端口号这时候是我的RabbitMQ 的可视化插件的入口打开云服务器之后用浏览器访问 127.0.0.1:15672 就能进去可视化界面但是我并没有给我的代码的端口5672 端口给释放所以我运行代码报出了下面的错误。解决方法在云服务器上给Rabbti MQ的端口号为5672 的端口给释放开来。步骤1. 先右键你的云服务器2.右键之后点开属性3. 点击隧道再点击添加4. 添加下面的规则端口号为 5672 两个都是5672源主机和目标主机都是localhost本机的意思添加完毕之后重启解决程序访问 Rabbit MQ 端口未被释放的问题二、SpringBoot 4.0.X 版本下 Rabbit MQ 的配置的更新在SpringBoot 4.0.X 版本下 spring.rabbitmq.listener.simple.retry.max-attempts5 已经被废弃改名了。所以因为找不到 spring.rabbitmq.listener.simple.retry.max-attempts5 所以会标红需要改为spring.rabbitmq.listener.simple.retry.max-retries5 默认重试 5 次。这是最新的mq配置文件## mq ## spring.rabbitmq.host127.0.0.1 spring.rabbitmq.port5672 spring.rabbitmq.usernameadmin spring.rabbitmq.passwordadmin #消息确认机制默认auto spring.rabbitmq.listener.simple.acknowledge-modeauto #设置失败重试 5次 spring.rabbitmq.listener.simple.retry.enabledtrue spring.rabbitmq.listener.simple.retry.max-retries5虽然老的文件可能会正常运行但是其中的弯弯绕绕太多博主搞不明白从SprintBoot 的3.0.X 版本到 4.0.X 本就是一个大挑战所有的环境都可能出问题。三、SpringBoot4 Spring AMQP3类改名了Jackson2JsonMessageConverter是适配 Jackson2 的类在 Spring AMQP3SpringBoot4 配套里废弃换成了JacksonJsonMessageConverter适配 Jackson3。这两个报错的原因就是导入了被废弃的包现在使用的是下面这两个import org.springframework.amqp.support.converter.JacksonJsonMessageConverter;Bean public MessageConverter jsonMessageConverter(){ return new JacksonJsonMessageConverter(); }包路径不变org.springframework.amqp.support.converter.只是类名去掉了2。DirectRabbitConfig SpringBoot 3.X 版本的package com.example.lotterysystem.common.config; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class DirectRabbitConfig { public static final String QUEUE_NAME DirectQueue; public static final String EXCHANGE_NAME DirectExchange; public static final String ROUTING DirectRouting; /** * 队列 起名DirectQueue * * return */ Bean public Queue directQueue() { // durable:是否持久化,默认是false,持久化队列会被存储在磁盘上当消息代理重启时仍然存在暂存队列当前连接有效 // exclusive:默认也是false只能被当前创建的连接使⽤⽽且当连接关闭后队列即被删除。此参考优先级⾼于durable // autoDelete:是否⾃动删除当没有⽣产者或者消费者使⽤此队列该队列会⾃动删除。 // return new Queue(DirectQueue,true,true,false); // ⼀般设置⼀下队列的持久化就好,其余两个就是默认false return new Queue(QUEUE_NAME,true); } /** * Direct交换机 起名DirectExchange * * return */ Bean DirectExchange directExchange() { return new DirectExchange(EXCHANGE_NAME,true,false); } /** * 绑定 将队列和交换机绑定, 并设置⽤于匹配键DirectRouting * * return */ Bean Binding bindingDirect() { return BindingBuilder.bind(directQueue()) .to(directExchange()) .with(ROUTING); } Bean public MessageConverter jsonMessageConverter(){ new Jackson2JsonMessageConverter(); } }DirectRabbitConfig SpringBoot 4.X 版本的package com.example.lotterysystem.common.config; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.support.converter.JacksonJsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; Configuration public class DirectRabbitConfig { public static final String QUEUE_NAME DirectQueue; public static final String EXCHANGE_NAME DirectExchange; public static final String ROUTING DirectRouting; /** * 队列 起名DirectQueue * * return */ Bean public Queue directQueue() { // durable:是否持久化,默认是false,持久化队列会被存储在磁盘上当消息代理重启时仍然存在暂存队列当前连接有效 // exclusive:默认也是false只能被当前创建的连接使⽤⽽且当连接关闭后队列即被删除。此参考优先级⾼于durable // autoDelete:是否⾃动删除当没有⽣产者或者消费者使⽤此队列该队列会⾃动删除。 // return new Queue(DirectQueue,true,true,false); // ⼀般设置⼀下队列的持久化就好,其余两个就是默认false return new Queue(QUEUE_NAME,true); } /** * Direct交换机 起名DirectExchange * * return */ Bean DirectExchange directExchange() { return new DirectExchange(EXCHANGE_NAME,true,false); } /** * 绑定 将队列和交换机绑定, 并设置⽤于匹配键DirectRouting * * return */ Bean Binding bindingDirect() { return BindingBuilder.bind(directQueue()) .to(directExchange()) .with(ROUTING); } Bean public MessageConverter jsonMessageConverter(){ return new JacksonJsonMessageConverter(); } }
返回列表