Spring整合ActiveMQ

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();
        }
    }

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值