版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Smy_0114/article/details/81779365
现在apache官网下载个activemq启起来,教程百度一大堆。
maven项目需在web.xml中加载activemq配置文件。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-context*.xml</param-value>
</context-param>
pom.xml文件下载jar包。
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
<version>5.15.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
activemq配置文件名:spring-context-activemq.xml。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:amq="http://activemq.apache.org/schema/core"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms-4.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core-5.15.4.xsd"
default-lazy-init="true">
<!-- 消息生产者者 start-->
<amq:connectionFactory id="jmsConnectionFactory" brokerURL="tcp://localhost:61616"
userName="admin" password="admin" />
<bean id="myJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<bean class="org.springframework.jms.connection.CachingConnectionFactory ">
<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
<property name="sessionCacheSize" value="100" />
</bean>
</property>
</bean>
<bean id="sendTopic" class="com.jeeplus.modules.activemq.entity.SendTopic">
<property name="template" ref="myJmsTemplate" />
<property name="destination" value="viki_sense" />
<property name="node" value="viki_sense" />
<property name="allNodeStr" value="x,x,x" />
</bean>
<!-- 消息生产者者 end-->
<!-- 消息消费者 start-->
<!-- 监听节点 -->
<amq:queue name="viki_sense" physicalName="viki_sense" />
<!-- 消息接收 -->
<bean id="receiveMessageService"
class="com.jeeplus.modules.activemq.server.ReceiveMessageService">
<property name="destName"><value>viki_sense</value></property>
</bean>
<!-- 订阅 -->
<bean id="senseTopicMessageListener"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="receiveMessageService" />
</bean>
<!-- 消息监听 TOPIC 模式-->
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="viki_sense" />
<property name="messageListener" ref="senseTopicMessageListener" />
</bean>
<!-- 消息消费者 end-->
</beans>
老套路三层结构controller:ActiveMqController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jeeplus.modules.activemq.entity.SendTopic;
@Controller
@RequestMapping(value = "${adminPath}/topic_Send")
public class ActiveMqController {
@Autowired SendTopic sendTopic;
@RequestMapping("/topicSend")
@ResponseBody
public String topicSend(String message){
String result = "success";
sendTopic.sendNode("viki_sense");
return result;
}
}
ReceiveMessageService.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jeeplus.core.service.CrudService;
import com.jeeplus.modules.activemq.entity.XjserivesStateEntity;
import com.jeeplus.modules.activemq.entity.XjsubserviceStateEntity;
import com.jeeplus.modules.activemq.mapper.ReceiveMessageMapper;
@Service
@Transactional(readOnly = true)
public class ReceiveMessageService extends CrudService<ReceiveMessageMapper, XjserivesStateEntity> implements MessageListener {
private String destName;
public void setDestName(String destName) {
this.destName = destName;
}
public void onMessage(Message message) {
// TODO Auto-generated method stub
TextMessage textMessage = (TextMessage) message;
try {
System.out.println(destName);
System.out.println(textMessage.getText());
} catch (Exception e) {
e.printStackTrace();
}
}
SendTopic.java
import org.springframework.jms.core.JmsTemplate;
public class SendTopic {
private JmsTemplate template;
private String destination;
private String node;
private String allNodeStr;
public void sendNode(String message){
template.convertAndSend(node,message);
}
public void sendAllNodes(String message){
for(String node:allNodeStr.split(",")){
template.convertAndSend(node,message);
}
}
public JmsTemplate getTemplate() {
return template;
}
public void setTemplate(JmsTemplate template) {
this.template = template;
}
public String getDestination() {
return destination;
}
public void setDestination(String destination) {
this.destination = destination;
}
public String getNode() {
return node;
}
public void setNode(String node) {
this.node = node;
}
public String getAllNodeStr() {
return allNodeStr;
}
public void setAllNodeStr(String allNodeStr) {
this.allNodeStr = allNodeStr;
}
}
完了。
测试:在浏览器里输入你项目的地址加controller上面的链接直接会返回在界面上。