A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

Spring 实现远程访问详解——jms和activemq(a123demi)  
三.  多服务器异步访问(远程访问)

上一节我们实现了单web服务器响应异步通信。本节将实现多web服务器实现异步通信。
1.      实现流程

1)      引入jms和activemq相关的依赖

2)      Spring 配置jms和activemq

3)      定义消息订阅者(消费者)

4)      实例测试
2.      具体实现
1)      引入jms和activemq相关的依赖

类似上一节依赖
2)      Spring 配置jms和activemq

类似上一节配置,只配置订阅者,如下:



<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:amq="http://activemq.apache.org/schema/core"
    xmlns:jms="http://www.springframework.org/schema/jms"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.2.xsd
       http://activemq.apache.org/schema/core
       http://activemq.apache.org/schema/core/activemq-core-5.9.0.xsd
       http://www.springframework.org/schema/jms
        http://www.springframework.org/schema/jms/spring-jms-4.0.xsd">

    <description>application-context-activemqconfig</description>

    <!--activemq -->
    <amq:connectionFactory id="amqConnectionFactory"
       brokerURL="tcp://localhost:61616" userName="admin" password="admin"/>
      
    <bean id="connectionFactory"
       class="org.springframework.jms.connection.CachingConnectionFactory">
       <constructor-arg ref="amqConnectionFactory"/>
       <property name="sessionCacheSize"value="100" />
    </bean>
    <!-- ====Producer side start==== -->
    <!-- 定义JmsTemplate的Queue类型 -->
    <!-- <beanid="jmsQueueTemplate"class="org.springframework.jms.core.JmsTemplate">
       <constructor-arg ref="connectionFactory" />
       非pub/sub模型(发布/订阅),即队列模式
       <property name="pubSubDomain"value="false" />
    </bean>
    定义JmsTemplate的Topic类型
    <bean id="jmsTopicTemplate"class="org.springframework.jms.core.JmsTemplate">
       <constructor-arg ref="connectionFactory" />
       pub/sub模型(发布/订阅)
       <property name="pubSubDomain"value="true" />
    </bean> -->
    <!-- 定义Topic监听器 -->
    <jms:listener-container destination-type="topic"
       container-type="default" connection-factory="connectionFactory"
       acknowledge="auto">
       <jms:listener destination="test.topic"ref="topicReceiver" />
       <jms:listener destination="test.topic"ref="topicReceiver2" />
    </jms:listener-container>
</beans>


3)      定义消息订阅者(消费者)
a.      Topic模式订阅者1

package com.lm.core.service.receiver;

importjavax.jms.JMSException;
importjavax.jms.Message;
importjavax.jms.MessageListener;
importjavax.jms.TextMessage;

importorg.springframework.stereotype.Component;

@Component
public classTopicReceiver implements MessageListener {
       @Override
       public void onMessage(Message message) {
                 try {
                          System.out.println("TopicReceiver1client接收到消息:"
                                             +((TextMessage) message).getText());
                 } catch (JMSException e) {
                          e.printStackTrace();
                 }
       }
}


b.      Topic模式订阅者2

packagecom.lm.core.service.receiver;

importjavax.jms.JMSException;
importjavax.jms.Message;
importjavax.jms.MessageListener;
importjavax.jms.TextMessage;

importorg.springframework.stereotype.Component;

@Component
publicclass TopicReceiver2 implements MessageListener {
         @Override
         public void onMessage(Message message){
                  try {
                           System.out.println("TopicReceiver2client:接收到消息:"
                                              +((TextMessage) message).getText());
                  } catch (JMSException e) {
                           e.printStackTrace();
                  }
         }
}


4)      实例测试

启动activemq服务,tomcat启动server和client

          从日志可以看出发送消息时,server和client响应到消息。




查看原文>> 1

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马