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 ...
随机推荐
- Entity Framework查询生成大量的子查询,如何避免?求救
最近使用Entity Framework做一个中型的项目,一张表含有千万条数据,并没有使用很复杂的查询,只是程序上使用了DTO进行帅选数据,且使用了分页,效果很不理想.经过跟踪sql,我发现很多简单的 ...
- python if x:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @author:happy_code @email: happy_cod ...
- [LintCode] 带重复元素的排列
递归实现: class Solution { public: /** * @param nums: A list of integers. * @return: A list of unique pe ...
- 160704、commons-beanutils.jar常用方法
package com.test.beanutils; import java.lang.reflect.InvocationTargetException;import java.text.Pars ...
- DPM Server切换
DPMserver切换: Dpm有2个volum:副本卷和恢复点卷 (1)首先在exchangeserver上面安装agent (2)在exchangeserver上指定dpmserver: cd&q ...
- Oracle 数据库的组成(instance+database)
Oracle服务器是一种对象关系数据库管理系统,它为信息管理提供开放.综合.集成的方法. Oracle服务器中有多种进进程.内存结构和文件: Oracle服务器由一个Oracle实例和一个Oracle ...
- Java基础 - 面向对象 - 类方法传参
调用方法时可以给该方法传递一个或多个值,传给方法的值叫实参,在方法内部,接收实参的变量叫做形参,形参的声明语法与变量的声明语法一样.形参只在方法内部有效. Java中方法的参数主要有3种,分别为值参数 ...
- Cisco路由器DHCP配置浅析
enable config terminal (进入配置模式) ip dhcp pool global(配置一个根地址池,global是地址池的名称,你可以采用有意义的字符串来表示) config ...
- jsp页面上读取MySQL数据库datetime时间显示问题
mysql数据库中时间字段选用了datetime,如果通过java实现在jsp页面上显示时间为"年-月-日 时:分"等格式,那么如下代码就会有不同的结果! 实体类中两个变量: p ...
- MySQL(多表的表记录的查询)
一.外键约束 1.创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMAR ...