当前位置: 代码网 > it编程>编程语言>Java > RabbitMQ环境配置和DirectRabbitConfig的SpringBoot 4.0.X 版本操作

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

2026年10月10日 • Java •我要评论
一、rabbit mq隧道的创建 我不想让外面的网络访问我都云服务器,我只让我本机来访问我的云服务器,仅限我本地测试,还未上线。我给我的rabbitmq 设置了本地的隧道,但是只设置了端口号为:

一、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-attempts=5 已经被废弃改名了。所以因为找不到 spring.rabbitmq.listener.simple.retry.max-attempts=5 所以会标红,需要改为spring.rabbitmq.listener.simple.retry.max-retries=5 默认重试 5 次。

这是最新的mq配置文件

## mq ##
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
#消息确认机制,默认auto
spring.rabbitmq.listener.simple.acknowledge-mode=auto
#设置失败重试 5次
spring.rabbitmq.listener.simple.retry.enabled=true
spring.rabbitmq.listener.simple.retry.max-retries=5

虽然老的文件可能会正常运行,但是其中的弯弯绕绕太多,博主搞不明白,从sprintboot 的3.0.x 版本到 4.0.x 本就是一个大挑战,所有的环境都可能出问题。

三、springboot4 + spring amqp3,类改名了!

jackson2jsonmessageconverter 是适配 jackson2 的类,在 spring amqp3(springboot4 配套)里废弃,换成了 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();
    }
}

到此这篇关于rabbitmq环境配置和directrabbitconfig的springboot 4.0.x 版本的文章就介绍到这了,更多相关springboot 4.0.x 版本 rabbitmq环境配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

赞 (0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com