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();
}
}
}
至此,简单的整合,就完成了