spring配置mq入门案例
第一步:添加maven配置

<!-- mq -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.4.3</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.4.3</version>
</dependency>
第二步:jms的spring配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jms="http://www.springframework.org/schema/jms"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd "> <!-- 公用 -->
<bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>failover://(tcp://mq-master-dev.org:61616)?randomize=false&jms.useAsyncSend=true</value>
</property>
</bean> <!-- 生产者配置 -->
<bean id="jsmConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="jmsFactory"></property>
<property name="sessionCacheSize" value="1" />
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jsmConnectionFactory"></property>
<property name="defaultDestinationName" value="subject"></property>
<property name="deliveryPersistent" value="true"></property>
<property name="pubSubDomain" value="false"></property>
<property name="sessionAcknowledgeMode" value="1"></property>
<property name="explicitQosEnabled" value="true"></property>
<property name="timeToLive" value="604800000"></property>
</bean>
<bean id="queueOne" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="queue.test.one" />
</bean>
<bean id="queueTwo" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="queue.test.two" />
</bean> <!-- 消费者配置 -->
<bean id="poolQueueConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory" ref="jmsFactory"></property>
<property name="maximumActive" value="1"></property>
</bean>
<bean id="testQueueOneListener" class="com.org.qin.mq.TestQueueOneListener" />
<jms:listener-container connection-factory="poolQueueConnectionFactory" destination-type="queue">
<jms:listener destination="queue.test.one" ref="testQueueOneListener" method="onMessage"/>
</jms:listener-container> </beans>
第三步:生产者测试代码

package com.org.qin.common.utils; import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator; public class MQUtil { private static final Logger LOG = LoggerFactory.getLogger(MQUtil.class); /**
* 发送消息
*
* @param message
* :
* @throws InterruptedException
* :
*/
public static void send(JmsTemplate jmsTemplate, Destination desc, final String message) { jmsTemplate.send(desc, new MessageCreator() {
public Message createMessage(Session session) {
Message msg = null;
try{
msg = session.createTextMessage(message);
}
catch(JMSException e){
LOG.error(e.getMessage());
}
return msg; }
});
} }
package com.org.qin.controller.mq; import javax.annotation.Resource;
import javax.jms.Destination;
import javax.servlet.http.HttpServletRequest; import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import com.org.qin.common.utils.MQUtil; @Controller
@RequestMapping("mq")
public class MQController { @Resource
JmsTemplate jmsTemplate; @Resource
Destination queueOne; @Resource
Destination queueTwo; @RequestMapping(value = "/testMqProducer.htm", method = RequestMethod.GET)
@ResponseBody
public String testMqProducer(HttpServletRequest request) { MQUtil.send(jmsTemplate, queueOne, "生产一条消息,测试队列queue.test.one");
MQUtil.send(jmsTemplate, queueTwo, "生产一条消息,测试队列queue.test.two"); return "ok";
} }
第四步:测试生产者
访问:http://localhost:12342/derella-web/mq/testMqProducer.htm 请求几次后。
在页面查看推送信息http://mq-master-dev.org:8161/admin/queues.jsp 如下

点击队列名,查询消息

点击message id 查看详情

第五步:消费者测试代码

package com.org.qin.mq; import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage; public class TestQueueOneListener implements MessageListener { @Override
public void onMessage(Message msg) {
String str;
try{
str = ((TextMessage)msg).getText();
System.out.println("队列one监控信息:" + str);
}
catch(JMSException e){
e.printStackTrace();
} } }
应用启动后,如果有未处理的消息。即可处理。如下图

spring配置mq入门案例的更多相关文章
- Spring学习笔记(一)—— Spring介绍及入门案例
一.Spring概述 1.1 Spring是什么 Spring是一个开源框架,是于2003年兴起的一个轻量级的Java开发框架, 由Rod Johnson 在其著作<Expert one on ...
- SSM-Spring-01:Spring的概念+入门案例
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- Spring 提起Spring,就会想到企业级框架这个词 企业级系统: 1.大规模:用户数量多,数据规模庞大, ...
- quartz(3)--spring整合quartz入门案例
第一步:导入jar <!-- quartz --> <dependency> <groupId>org.quartz-scheduler</groupId&g ...
- spring的IOC入门案例
步骤: 一,导入jar 二,创建类,在类里创建方法 三,创建Spring配置文件,配置创建类 四,写代码测试对象创建
- 配置中心入门案例以及出现Could not resolve placeholder 'XXX' in value "${XXX}"的解决方式
编写配置中心的服务端 创建项目 修改 pom 文件添加 config-server 坐标 <?xml version="1.0" encoding="UTF-8&q ...
- Spring boot 官网学习笔记 - Spring Boot CLI 入门案例
安装CLI https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/2.1.1.RELEASE/spring-b ...
- Spring Boot 简单入门案例
第一:打开idea 找到spring Initializr 第二:点击Next 在点击下一步 找到web之后勾选第一个spring web 就完成了 在写一个类 点击运行 结果如下:
- Spring IOC - 控制反转(依赖注入) - 入门案例 - 获取对象的方式 - 别名标签
1. IOC - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交 由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生命周 ...
- Spring Mvc的入门
SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的. Spring Web MVC是什么: Sprin ...
随机推荐
- python 保存csv文件
利用pandas库, 将numpy的array数据保存成csv格式的文件: import pandas as pd import numpy as np data = pd.read_csv('C:\ ...
- Hibernate 中多对多(many-to-many)关系的查询语句
两个对象: 学生表:Student 课程表:Course 两者的关系是多对多,当查询Student对象,并以Course对象作为条件时的sql语句写法如下: select pa from Studen ...
- .NET面试
作者:最佳菜鸟链接:https://zhuanlan.zhihu.com/p/22224795来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1 .术语 面试出现频率: ...
- POJ 1423 Greatest Common Increasing Subsequence【裸LCIS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1423 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- Java基础 - 面向对象 - 类方法传参
调用方法时可以给该方法传递一个或多个值,传给方法的值叫实参,在方法内部,接收实参的变量叫做形参,形参的声明语法与变量的声明语法一样.形参只在方法内部有效. Java中方法的参数主要有3种,分别为值参数 ...
- elasticsearch数据迁移——elasticsearch-dump使用
先安装好nodejs和nodejs的包管理工具npm.然后安装elasticsearch-dump: npm install elasticdump 下面迁移数据: 先在目的地址创建一个index来储 ...
- struts 文件下载 annotation 注解版
[本文简介] 本文将简单介绍使用 struts2 ,通过零配置和 annotation 实现文件下载功能. [文件夹结构] [web.xml有关struts的配置] <filter> &l ...
- HTML5之WEB Storage
什么是HTML5 web storage? 使用HTML5,web页面能够使用用户的浏览器本地保存数据. 在曾经,通常我们使用cookie来保存用户数据.然而使用web存储更加安全和高速.数据不再包括 ...
- 003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- mongo distinct 指定条件
db.Article.distinct("字段名称",{"Comment.Reply.email" : "xxx"})