Spring整合ActiveMQ

来源:互联网 发布:算法研究员是做什么 编辑:程序博客网 时间:2024/06/05 03:35

ActiveMQ的应用场景:
主要是为了减少系统之间的耦合度,就是说一个流程走完,会触发别的不相关的流程,但是为了减少耦合度,不能在当前的流程中在调用其他不相关的服务,于是activeMQ就可以解决此类问题:
这里写图片描述

具体配置如下:

1.加入依赖的mq框架:

这里写图片描述

2.生产者方的配置:

1:工厂(原厂商) Apache 提供2:工厂连接池(原厂商)3:Spring管理工厂连接池4:JmsTemplate 连接ActiveMQ   jdbcTemplate连接Mysql
<!-- AcitveMQ 配置-->    <!-- 工厂  原厂商提供 -->    <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">        <!--  设置连接URL  -->        <property name="brokerURL"         <!--配置mq的服务器的地址-->        value="tcp://192.168.200.128:61616"/>        <!-- 用户名、 -->        <property name="userName" value="admin"/>        <!-- 密码、 -->        <property name="password" value="admin"/>    </bean>    <!-- 工厂连接池 -->    <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean">        <property name="connectionFactory" ref="activeMQConnectionFactory"/>        <!-- 最大 连接数 -->        <property name="maxConnections" value="2"/>    </bean>    <!-- Spring管理起上面的工厂 -->    <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">        <!-- 注入上面的工厂连接池 -->        <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"/>    </bean>    <!-- JmsTemplate由Spring提供   -->    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">        <property name="connectionFactory" ref="connectionFactory"/>        <!-- 默认目标 -->        <property name="defaultDestinationName" value="productId"/>    </bean>

消息生产方发送消息:
这里写图片描述

3.消息消费方配置

1:工厂(原厂商) Apache 提供2:工厂连接池(原厂商)3:Spring管理工厂连接池4:监听器  ActiveMQ 是否有消息   如果有接收进来
<!-- AcitveMQ 配置-->    <!-- 工厂  原厂商提供 -->    <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">        <!--  设置连接URL  -->        <property name="brokerURL"         <!--配置mq的服务器的地址-->        value="tcp://192.168.200.128:61616"/>        <!-- 用户名、 -->        <property name="userName" value="admin"/>        <!-- 密码、 -->        <property name="password" value="admin"/>    </bean>    <!-- 工厂连接池 -->    <bean id="pooledConnectionFactoryBean" class="org.apache.activemq.pool.PooledConnectionFactoryBean">        <property name="connectionFactory" ref="activeMQConnectionFactory"/>        <!-- 最大 连接数 -->        <property name="maxConnections" value="2"/>    </bean>    <!-- Spring管理起上面的工厂 -->    <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">        <!-- 注入上面的工厂连接池 -->        <property name="targetConnectionFactory" ref="pooledConnectionFactoryBean"/>    </bean>    <!-- JmsTemplate由Spring提供   -->    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">        <property name="connectionFactory" ref="connectionFactory"/>        <!-- 默认目标 -->        <property name="defaultDestinationName" value="productId"/>    </bean><!--配置监听器--><bean id="solrCustomerMessageListener" class="com.chukun.babasport.message.SolrCustomerMessageListener"></bean>  <bean   class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory"></property><!--与生产方配置的相同名称--><property name="destinationName" value="productId"></property><property name="messageListener" ref="solrCustomerMessageListener"></property>  </bean>

监听器代码:

import org.apache.activemq.command.ActiveMQTextMessage;public class SolrCustomerMessageListener  implements MessageListener{    @Override    public void onMessage(Message message) {        ActiveMQTextMessage amtm = (ActiveMQTextMessage) message;        try {            System.out.println(amtm.getText());        } catch (JMSException e) {            e.printStackTrace();        }    }}

至此,简单的整合,就完成了

原创粉丝点击