You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring4.x迁移至5.x及JDK17后RabbitMQ配置报错求助

Spring及Spring Integration迁移后RabbitMQ适配器问题排查

环境背景

应用包含Spring及Spring Integration依赖,已完成版本迁移:

  • Spring从4.1.1.RELEASE升级至5.3.39
  • Spring Integration从2.2.3.RELEASE升级至5.5.20

配置的RabbitMQ入站适配器

<int-amqp:inbound-channel-adapter id="testAmqpAdapter" 
    channel="AppTestChnl" 
    queue-names="${amqp.queue.test}" 
    connection-factory="connectionFactory" 
    auto-startup="true" 
    concurrent-consumers="${amqp.consumer.count}" 
    channel-transacted="true" 
    task-executor="taskExecutor" 
    prefetch-count="2" 
    tx-size="2" 
    acknowledge-mode="AUTO" 
    error-handler="messageErrorHandler" />

遇到的错误及处理

错误1:txSize属性不可写

  • 错误信息:org.springframework.beans.NotWritablePropertyException,提示org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer的txSize属性不可写或setter方法无效
  • 解决方案:移除配置中的tx-size="2"属性,仅保留prefetch-count="2",错误消失

错误2:Exchange类型不匹配导致连接关闭

  • 错误信息:日志持续出现连接关闭错误,提示PRECONDITION_FAILED - exchange 'channelName'的type参数不匹配,接收的是'direct'但当前为'fanout'
  • 问题原因:应用代码或配置中声明的Exchange类型(direct),与RabbitMQ服务器上已存在的同名Exchange类型(fanout)不一致
  • 解决方案:
    • 若需保留现有Exchange类型(fanout):修改应用中对应的Exchange声明配置,将类型改为fanout
    • 若需使用direct类型Exchange:删除RabbitMQ服务器上的同名fanout类型Exchange,重启应用让其重新声明正确类型的Exchange
    • 注意:删除Exchange会清除其绑定关系,操作前需确认业务影响

内容的提问来源于stack exchange,提问作者manoharnr fiserv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 18:47:11