当前位置: 首页 > 知识库问答 >
问题:

未标识阿帕奇骆驼路线

左丘照
2023-03-14

我有一个spring boot应用程序,我正在向其中添加一个camel路由。定义路由的类扩展了FatJarRouter,并用@component注释。当应用程序作为spring boot应用程序运行时,不会识别路由。但是,如果我在主类中使用@SpringBootApplication注释编写路由,则会标识路由。这是它目前在日志中的显示方式:

@Override
public void configure()  throws Exception{
from("file:\\input").to("file:\\output");
}

请告诉我如何在将路由作为一个单独的类而不是在主类中编写时识别它。是不是少了什么。

共有1个答案

燕禄
2023-03-14

我的猜测是您没有正确运行Spring Boot,或者您的fatjarrouter不在Spring Boot的组件扫描路径上。假设您有一个Spring Boot应用程序类:

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(DemoApplication.class, args);
        System.out.println("Printing out ");

        Map<String, RouteBuilder> routeBuilders = 
            ctx.getBeansOfType(RouteBuilder.class);
        System.out.println(routeBuilders);

        CamelSpringBootApplicationController applicationController =
            ctx.getBean(CamelSpringBootApplicationController.class);
        applicationController.run();
    }
}

您的fatjarrouter必须位于同一个包中(在本例中为com.example)或子包中,例如com.example.camel:

package com.example.camel;

import org.apache.camel.Exchange;
import org.apache.camel.spring.boot.FatJarRouter;
import org.springframework.stereotype.Component;

@Component
public class DemoRouteBuilder extends FatJarRouter {

  @Override
  public void configure() throws Exception {
      from("timer:sender?delay=3000&period=5000")
          .log("Ping!");
  }
}
 类似资料:
  • 我试图使用Apache Camel Quartz2实现一个调度器,它每分钟执行一次路由,并按预期执行一些任务。我使用spring DSL实现与apache camel相关联的路由,如下所示: 根据日志,它不会记录为路由记录的消息,例如Direct:DomainsWithFTPUsers等等。请指导如何实现同样的目标。

  • 遵循官方文件(https://camel.apache.org/manual/component-dsl.html#_using_component_dsl)我创建了以下代码: 但是中的告诉我: 并且中的特性不建议导入相应的库。 有人能给我指出正确的方向吗? 我必须理解的概念才能做到这一点吗?

  • 我们需要的是直接的API来设置和使用集群消息队列。我们最初的计划是使用Camel在集群JMS或ActiveMQ队列上进行消费/生产。Kafka如何使这项任务变得更容易?在任何一种情况下,应用程序本身都将在WebLogic服务器上运行。 消息传递将是点对点类型,其中有多个相同服务的实例在运行,但根据负载平衡策略,只有一个实例应该处理消息并发出结果。消息队列也是群集的,因此服务实例或队列实例的失败都不

  • 考虑到apache Camel,我有一个问题:是否可以通过代码来创建全局拦截器,例如AOP?拦截器应该跳过endpoint还是模仿endpoint? 提前致谢

  • 下面是我试图实现的场景: 谢谢你的帮助。此外,这里是已经工作的FTP部分。

  • 我有一个Camel route,它使用队列中的消息并将消息存储到数据库中。现在,我想以一种优雅的方式手动关闭运行骆驼路线。我有一个RestEndpoint,每当我需要停止Camel route时就会被触发。此endpoint应停止路由。但是,如果在关闭期间有任何正在运行的消息或事务,则必须在不消耗来自camel route的("")endpoint的任何新消息的情况下成功完成,并在完成正在运行的消