ActiveMQ

spring集成ActiveMQ

消息发送者

<!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->  
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  
   <property name="brokerURL" value="tcp://localhost:61616"/>  
</bean>  
  
   
  <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">  
   <property name="connectionFactory" ref="targetConnectionFactory"/>  
   <property name="maxConnections" value="10"/>  
</bean>  
  
  <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->  
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">  
   <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  
   <property name="targetConnectionFactory" ref="pooledConnectionFactory"/>  
</bean> 
   
   
   
    <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->  
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  
   <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->  
    <property name="connectionFactory"  ref="connectionFactory"/>  
    <property name="defaultDestination" ref="queueDestination" />
        <!-- 区别它采用的模式:false是p2p;true是订阅   -->
        <property name="pubSubDomain" value="false" />
       <!--  <property name="messageConverter" ref="messageConvertForSys" /> -->
    <!-- 等待消息的时间(ms) -->  
        <!-- <property name="receiveTimeout" value="3000" />  -->
</bean> 
   
   
   <!--这个是队列目的地,点对点的-->  
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">  
   <constructor-arg>  
       <value>queue</value>  
   </constructor-arg>  
</bean>  
<!--这个是主题目的地,一对多的-->  
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">  
   <constructor-arg value="topic"/>  
</bean> 
   
   
 <!-- 消息生产 -->
   <!--  <bean id="messageProducer"
        class="com.jianzhibao.enterprise.web.utils.MessageProducer">
        <property name="jmsTemplate" ref="jmsTemplate"></property> 
    </bean>
     -->


消息接收者

 <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->  
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  
   <property name="brokerURL" value="tcp://localhost:61616"/>  
</bean>  
  
   
    <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">  
   <property name="connectionFactory" ref="targetConnectionFactory"/>  
   <property name="maxConnections" value="10"/>  
</bean>  
  
  <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->  
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">  
   <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  
   <property name="targetConnectionFactory" ref="pooledConnectionFactory"/>  
</bean> 
   
   
   
    <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->  
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  
   <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->  
   <property name="connectionFactory" ref="connectionFactory"/>  
      <!--   <property name="messageConverter" ref="messageConvertForSys" /> -->
</bean> 
   
     <!-- 消息转换器 -->  
   <!-- <bean id="messageConvertForSys" class="com.sulai24.api.utils.MessageConvertForSys"></bean>  -->
   
   <!--这个是队列目的地,点对点的-->  
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">  
   <constructor-arg>  
       <value>queue</value>  
   </constructor-arg>  
</bean>  
<!--这个是主题目的地,一对多的-->  
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">  
   <constructor-arg value="topic"/>  
</bean> 
    
      <!-- 同步数据jms消息监听器,session消息监听器 -->  
  <!--  <bean id="messageListener" class="com.sulai24.api.utils.JMSMessageListener">
    </bean>  -->
  <!--   <bean id="sessionmessageListener" class="com.sulai24.api.utils.SessionJMSMessageListener">
    <property name="destination" ref="queueDestination"/>
    </bean> -->
    
    
    <!-- 消息监听容器 -->  
  <bean id="jmsContainer"  
        class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 
        <property name="concurrentConsumers" value="1" /> 
        <property name="connectionFactory" ref="connectionFactory" />  
        <property name="destination" ref="queueDestination" />  
        <property name="messageListener" ref="messageConsumer" />
        <property name="pubSubNoLocal" value="false"></property>    
    </bean>
   
   
   <!-- 消息消费者 -->
    <!-- <bean id="messageConsumer"
        class="com.sulai24.api.utils.MessageConsumer">
        <property name="jmsTemplate" ref="jmsTemplate"></property>
    </bean> -->


消息持久化,防止消息传输中,发生服务故障而收不到消息

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  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">


    <!-- Allows us to use system properties as variables in this configuration file -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>file:${activemq.conf}/credentials.properties</value>
        </property>
    </bean>


    <!--
        The <broker> element is used to configure the ActiveMQ broker.
    -->
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">


        <!--
            For better performances use VM cursor and small memory limit.
            For more information, see:


            http://activemq.apache.org/message-cursors.html


            Also, if your producer is "hanging", it's probably due to producer flow control.
            For more information, see:
            http://activemq.apache.org/producer-flow-control.html
        -->


        <destinationPolicy>
            <policyMap>
              <policyEntries>
                <policyEntry topic=">" producerFlowControl="true">
                    <!-- The constantPendingMessageLimitStrategy is used to prevent
                         slow topic consumers to block producers and affect other consumers
                         by limiting the number of messages that are retained
                         For more information, see:


                         http://activemq.apache.org/slow-consumer-handling.html


                    -->
                  <pendingMessageLimitStrategy>
                    <constantPendingMessageLimitStrategy limit="1000"/>
                  </pendingMessageLimitStrategy>
                </policyEntry>
                <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
                  <!-- Use VM cursor for better latency
                       For more information, see:


                       http://activemq.apache.org/message-cursors.html


                  <pendingQueuePolicy>
                    <vmQueueCursor/>
                  </pendingQueuePolicy>
                  -->
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy>




        <!--
            The managementContext is used to configure how ActiveMQ is exposed in
            JMX. By default, ActiveMQ uses the MBean server that is started by
            the JVM. For more information, see:


            http://activemq.apache.org/jmx.html
        -->
        <managementContext>
            <managementContext createConnector="false"/>
        </managementContext>


        <!--
            Configure message persistence for the broker. The default persistence
            mechanism is the KahaDB store (identified by the kahaDB tag).
            For more information, see:


            http://activemq.apache.org/persistence.html
        -->
        <persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql_jianzhibao"/>
            <!--kahaDB  dataSource="#mysql-jianzhibao"/-->
        </persistenceAdapter>




          <!--
            The systemUsage controls the maximum amount of space the broker will
            use before slowing down producers. For more information, see:
            http://activemq.apache.org/producer-flow-control.html
            If using ActiveMQ embedded - the following limits could safely be used:


        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="20 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="1 gb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="100 mb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>
        -->
          <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="64 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="100 gb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="50 gb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>


        <!--
            The transport connectors expose ActiveMQ over a given protocol to
            clients and other brokers. For more information, see:


            http://activemq.apache.org/configuring-transports.html
        -->
        <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>
        </transportConnectors>


        <!-- destroy the spring context on shutdown to stop jetty -->
        <shutdownHooks>
            <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" />
        </shutdownHooks>


    </broker>



<bean id="mysql_jianzhibao" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
<property name="url" value="jdbc:mysql://localhost/sulai?relaxAutoCommit=true"/>  
<property name="username" value="root"/>  
<property name="password" value="root"/>  
<property name="maxActive" value="200"/>  
<property name="poolPreparedStatements" value="true"/>  
</bean> 

    <!--
        Enable web consoles, REST and Ajax APIs and demos


        Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details
    -->
    <import resource="jetty.xml"/>


</beans>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值