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

如何在Spring XML中引用Bean ID作为RabbitMQ队列参数值?

解决Spring XML中引用Bean作为RabbitMQ队列参数的问题

要将ID为msg.throttle.time的Spring Bean作为RabbitMQ队列x-message-ttl的参数值,不能直接在<value>标签里写Bean ID(Spring会把它当作普通字符串处理),需要使用**Spring表达式语言(SpEL)**的#{}语法来引用Bean。

修改后的配置代码

<bean id="msg.throttle.time" class="java.lang.Long"
    factory-method="getMsgThrottleTime"
    factory-bean="ThrottleService">
</bean>

<rabbit:queue name="ws.connection.disconnect.sleep" durable="true">
    <rabbit:queue-arguments>
        <entry key="x-message-ttl" >
            <!-- 使用SpEL引用目标Bean -->
            <value type="java.lang.Long">#{msg.throttle.time}</value>
        </entry>
        <entry key="x-dead-letter-exchange" value="ws.connection.disconnect.x"/>
        <entry key="x-queue-type" value="quorum" />
    </rabbit:queue-arguments>
</rabbit:queue>

说明

  • #{msg.throttle.time}会让Spring自动解析并注入ID为msg.throttle.time的Bean实例,由于该Bean本身是java.lang.Long类型,完全匹配x-message-ttl参数对数据类型的要求。
  • 确保ThrottleService的getMsgThrottleTime方法能正确返回Long类型的值,否则Spring会在初始化时抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:55:55