springmvc+activemq1

来源:互联网 发布:php培训机构哪家好 编辑:程序博客网 时间:2024/06/09 14:44

消息中间件(JMS)学习教程:http://blog.csdn.net/u014803081/article/details/73741052
centos下安装服务:http://blog.csdn.net/u014803081/article/details/73732375
activemq点对点模式:http://blog.csdn.net/u014803081/article/details/73741313
activemq发布者/订阅模式模式:http://blog.csdn.net/u014803081/article/details/73741413
activemq+springmvc1:http://blog.csdn.net/u014803081/article/details/73742071
activemq+springmvc2:http://blog.csdn.net/u014803081/article/details/73743300


springmvc-最基础配置:http://blog.csdn.net/u014803081/article/details/74740385


现根据上面的基础篇配好,然后做下面修改

这一篇是activemq+springmvc没有监听的模式,需要手动去消费消息

先附上工程结构
这里写图片描述

maven依赖

<dependency>    <groupId>org.apache.activemq</groupId>    <artifactId>activemq-core</artifactId>    <version>5.7.0</version></dependency><dependency>    <groupId>org.apache.activemq</groupId>    <artifactId>activemq-pool</artifactId>    <version>5.12.1</version></dependency>

新增spring-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:amq="http://activemq.apache.org/schema/core"       xmlns:jms="http://www.springframework.org/schema/jms"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="        http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd        http://www.springframework.org/schema/jms        http://www.springframework.org/schema/jms/spring-jms-4.2.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context-4.2.xsd        http://activemq.apache.org/schema/core        http://activemq.apache.org/schema/core/activemq-core-5.12.1.xsd">    <amq:connectionFactory id="amqConnectionFactory"                           brokerURL="tcp://localhost:61616"                           userName="admin"                           password="admin" />    <!-- 配置JMS连接工长 -->    <bean id="connectionFactory"          class="org.springframework.jms.connection.CachingConnectionFactory">        <constructor-arg ref="amqConnectionFactory" />        <property name="sessionCacheSize" value="100" />    </bean>    <!-- 定义消息队列(Queue) -->    <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">        <!-- 设置消息队列的名字 -->        <constructor-arg>            <value>springmvc_queue</value>        </constructor-arg>    </bean>    <!-- 配置JMS模板(Queue),Spring提供的JMS工具类,它发送、接收消息。 -->    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">        <property name="connectionFactory" ref="connectionFactory" />        <property name="defaultDestination" ref="destination" />        <property name="receiveTimeout" value="10000" />        <!-- true是topic,false是queue,默认是false,此处显示写出false -->        <property name="pubSubDomain" value="false" />    </bean></beans>

修改 index.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Test</title></head><body>    <a href="/test/test">测试</a>    <br>    <a href="../pages/activemq.html">activemq</a></body></html>

activemq.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><h1>Welcome!!!</h1><h2><a href="../producer?message=ydh">去发消息</a></h2><h2><a href="../cunsumer">从队列中取一个消息</a></h2></body></html>

ActivemqController

import com.ydh.redsheep.activemq.service.ConsumerService;import com.ydh.redsheep.activemq.service.ProducerService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.TextMessage;/** * @description: * @author: yangdehong * @version: 2017/6/23. */@RestControllerpublic class ActivemqController {    //队列名    @Autowired    private Destination destination;    //队列消息生产者    @Autowired    private ProducerService producerService;    //队列消息消费者    @Autowired    private ConsumerService consumerService;    @RequestMapping(value="/producer",method= RequestMethod.GET)    public void producer(@RequestParam("message") String message) {        producerService.sendMessage(destination, message);        System.out.println(" send message =" + message);    }    @RequestMapping(value="/cunsumer",method=RequestMethod.GET)    public void cunsumer() throws JMSException {        TextMessage tm = consumerService.receive(destination);        System.out.println(" revice message = " + tm.getText());    }}

ProducerService

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jms.core.JmsTemplate;import org.springframework.stereotype.Service;import javax.jms.Destination;import javax.jms.TextMessage;/** * @description: * @author: yangdehong * @version: 2017/6/23. */@Servicepublic class ProducerService {    @Autowired    private JmsTemplate jmsTemplate;    /**     * 向指定队列发送消息     */    public void sendMessage(Destination destination, final String msg) {        System.out.println("向队列" + destination.toString() + "发送了消息------------" + msg);        jmsTemplate.send(session -> {            TextMessage tm = session.createTextMessage(msg);            return tm;        });    }    /**     * 向默认队列发送消息     */    public void sendMessage(final String msg) {        String destination =  jmsTemplate.getDefaultDestination().toString();        System.out.println("向队列" +destination+ "发送了消息------------" + msg);        jmsTemplate.send(session -> {            TextMessage tm = session.createTextMessage(msg);            return tm;        });    }}

ConsumerService

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jms.core.JmsTemplate;import org.springframework.stereotype.Service;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.TextMessage;/** * @description: * @author: yangdehong * @version: 2017/6/23. */@Servicepublic class ConsumerService {    @Autowired    private JmsTemplate jmsTemplate;    /**     * 接收消息     */    public TextMessage receive(Destination destination) {        TextMessage tm = (TextMessage) jmsTemplate.receive(destination);        try {            System.out.println("从队列" + destination.toString() + "收到了消息:\t"                    + tm.getText());        } catch (JMSException e) {            e.printStackTrace();        }        return tm;    }}
原创粉丝点击