我创造了这个骆驼的路线Apache的骆驼充满活力的消费者
from("direct:pageExtraction")
.bean(PageManager.class, "setProperties(*, ${headers})")
.filter().method(PageManager.class, "exists").to("seda:pagePostProcessing").end()
.to("seda:pageImposition");
from("seda:pagePostProcessing")
.bean(PageManager.class, "extractThumbnail(*, ${headers})")
.bean(PageManager.class, "extractCMYKSeparation(*, ${headers})")
.bean(PageManager.class, "persist(*, ${headers})")
.bean(PageManager.class, "cleanUp(${headers})")
.to("seda:pageImposition");
from("seda:pageImposition")
.bean(PageManager.class, "extractImposition(*, ${headers})")
.to("seda:printQueue");
在年底,SEDA:打印队列没有消费者,在路由发送类似这样的消息显然是工作正常。现在我想在之后引入一个新的消费者这些路由已经初始化了,我认为可以通过编程的方式创建一个Spring bean,让Camel使用@Consume(uri="seda:printQueue")
注释来获取这个bean,但是一旦创建消费者Camel抱怨
org.apache.camel.RuntimeCamelException: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '4965d710-b5c7-41cf-97e9-a42bdfcea894' is defined]
有什么想法?
[更新]
我已经追溯到了错误的地方创建这个新的消费,我实例化PrintQueue
类,然后使用AutowireCapableBeanFactory
把它集成到Spring上下文做factory.autowireBean(printQueueInstance)
类其次是factory.initializeBean(printQueueInstance, id)
其中id
是4965d710-b5c7-41cf-97e9-a42bdfcea894
出现在上面的异常中,所以我认为这必须是某种上下文范围的问题,可能是我在主或Web Spring上下文中创建了这个bean,并且它无法访问在骆驼环境下,这可能吗?
你是如何创建'@ Consume'-ING豆?它会进入注册表吗?是否有任何理由在运行时创建它,而不是事先配置它? – bdeniker