<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" >
<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>
So msg.throttle.time is the bean id I want to pass as the value of x-message-ttl entry key to create a rabbitmq queue. How can I do that?
To reference another bean inside <rabbit:queue-arguments>
, you should use <ref>
instead of <value>
, because <value>
treats the content as a literal string, not a bean reference:
<bean id="msg.throttle.time" class="java.lang.Long"
factory-method="getMsgThrottleTime"
factory-bean="ThrottleService" />
<rabbit:queue name="ws.connection.disconnect.sleep" durable="true">
<rabbit:queue-arguments>
<entry key="x-message-ttl">
<ref bean="msg.throttle.time" />
</entry>
<entry key="x-dead-letter-exchange" value="ws.connection.disconnect.x"/>
<entry key="x-queue-type" value="quorum" />
</rabbit:queue-arguments>
</rabbit:queue>