加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Apache Camel动态消费者

发布时间:2020-12-15 02:08:04 所属栏目:Java 来源:网络整理
导读:我创建了这个Camel路线 from("direct:pageExtraction") .bean(PageManager.class,"setProperties(*,${headers})") .filter().method(PageManager.class,"exists").to("seda:pagePostProcessing").end() .to("seda:pageImposition"); from("seda:pagePostProc
我创建了这个Camel路线

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(*,"persist(*,"cleanUp(${headers})")
            .to("seda:pageImposition");

            from("seda:pageImposition")
            .bean(PageManager.class,"extractImposition(*,${headers})")
            .to("seda:printQueue");

最后,seda:printQueue没有消费者,在这样的路线中发送消息显然工作正常.现在我想在路由初始化之后引入一个新的消费者,我认为可以用编程方式创建一个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]

有什么想法吗?

[UPDATE]

我已经将错误追溯到创建这个新消费者的类,我正在实例化PrintQueue类,然后使用AutowireCapableBeanFactory将它集成到Spring上下文中,执行factory.autowireBean(printQueueInstance),然后是factory.initializeBean(printQueueInstance,id)其中id是4965d710-b5c7-41cf-97e9-a42bdfcea894,它出现在上面的异常中,所以我认为这必须是某种上下文范围问题,可能是我在main或web Spring上创建这个bean并且它无法通过Camel上下文访问,这可能吗?

解决方法

由于通过使用“direct:”组件同步调用此路由,因此对于另一个bean的异步调用似乎不需要“seda:”.在这种情况下,使用Camel的bean方法为Java DSL调用bean似乎最简单.作为Camel bean文档中显示的示例:

http://camel.apache.org/bean.html

我会这样做:

// Send message to the bean endpoint
// and invoke given method.
from("direct:start")
  // do other stuff in your route
   .beanRef("beanName","methodName");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读