zoukankan      html  css  js  c++  java
  • ActiveMQ Spring 集成配置

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jms</artifactId>
    <version>4.2.0.RELEASE</version>
    </dependency>
    <dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-spring</artifactId>
    <version>5.12.1</version>
    </dependency>

    <?xml version="1.0" encoding="UTF-8"?>
    <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"
    xmlns:jms="http://www.springframework.org/schema/jms"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
    http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms.xsd">

    <!-- ======================================= 生产者配置 ============================================-->
    <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->
    <bean id="producerConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="${jms.broker.url}"/>
    <property name="useAsyncSend" value="true"/>
    <!-- clinetIDPrefix属性, 符合此前缀规则的consumer将成为该TOPIC的持久订阅者, 才可以获得此消息 -->
    <!--<property name="clientIDPrefix" value="${jms.client.id.prefix}"/>-->
    </bean>

    <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
    <bean id="producerCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
    <property name="targetConnectionFactory" ref="producerConnectionFactory"/>
    <property name="reconnectOnException" value="true"/>
    <property name="cacheConsumers" value="false"/>
    <property name="cacheProducers" value="false"/>
    <property name="sessionCacheSize" value="50"/>
    </bean>

    <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->
    <bean id="defaultJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
    <property name="connectionFactory" ref="producerCachingConnectionFactory"/>
    <!-- 使 deliveryMode, priority, timeToLive设置生效-->
    <property name="explicitQosEnabled" value="true"/>
    <!-- 设置NON_PERSISTENT模式, 默认为PERSISTENT -->
    <property name="deliveryPersistent" value="true"/>
    <!-- 设置优先级0-9, 默认为4 -->
    <property name="priority" value="4"/>
    </bean>

    <!-- ======================================= 消费者配置 ============================================-->
    <!-- 持久化主题订阅者(保证订阅者重启后能获得丢失的消息)ActiveMQ 连接工厂 -->
    <bean id="consumerConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="${jms.broker.url}"/>
    <!-- Durable订阅者必须设置ClientId -->
    <!--<property name="clientID" value="${jms.client.id.prefix}"/>-->
    <property name="redeliveryPolicy">
    <bean name="defaultRedeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy">
    <property name="maximumRedeliveries" value="10"/>
    <property name="redeliveryDelay" value="60000"/>
    </bean>
    </property>
    </bean>

    <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
    <bean id="consumerCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
    <property name="targetConnectionFactory" ref="consumerConnectionFactory"/>
    <property name="reconnectOnException" value="true"/>
    <property name="cacheConsumers" value="false"/>
    <property name="cacheProducers" value="false"/>
    <property name="sessionCacheSize" value="50"/>
    </bean>

    <jms:listener-container connection-factory="consumerCachingConnectionFactory" response-destination-type="queue" acknowledge="client" >
    <jms:listener destination="${jms.queue.charge.name}" ref="chargeMessageListener" concurrency="50-100" />
    <jms:listener destination="${jms.queue.charge.dlq}" ref="chargeMsgDLQListener" concurrency="5"
    selector="isPutBack IS NULL OR isPutBack=false"/>
    <jms:listener destination="${jms.queue.retry.charge.name}" ref="retryChargeMessageListener" concurrency="50-100" />
    </jms:listener-container>

    <!-- 消息监听器 -->
    <bean id="chargeMessageListener" class="com.virtual.api.jms.ChargeMessageListener"/>
    <bean id="chargeMsgDLQListener" class="com.virtual.api.jms.ChargeMsgDLQListener"/>
    <bean id="retryChargeMessageListener" class="com.virtual.api.jms.RetryChargeMessageListener"/>


    </beans>

  • 相关阅读:
    POJ 1753(1)
    2015.12 杭电校赛 Bitwise Equations
    codeforces B
    POJ2387 水水最短路
    CodeForces 337C SDUT秋季训练--周赛(10.31)
    HDU 1241
    POJ 3126 Prime Path
    HDU 2612
    POJ 1426 Find The Multiple
    day94 flask-session 表单验证 信号 SQLALchemy
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/7825232.html
Copyright © 2011-2022 走看看