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

带Spring Boot的Apache-camel

戚侯林
2023-03-14

我正在尝试用title上的堆栈建立一个项目,我们正在使用的JMS是ActiveMQ。下面是我正在进行的配置:

@SpringBootApplication

public class Application {

private static Logger logger = Logger.getLogger(Application.class);

@Value("${broker.component.name}")
private String brokerComponetName;
@Value("${broker.dead.letter.queue}")
private String brokerDeadLetterQueue;
@Value("${broker.in.queue}")
private String brokerInQueue;
@Value("${broker.out.queue}")
private String brokerOutQueue;
@Value("${broker.url}")
private String brokerUrl;
@Value("${broker.user}")
private String brokerUser;
@Value("${broker.password}")
private String brokerPassword;

public static void main(String[] args) throws Exception {
    logger.info("starting loader");
    SpringApplication.run(Application.class, args);
}

@Bean
public SpringCamelContext camelContext(ApplicationContext applicationContext) throws Exception {

    SpringCamelContext camelContext = new SpringCamelContext(applicationContext);

    camelContext.addComponent(brokerComponetName, JmsComponent.jmsComponent(connectionFactory()));

    camelContext.addRoutes(new RouteBuilder() {
        public void configure() throws ConfigurationException {
            errorHandler(deadLetterChannel(brokerDeadLetterQueue)
                    .onRedelivery(new FailureProcessor())
                    .useOriginalMessage()
                    .maximumRedeliveries(5)
                    .redeliveryDelay(5000)
                    .retryAttemptedLogLevel(LoggingLevel.INFO));

            from(brokerInQueue)
                .process(new MessageProcessor())
                .to(brokerOutQueue);
        }
    });

    return camelContext;
}

@Bean
public ConnectionFactory connectionFactory() throws ConfigurationException {
    System.out.println("BROKER URL: " + brokerUrl);
    return new ActiveMQConnectionFactory(brokerUser,
            brokerPassword, brokerUrl);
}

我已经尝试将@enablejms添加到应用程序中,但没有成功。堆栈错误如下:

org.springframework.beans.factory.beanCreationException:创建类路径资源[org/springframework/boot/autoconfigure/jms/jmsanNotationDrivenConfiguration.class]中定义的名为“JMS ListenerContainerFactory”的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.beanInstantiationException:实例化[org.springframework.jms.config.defaultJMSListenerContainerFactory]失败:工厂方法“jms ListenerContainerFactory”引发异常;嵌套异常为java.lang.NoSuchMethodError:org.springframework.jms.config.defaultJMSListenerContainerFactory.setAutoStartup(Z)V

谢谢你的提前和抱歉任何错误的问题。

共有2个答案

花飞扬
2023-03-14

我遇到了同样的例外,在这里读到了答案。因为我使用的是spring boot 1.5.1版,我发现答案不适用,于是继续搜索。我发现原因是没有正确阅读手册:http://camel.apache.org/activemq.html。导言指出:

要使用该组件,请确保类路径上有activeMQ.jar或activeMQ-core.jar以及任何Camel依赖项,如camel-core.jar、camel-spring.jar和camel-jms.jar。

所以解决这个问题的是2个额外的Maven条目。

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-spring</artifactId>
  <version>${apache.camel.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-jms</artifactId>
  <version>${apache.camel.version}</version>
</dependency>

我希望它能帮到某人。

吉凯捷
2023-03-14

显然这是spring boot 1.3.3的一个bug:DefaultJmsListenerContainerFactory不包含所需的方法。尝试升级到spring boot 1.4.0(尽管目前还没有发布版本)。这样就可以解决这个问题了。

 类似资料:
  • 有没有办法绕过授权?

  • 我正在尝试将vaadin与spring(没有Spring Boot)和基于java注释的spring部分配置结合起来。 自动连接似乎适用于vaadin ui部分,但不适用于“自定义ui类”(例如,“公共类LoginScreen扩展自定义组件”)。我在SysOut上得到一个NPE或一个空对象。 此外,我注意到“@ComponentScan(base Packages={"net.myapp"})”没

  • 是否有一个地方我们可以快速引用和查看Apache beam和运行时环境(Flink、Spark等)之间的版本兼容性。我正在艰难地学习它:(.不确定我的问题有多少是由版本错误造成的。 目前我正在使用Beam 2.4.0并查看flink runner pom(https://search.maven.org/#artifactdetails%7corg.apache.Beam%7cbeam-runne

  • 首先要说的是,我一直在寻找解决方案,现在我非常绝望。 当由Spring Boot运行时,我无法从html页面访问css文件。 html。文件 应用JAVA 文件夹结构: 我尝试过将文件夹放入文件夹和/或删除addResourcesHandler,通过相对路径引用css和其他一些东西。似乎没有什么能解决这个问题。请告诉我,如果你试图解决这个问题,但没有找到解决方案,这样我就知道,我不会被忽视。

  • 我想用alpine和Apache创建一个docker图像。我使用tini作为“init”系统。直到我卸下并重新连接到容器上。连接到容器后,apache退出,容器停止。我不知道问题出在哪里。有没有人在docker、alpine和Apache上遇到过类似的问题? 更新:问题似乎出在apache2,它在docker附加到容器的同时接收SIGWINCH(窗口大小更改): Apache错误地将该信号与apa

  • 我将使用Ehcache和Springboot。我只是想知道在处理大量请求时,什么会是最佳配置。 在直播期间,我们可能会收到超过30000 req/h。虽然在开发中,我们无法生成此方案。 你能帮我如何计算内存,以创建一个最佳配置,应在Prod中完美工作。 我检查了Postman中的响应大小,在Dev中为3-5 kb,因此我保留了以下配置,但不确定它会有多好。我们的内存大小为2GB(在prod中,我们