您的位置:首页 > 编程语言 > Java开发

Spring整合ActiveMQ

2017-10-09 20:51 281 查看
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();
}
}

}


至此,简单的整合,就完成了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring activemq