我的上下文XML(以及其他内容)中包含以下代码:
<rabbit:queue name="#{systemProperties.consumer1Queue}" />
<rabbit:fanout-exchange name="si.test.exchange">
<rabbit:bindings>
<rabbit:binding queue="#{systemProperties.consumer1Queue}"/>
</rabbit:bindings>
</rabbit:fanout-exchange>
我首先使用mvn compile
编译它。然后,当我想用mvn -Dconsumer1Queue=queue1 exec:java
运行它时,它会抛出:
引起:org.springframework.beans.factory.BeanCreationException: 使用名称创建bean时出错 'org.springframework.amqp.rabbit.config.BindingFactoryBean#0':不能 解析bean'#{systemProperties.consumer1Queue}'的引用 设置bean属性'destinationQueue';嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:不 名为'queue1'的bean已定义 [...]
当我要么停止异常:
<rabbit:queue ...>
元素更改为<rabbit:queue name="queue1" />
或<rabbit:fanout-exchange ...>
元素。这是Spring Integration版本4.1.1
为什么会这样?这可能与this bug相关吗?
非常感谢!
答案 0 :(得分:0)
你不对。请参阅binding
的{{1}}属性文档:
要绑定到此交换的队列的bean名称。
因此,您应该将queue
添加到id
,并将其用作<rabbit:queue>
binding
属性的值。