Apache ActiveMQ与Spring的集成使用

1、依赖包

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jms</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.7.0</version>
</dependency>
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-pool</artifactId>
    <version>5.7.0</version>
</dependency>

具体使用的ActiveMQ版本根据自己的实际情况调整。

2、消息中心配置

配置连接工程,并指明MQ的连接地址、用户名和密码。

<!-- mq 消息中心 -->
<bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
    destroy-method="stop">
    <property name="connectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="${jms.brokerURL}" />
            <property name="userName" value="${jms.userName}"/>
            <property name="password" value="${jms.password}"/>
        </bean>
    </property>
</bean>
<!-- Spring提供的JMS工具类,它可以进行消息发送、接收 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <!--true为topic,默认false为queue-->
    <property name="pubSubDomain" value="false" />
    <property name="connectionFactory" ref="connectionFactory"/>
</bean>

3、消息发送

<!-- 定义消息发送者 -->
<bean id="jmsMessageProducer" class="net.zoneland.uum_nxyd.uum.biz.common.service.jms.JmsMessageProducer">
    <property name="jmsTemplate" ref="jmsTemplate"/>
</bean>

JmsMessageProducer为自定义的消息发送类,使用注入的jmsTemplate实现发送业务,具体如下:

 /**
  * 发送消息到指定的队列名
  * @param queueName
  * @param msg
  * @return 如果发送成功,返回消息的编号,否则返回NULL.
  */
 public TextMessage sendMessage(String queueName, String msg) {
     if (null == queueName || queueName.trim().equals("")) {
         return null;
     }
     String[] queueNames = queueName.split("#");
     TextMessage[] rev = sendMessage(queueNames, msg);
     if (null != rev) {
         return rev[0];
     }
     return null;
 }

4、消息接收

<!--定义消息消费者-->
<bean id="jmsConsumer" class="net.zoneland.uum_nxyd.uum.biz.common.service.jms.JmsMessageConsumer"></bean>
<!--监听队列  -->
<bean id="jmsDestination" class="org.apache.activemq.command.ActiveMQQueue">
     <constructor-arg>  
         <value>queue.subsystem.response</value>  
     </constructor-arg>  
 </bean>
<!--监听器  -->
<bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
  <property name="connectionFactory" ref="connectionFactory"/>
  <property name="destination" ref="jmsDestination"/>
  <property name="messageListener" ref="jmsConsumer" />
</bean> 

JmsMessageConsumer为自定义的消息接收类,并且要实现MessageListener接口并@Override其中的onMessage,具体如下:

 /**
   * 监听队列处理业务系统返回消息
   */
  @Override
  public void onMessage(Message message) {
      try {
          TextMessage txtMsg = (TextMessage) message;
          String jsonResponse = StringEscapeUtils.unescapeHtml(txtMsg.getText());
          logger.info(">>>>>>>>>>收到反馈消息:" + jsonResponse);
      } catch (JMSException e) {
          logger.error("解析返回的日志消息出错!", e);
      }
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值