繁体   English   中英

骆驼ProducerTemplate没有注入注释配置

[英]Camel ProducerTemplate not injected with annotation config

首先,我知道有非常类似的问题( 在Spring MVC中没有注入Camel producerTemplate从Spring注释配置中初始化骆驼 ),但是它们对我来说没有帮助。

我有一个使用ProducerTemplate发送消息的bean:

public class SimpleProducer {

   @Produce(uri = "activemq:queue:simple")
   private ProducerTemplate activeMqProducer;

   public void send(String message) {
      activeMqProducer.sendBody(message);
   }
}

当我使用如下所示的注释驱动配置时,它会通过send方法处理NPE(未注入activeMqProducer):

@Configuration
public class AnnotationConfigApp {
   public static void main(String[] args) {
      ApplicationContext context = new AnnotationConfigApplicationContext(AnnotationConfigApp.class);
      SimpleProducer simpleProducer = context.getBean(SimpleProducer.class);
      simpleProducer.send("Hello World!");
   }

   @Autowired
   private ApplicationContext ctx;

   @Bean
   public SimpleProducer simpleProducer() {
      return new SimpleProducer();
   }

   @Bean
   public CamelContext camelContext() throws Exception {
      CamelContext camelContext = new SpringCamelContext(ctx);
      camelContext.start();
      return camelContext;
   }
}

当使用等效的(至少我相信是这样)XML配置时,它成功地向ActiveMQ发送了一条消息:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:spring="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
       <bean id="simpleProducer" class="makasprzak.so.camel.producer.testing.SimpleProducer"/>
       <spring:camelContext xmlns="http://camel.apache.org/schema/spring" id="simple.sender" />
</beans>

像这样初始化:

public class XmlConfigApp {
   public static void main(String[] args) {
      ApplicationContext context = new GenericXmlApplicationContext("context.xml");
      SimpleProducer simpleProducer = context.getBean(SimpleProducer.class);
      simpleProducer.send("Hello World!");
   }
}

我一直在玩CamelContext实现,尝试了DefaultCamelContext或一些SpringCamelContextFactory-没运气。

有问题的代码可以在GitHub找到

<properties>
    <camel.version>2.15.2</camel.version>
    <activemq.version>5.10.0</activemq.version>
    <java.version>1.8</java.version>
</properties>

我在注释配置中错过了什么?

您应该在AnnotationConfigApp类中扩展org.apache.camel.spring.javaconfig.CamelConfiguration

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM