黑马程序员技术交流社区
标题:
Spring 实现远程访问详解——jms和activemq(续)
[打印本页]
作者:
易大帅
时间:
2017-3-26 21:16
标题:
Spring 实现远程访问详解——jms和activemq(续)
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
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2