Spring MVC 接入 rabbitMQ
依赖包
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.6.8.RELEASE</version>
</dependency>
spring-xxx.xml 配置文件
<bean id="connectionFactory"
class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<property name="username" value="${mq.user}" />
<property name="password" value="${mq.pwd}" />
<property name="host" value="${mq.address}" />
<property name="port" value="${mq.port}" />
<property name="virtualHost" value="${mq.vhost}" />
</bean> <bean id="rabbitAdmin" class="org.springframework.amqp.rabbit.core.RabbitAdmin">
<constructor-arg ref="connectionFactory" />
</bean> <bean id="serializerMessageConverter"
class="org.springframework.amqp.support.converter.SimpleMessageConverter" /> <!-- 创建rabbitTemplate 消息模板类 -->
<bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<constructor-arg ref="connectionFactory" />
<property name="exchange" value="${mq.exchange}" />
<property name="routingKey" value="${mq.routingKey}" />
<property name="queue" value="${mq.queue}" />
<property name="messageConverter" ref="serializerMessageConverter" />
</bean> <bean id="queue" class="org.springframework.amqp.core.Queue">
<constructor-arg index="0" value="${mq.queue}"></constructor-arg>
<constructor-arg index="1" value="true"></constructor-arg>
<constructor-arg index="2" value="false"></constructor-arg>
<constructor-arg index="3" value="false"></constructor-arg>
</bean>
<!--
<bean id="directExchange" class="org.springframework.amqp.core.DirectExchange">
<constructor-arg index="0" value="${mq.routingKey}"></constructor-arg>
<constructor-arg index="1" value="true"></constructor-arg>
<constructor-arg index="2" value="false"></constructor-arg>
</bean>
<util:map id="arguments">
</util:map> <bean id="binding" class="org.springframework.amqp.core.Binding">
<constructor-arg index="0" value="${mq.queue}"></constructor-arg>
<constructor-arg index="1" value="QUEUE"></constructor-arg>
<constructor-arg index="2" value="${mq.exchange}"></constructor-arg>
<constructor-arg index="3" value="${mq.routingKey}"></constructor-arg>
<constructor-arg index="4" value="#{arguments}"></constructor-arg>
</bean>
-->
<bean id="rmqProducer" class="com.xxxx.RmqProducer">
<property name="rabbitTemplate" ref="rabbitTemplate" />
</bean>
<bean id="rmqConsumer" class="com.xxxx.RmqConsumer" />
<bean id="messageListenerAdapter"
class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="rmqConsumer" />
<property name="defaultListenerMethod" value="rmqConsumeMessage"></property>
<property name="messageConverter" ref="serializerMessageConverter"></property>
</bean> <bean id="listenerContainer"
class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
<property name="queues" ref="queue"></property>
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="messageListener" ref="messageListenerAdapter"></property>
</bean>
profile.xml 中相关配置
mq.address=xxxx
mq.exchange=xxxxx
mq.routingKey=xxx
mq.queue=xxx
mq.port=5672
mq.user=xxxx
mq.pwd=xxxx
mq.timeout=5000
mq.vhost=lms
相关类文件
public class RmqProducer {
private static final Logger LOGGER = LoggerFactory.getLogger(RmqConsumer.class); private RabbitTemplate rabbitTemplate; /**
* 发送信息
*/
public void sendMessage(RabbitMessage msg) {
try {
// 发送信息
rabbitTemplate.convertAndSend(msg);
} catch (Exception e) {
LOGGER.error("rmq消费者任务处理出现异常", e);
}
} public void setRabbitTemplate(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
}
public class RmqConsumer {
private static final Logger LOGGER = LoggerFactory.getLogger(RmqConsumer.class); public void rmqConsumeMessage(Object obj) {
LOGGER.info("rmq 消费者任务:{}", JSON.toJSONString(obj));
// TODO 具体的消费策略
}
}
使用
- 使用时只需要注入相应的bean即可使用
- 如果有多个队列,注意以下Bean的定义
- rmqProducer
- rmqConsumer
- messageListenerAdapter
- LisetenerContainer
备注
- 如果已经在rabbit的图形化界面bind相关的exchange 和 quene,橙色斜体加粗子部分可以省略;
Spring MVC 接入 rabbitMQ的更多相关文章
- 【RabbitMQ系列】 Spring mvc整合RabbitMQ
一.linux下安装rabbitmq 1.安装erlang环境 wget http://erlang.org/download/otp_src_18.2.1.tar.gz tar xvfz otp_s ...
- spring mvc 接入cas登录
费劲千辛万苦开发出来的系统要接入sso 让我头大还好有大佬帮忙 首先在配置文件中写入启动的ip地址 HOST=http://127.0.0.1:8080/ 地址写你的地址和端口 然后在pom文件中导入 ...
- 实战 Spring MVC接入支付宝即时到账 (部分代码)
下面就拿我项目中的部分代码来实践一下. 支付请求 首先,是提交表单 fund.jsp(这里我表单只需要用户填交易金额,其他的订单号之类的全部后台生成) <form id="deposi ...
- 彻底解决Spring mvc中时间的转换和序列化等问题
痛点 在使用Spring mvc 进行开发时我们经常遇到前端传来的某种格式的时间字符串无法用java8的新特性java.time包下的具体类型参数来直接接收. 我们使用含有java.time封装类型的 ...
- 彻底解决Spring mvc中时间类型的转换和序列化问题
在使用Spring mvc 进行开发时我们经常遇到前端传来的某种格式的时间字符串无法用java8时间包下的具体类型参数来直接接收.同时还有一系列的序列化 .反序列化问题,在返回前端带时间类型的同样会出 ...
- Spring MVC 的 XML 配置方式
索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: solution/pom.xml solution/webapi/pom.xml solution/mapper/ ...
- Spring MVC 文件上传 & 文件下载
索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: pom.xml WebConfig.java index.jsp upload.jsp FileUploadCon ...
- Spring MVC 的 Java Config ( 非 XML ) 配置方式
索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: solution/pom.xml web/pom.xml web.xml WebInitializer.java ...
- 85. Spring Boot集成RabbitMQ【从零开始学Spring Boot】
这一节我们介绍下Spring Boot整合RabbitMQ,对于RabbitMQ这里不过多的介绍,大家可以参考网络上的资源进行安装配置,本节重点是告诉大家如何在Spring Boot中使用Rabbit ...
随机推荐
- hql语法及自定义函数(含array、map讲解) + hive的java api
本博文的主要内容如下: .hive的详细官方手册 .hive支持的数据类型 .Hive Shell .Hive工程所需依赖的jar包 .hive自定义函数 .分桶4 .附PPT hiv ...
- RobotFramework自动化测试框架(3)- RobotFramework扩展测试库、资源文件、变量文件
扩展测试库 扩展测试库可使用python或java语言编写.后直接导入需要使用的测试用例文件即可. 具体的实现和操作,后续补充.请参考官网. 资源文件 在资源文件中定义用户关键字,它提供了共享机制,即 ...
- 浅谈web前端性能优化
前端性能优化: 一.尽可能减少前端http请求. 1.合并优化脚本文件和css文件. 2.同种类型的背景图片尽量放在一起,用css控制显示. 二.使用浏览器缓存. 如果能强制浏览器缓存在本地,将会降低 ...
- 洛谷 P3810 【模板】三维偏序(陌上花开) (cdq分治模板)
在solve(L,R)中,需要先分治solve两个子区间,再计算左边区间修改对右边区间询问的贡献. 注意,计算额外的贡献时,两子区间各自内部的顺序变得不再重要(不管怎么样左边区间的都发生在右边之前), ...
- 数据库sql 使用 lag 和OVER 函数和 like 使用 小技巧
1. sample 1: Lag()就是取当前顺序的上一行记录.结合over就是分组统计数据的.Lag()函数,就是去上N行的字段的数据. SQL> select * from x; A---- ...
- redirect与forward的区别
文件名称:forward.jsp <html> <head><title> 跳转 </title> </head> <body> ...
- P1482 Cantor表(升级版)
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...
- Docker 容器镜像操作
1.停止所有的container,这样才能够删除其中的images:docker stop $(docker ps -a -q)如果想要删除所有container的话再加一个指令: docker rm ...
- arttemplate模板引擎有假数据返回数据多层内嵌的渲染方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- core下的routelink
core mvc中 routelink返回和 framework mvc中返回的不一样,core中返回 IHtmlContent, 而 fw 中返回 MvcHtmlString 在写分页方法中用到了r ...