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 的时间复杂度
Python内置方法的时间复杂度 本文翻译自Python Wiki 本文基于GPL v2协议,转载请保留此协议. 本页面涵盖了Python中若干方法的时间复杂度(或者叫“大欧”,“Big O”).该时 ...
- Spring Cloud Feign组件
采用Spring Cloud微服务框架后,经常会涉及到服务间调用,服务间调用采用了Feign组件. 由于之前有使用dubbo经验.dubbo的负载均衡策略(轮训.最小连接数.随机轮训.加权轮训),du ...
- Windows(7)上那些好用的软件及优化技巧(原创)
*本文为原创内容,转载请注明作者和出处:www.cnblogs.com/wang1024 软件篇 注:以下软件在百度直接搜索软件名均可找到官网,直接官网下载即可 大众的软件哪个好: 杀毒软件专题 基于 ...
- dev grid 常用方法
绑定数据源 public void Data(){DataTable td = new DataTable();DataRow row = td.NewRow();foreach (GridColum ...
- soe结果为栅格的处理方式
背景 ArcGIS for Server通过rest的形式提供功能在很多的时候,不能满足实际的需求.在日常工作中需要对Server的功能进行扩展,esri提供的一种方式就是使用soe的形式.官方给出的 ...
- Python 模块之 time & datetime
Python 中提供了对时间日期的多种多样的处理方式,主要是在有 time 和 datetime 两个模块. time 在 Python 文档里,time 是归类在 Generic Operating ...
- Linux入门-教学视频学习笔记
视频地址:https://www.bilibili.com/video/av18156598 1.sudo权限 比如说关机.重启.添加其他用户. 2.Shell是什么? 这是一个结构图,比如在外层应用 ...
- beego——构造查询
QueryBuilder提供了一个简单.流畅的SQL查询构造器.在不影响代码可读性的前提下用来快速的建立SQL语句. QueryBuilder在功能上与ORM重合,但是个由利弊,ORM更适合用于简单的 ...
- python全栈开发之OS模块的总结
OS模块 1. os.name() 获取当前的系统 2.os.getcwd #获取当前的工作目录 import os cwd=os.getcwd() # dir=os.listdi ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找
Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找 //查找是否存在 var reg: TPerlRegEx; begin reg := TPerlRegEx.Cre ...