Apache Camel上下文启动失败

问题描述 投票:0回答:1

我对Spring-boot,Apache骆驼和ActiveMQ经纪人还很陌生。我正在尝试创建一个应用程序,该应用程序会将消息发送到我使用Camel进行路由的本地队列中。

POM:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>


   <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
      <version>2.22.0</version>
   </dependency>

   <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-activemq</artifactId>
      <version>3.2.0</version>
   </dependency>

MsgRouteBuilder:

public void configure() throws Exception {
    from("direct:firstRoute")
    .setBody(constant("Hello"))
    .to("activemq:queue:myQueue");
}

application.yaml:

activemq:
    broker-url: tcp://localhost:61616
    user: meAd
    password: meAd

MainApp.java:

        package me.ad.myCamel;

        import org.apache.camel.CamelContext;
        import org.slf4j.Logger;
        import org.slf4j.LoggerFactory;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.boot.CommandLineRunner;
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
        import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
        import org.springframework.cache.annotation.EnableCaching;
        import org.springframework.context.annotation.Bean;
        import org.springframework.context.annotation.EnableAspectJAutoProxy;

        import me.ad.myCamel.router.MessageRouteBuilder;

        @SpringBootApplication
        @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
        @EnableAspectJAutoProxy(proxyTargetClass = true)
        @EnableCaching
        public class MeAdApp implements CommandLineRunner {

          private static final Logger LOG = LoggerFactory.getLogger(MeAdApp.class);

          public static void main(String[] args) {
            try {
              SpringApplication.run(MeAdApp.class, args);
            } catch (Exception ex) {
              LOG.error(ex.getMessage(), ex);
            }
          }

          @Override
          public void run(String... args) throws Exception {
            LOG.info("Starting MeAdApp...");
          }

     }

MyController.java:

  @GetMapping(value = "/routing")
  public boolean sendToMyQueue() {
    sendMyInfo.startRouting();
    return true;
  }

SendMyInfo.java:

    MsgRouteBuilder routeBuilder = new MsgRouteBuilder();
    CamelContext ctx = new DefaultCamelContext();


    public void startRouting(){

        try {
            ctx.addRoutes(routeBuilder);
            ctx.start();
            Thread.sleep(5 * 60 * 1000);
            ctx.stop();
        }
        catch (Exception e) {
            e.printStackTrace();
        }

    }

所以,每当我呼叫休息终点:/ routing时,都会出现错误:java.lang.NoSuchMethodError: org.apache.camel.RuntimeCamelException.wrapRuntimeException(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;

有人可以指出我为什么出现此错误的正确方向吗?非常感谢您的帮助。

java spring-boot apache-camel activemq
1个回答
0
投票

您需要具有相同版本的组件。如果在3.2.0中使用camel-core,请使用camel-activemq 3.2.0。而且,由于您使用的是spring-boot,因此可以利用启动程序依赖项。只需添加这些,您就可以开始使用。

<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-spring-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>
<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-activemq-starter</artifactId>
    <version>3.2.0</version>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.