Apache camel 在Jboss保险丝中运行弹簧引导驼峰

Apache camel 在Jboss保险丝中运行弹簧引导驼峰,apache-camel,jbossfuse,Apache Camel,Jbossfuse,我有一个运行Spring Boot Camel的应用程序,它使用来自ActiveMQ的消息并写入文件: @Override public void configure() throws Exception { from("activemq:queue:MyQueue").to("file:/tmp/somemessages/"); } 非常简单,如果运行mvn spring boot:run,效果很好 但是现在我需要生成一个bundle jar来安装在我的RedHat Fuse

我有一个运行Spring Boot Camel的应用程序,它使用来自ActiveMQ的消息并写入文件:

@Override
  public void configure() throws Exception {
    from("activemq:queue:MyQueue").to("file:/tmp/somemessages/");
  }
非常简单,如果运行
mvn spring boot:run
,效果很好

但是现在我需要生成一个bundle jar来安装在我的RedHat Fuse OSGi容器中。所有内容都已安装并启动,没有错误,请参阅:

因此,我的camel应用程序处于活动状态,但在我的ActiveMQ队列中生成一些消息后没有任何效果,因此没有生成文件


我怎样才能知道是否出了什么问题?应用程序控制台日志或类似的内容?

这不是一个好做法。Spring Boot用于独立运行。在基于OSGi的运行时(如Red Hat Fuse或Apache Karaf/ServiceMix)中,您应该部署OSGi应用程序,使用Camel就是Camel blueprint(您也可以使用Java路由和blueprint)。所以请看一看如何做到这一点的例子,应该有红帽保险丝附带的例子,你可以看看

我怎样才能知道是否出了什么问题?应用程序控制台日志或类似的东西

简单的答案是,您可以通过在shell控制台中运行以下命令,在捆绑包上运行诊断命令:

bundle:diag {your-bundle-id}

您可以将
{your bundle id}
替换为图片中的首选bundle id,即231。还有一些可能对进一步的需求有用。

没有任何保险丝有5个运行时:独立保险丝(如Java Main)、Karaf保险丝、EAP保险丝和OpenShift上的保险丝(如Spring Boot),以及最近的在线保险丝。由于您使用的是Fuse-Karaf,所以我们只支持带有OSGi Blueprint的Karaf。那么,是否强制使用带保险丝的BluePrint Karak?如何仅使用普通Java类(路由器)?在BlueprintXML中,您可以添加对Java类或包的引用,Camel将使用这些引用。应该像使用SpringXML文件一样工作。请参阅使用Java:Thank@Claus I will tryin the case of errors bundle:diag是找出bundle中的错误(缺少依赖项等)的最简单方法,但正如@Claus ibsen所说,在OSGi环境中实现驼峰路由的最佳方法是使用驼峰蓝图。