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

当activemq连接丢失时Spring上下文关闭camel路由

习胤运
2023-03-14
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configures the Camel Context-->

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:amq="http://activemq.apache.org/schema/core"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
       http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>file:${envpath}/activemqApplication.properties</value>

            </list>
        </property>
    </bean>


   <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
        <property name="maximumActiveSessionPerConnection" value="${message.sessions.per.connection}"/>
        <property name="maxConnections" value="${message.max.connections}"/>
    </bean>

    <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"   primary="true">
        <property name="brokerURL" value="${message.broker.url}"/>
        <property name="trustAllPackages" value="true"/>
    </bean>

    <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
        <property name="connectionFactory" ref="pooledConnectionFactory"/>
    </bean>

    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
        <property name="connectionFactory" ref="pooledConnectionFactory"/>
        <property name="transactionManager" ref="jmsTransactionManager"/>
        <property name="usePooledConnection" value="true"/>
        <property name="concurrentConsumers" value="${activemq.concurrency}" />
    </bean>



<bean id="fileSupport" class=" com.archive.app.module.helper.filesSupport">
</bean>


  <camelContext xmlns="http://camel.apache.org/schema/spring">
    <package>com.fileSupport.app.routes</package>

  </camelContext>

</beans>
package com.fileSupport.app;

import org.springframework.boot.SpringApplication;

public final class FileSupportMain {

    public static void main(final String[] args) {
        SpringApplication app = new SpringApplication(FileArchiveSpringBootApplication.class);
        app.setWebEnvironment(false);
        app.run(args);
    }

    private FileSupportMain() {
    }
}
package com.fileSupport.app;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;

@ImportResource({"classpath:/META-INF/spring/camel-context.xml"})
@EnableConfigurationProperties

@SpringBootApplication
public  class FileSupportSpringBootApplication {
}



package com.fileSupport.app.routes;
import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;
import org.apache.camel.model.dataformat.JsonLibrary;
import org.springframework.stereotype.Component;

骆驼路线:

/**
 * ActiveMQ queue is watched by
 * this route which then performs content based
 * routing on the messages using XPath.
 */

@Component
public final class ConsumeActiveMQmessages extends RouteBuilder {

    @Override
    public void configure() throws Exception {


         from("activemq:queue:" + Variables.RECEIVE_QUEUE1)
             .routeId("queueRoute")

             .log(LoggingLevel.INFO, "Body: $simple{body}")
             .to("activemq:queue:" + Variables.RECEIVE_QUEUE2);

         from("activemq:queue:" + Variables.RECEIVE_QUEUE2)
         .to("direct:callback");

         from("direct:callback")

         .log(LoggingLevel.INFO, "body: $simple{body}")

         .end();

    }
}

共有1个答案

郜彦
2023-03-14

如果您没有使用spring-boot-starter-web,您应该打开Camel run controller选项。

有关选项,请参见文档:https://github.com/apache/camel/blob/master/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/camelconfigurationproperties.java#l124

您只需使用普通的spring boot配置风格来配置它。

 类似资料:
  • 问题内容: 我们正在使用 订阅主题。但是,我们经常遇到错误。我已经使用JavaScript客户端(mqttws31.js)测试了连接,效果很好。表示连接没有问题。 错误:- MQTT消息:- 配置 :- pom.xml: 在调试时:- 在上述方法中,有时会抛出。所以基于catch块,它使用 问题答案: 我只是想分享一下,以防万一。…我有相同的异常,并通过确保生成了唯一的客户端ID(使用 )来解决它

  • 问题内容: 当我使用节点mysql时,在12:00到2:00之间出现错误,表明服务器已关闭TCP连接。这是完整的消息: 有解决办法。但是,以这种方式尝试后,问题也会出现。现在我不知道该怎么办。有人遇到这个问题吗? 这是我按照解决方案编写的方式: 问题答案: 尝试使用以下代码来处理服务器断开连接: 在您的代码中,我错过了之后的部分

  • 我有一个使用子/父上下文关系的Spring应用程序。这样做的原因是为了确保子上下文从父上下文继承bean/资源,然后根据需要添加更多bean/资源来覆盖它们。但是,当子上下文关闭时(退出try/catch作用域),它开始对它引用的所有bean进行清理,包括父作用域中的bean。这是不可取的,因为我需要重用父上下文来创建另一个子上下文,但是现在它是垃圾,因为它包含了一堆已处理/关闭的bean。 问题

  • 我有以下Apache Camel FTP文件下载路径: 我将此路由添加到上下文,然后使用ConsumerTemplate请求数据: 当出现连接错误时(例如,未知的主机、无法到达的主机),我想关闭路由,并在“receiveBody”行后抛出一个异常,在那里我试图读取下载的文件。 我该怎么做呢? 我为路由尝试了一个onException-handler,在其中添加了一个流程块,并调用了exchange

  • 我正在开发一个应用程序,它可以与服务器对话,并且有一个登录屏幕。我使用httpconnection与服务器通信(服务器返回Json响应)。我的登录屏幕发送电子邮件和密码,这是由服务器验证的——服务器发送cookie,并期望cookie与每个进一步的请求一起知道用户已登录。 我使用Cookiemanager和cookie处理程序来启用会话,这样用户只需登录一次。 在我的主活动中使用以下2个命令(在创

  • 如何找到我的文件的位置? 我正在运行一个UbuntuLinux服务器从亚马逊网络服务EC2(弹性计算云),我找不到我的Apache配置。