Spring RabbitTemplate没有使用TTL创建死信队列

 jasonmysh 发布于 2023-01-01 21:42

我使用的是spring-rabbit1.1和RabbitMQ 3.3.1,

我的spring配置将在Rabbit MQ的RabbitTemplate的帮助下创建任何队列,但如果队列已经配置了x-dead-letter-exchange和x-message-ttl,它只会创建没有TTL和死信交换的队列.

对于Eg:以下队列将创建队列,但是没有创建TTL和死信呼出.


    
        
        
    

所以我不得不从Rabbit MQ中删除队列并手动创建所有需要的值以使其工作.

如果有任何选择可以解决这个问题,任何人都可以帮助我吗???

1 个回答
  • 你必须明确声明队列和交换......

    <rabbit:queue name="q.with.dlx">
        <rabbit:queue-arguments> 
            <entry key="x-dead-letter-exchange" value="dlx"/>
            <entry key="x-message-ttl" value="10000" value-type="java.lang.Long"/>
        </rabbit:queue-arguments>
    </rabbit:queue>
    
    <rabbit:queue name="dlq"/>
    
    <rabbit:direct-exchange name="dlx">
        <rabbit:bindings>
            <rabbit:binding key="q.with.dlx" queue="dlq"/>
        </rabbit:bindings>
    </rabbit:direct-exchange>
    

    这假设您使用默认直接交换(按队列名称路由)路由原始邮件.因此,死信路由使用相同的路由密钥(队列名称).如果使用显式路由键进行路由,则可以使用它.

    顺便说一下,RabbitTemplate不会声明这些元素,它就是RabbitAdmin实例.

    2023-01-01 21:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有