java - 在 Quarkus-Camel 中的任何其他类之前调用​​一个类

标签 java apache-camel quarkus

我正在开发 Quarkus 应用程序,其中我使用 Apache Camel 并使用 JAVA DSL 方式。 我想在一次特定的类之后调用 RouteBuilder 类,但 RouteBuilder 不允许这样做。

@Startup
@ApplicationScoped
public class FirstClass {
       void onStart(@Observes StartupEvent ev) {               
             //setting some values which are going to used in RouteBuilder class
       }
}



public class Rout extends RouteBuilder {

   @Override
   public void configure() throws Exception {
      // accessing value which is set on FirstClass but gives null pointer
   }
}

现在,正如您所见,在应用程序启动时,我需要在 RouteBuilder 之前调用 FirstClass,但每次启动项目时 RouteBuilder 都会首先被调用,如何在启动应用程序时调用 FirstClass First?

我使用过@Startup、@PostConstrust,但没有成功,请帮助我,因为我是新手。

最佳答案

您可以使用 CDI 来实现此目的。例如:

@ApplicationScoped
public class FirstClass {
    public FirstClass {
        // Initialise data to be retrieved in the RouteBuilder
    }
}
@ApplicationScoped
public class Routes extends RouteBuilder {

    @Inject
    FirstClass firstClass;

    @Override
    public void configure() throws Exception {
        // Do something with FirstClass
    }
}

camel-quarkus 文档提供了一些有关如何配置应用程序的示例:

https://camel.apache.org/camel-quarkus/latest/user-guide/bootstrap.html

还值得您熟悉如何使用 CDI 将事物连接在一起:

https://camel.apache.org/camel-quarkus/latest/user-guide/cdi.html

https://quarkus.io/guides/cdi-reference

关于java - 在 Quarkus-Camel 中的任何其他类之前调用​​一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66328505/

相关文章:

java - cxf-codegen-plugin 的 2.2.8-SNAPSHOT 版本有何特别之处?

java - 性能: float 转换为整数并将结果裁剪到范围

java - 使用 Apache Camel 对 FTP 消费者进行单元测试

rabbitmq - Apache Camel : How to setHeader value as null

java - 构建和运行时初始化中的 Quarkus 原生构建类

quarkus - 构建 Quarkus Native 问题

java - 我可以使用 java HtmlUnit 库从 linkedIn 中提取信息吗?

java - 使用 keytool 更改密码时从 Java Keystore 中提取 PKCS12 文件

java - Camel的recipientList太长会导致StackOverflow错误

java - 如何在quartz上下文中执行db/jpa操作?