spring boot 中 rabbit mq基础例子
1、先安装ELANG,再按照RabbitMQ
2、打开RabbitMQ控制台:rabbit command prompt
1、设置elang的路径:set ERLANG_HOME=D:\work_program_file\rabbitmq\elang\erl9.1
设置elang根目录,重要,否则一直提示找不到elang。
2、在控制台输入:rabbitmqctl start_app等待启动,出现:Starting node rabbit@...等字样表示启动成功了,这里示例:Starting node rabbit@MS-20170624IVFG
3、安装管理器:rabbitmq-plugins enable rabbitmq_management,用来访问web管理页面:如下示例
如果安装成功,控制台如下提示:
Enabling plugins on node rabbit@MS-
rabbitmq_management
The following plugins have been con
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to ra
The following plugins have been ena
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
4、通过地址访问web管理控制台,默认端口15672,http://localhost:15672/
5、登录账户通过在控制台创建
创建管理员用户,负责整个MQ的运维
rabbitmqctl add_user kyoxue kyoxue
赋予administrator角色
rabbitmqctl set_user_tags kyoxue administrator
创建RabbitMQ监控用户,负责整个MQ的监控
rabbitmqctl add_user kyoxue1 kyoxue1
赋予monitoring角色:
rabbitmqctl set_user_tags kyoxue1 monitoring
创建某个项目的专用用户,只能访问项目自己的virtual hosts
rabbitmqctl add_user user_proj passwd_proj
赋予其management角色:
rabbitmqctl set_user_tags user_proj management
查看用户
rabbitmqctl list_users
使用户kyoxue具有/这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
rabbitmqctl set_permissions -p / kyoxue '.*' '.*' '.*'
PS:这里设置了权限,在添加队列时可能会提示:Access refused. 表示账户权限设置有问题,去页面控制台:Admin\ kyoxue(用户)\Set permission下面点Set permission按钮重新设置下。
6、停止RabbitMQ:rabbitmqctl stop
7、在Virtual Host:(\)下添加一个测试队列test,如下图:
8、接下来,可以通过连接信息进行发布,订阅了
在springboot配置文件添加:
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=kyoxue
spring.rabbitmq.password=kyoxue
spring.rabbitmq.virtual-host=/
9、引入rabbit mq依赖
这里用的springboot 1.4.3.RELEASE版本
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>${spring-boot.version}</version>
<scope>provided</scope>
</dependency>
10、生成一个队列bean单例,队列名称刚才配置的test
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class RabbitConfig { @Bean
public org.springframework.amqp.core.Queue Queue() {
return new org.springframework.amqp.core.Queue("test");
}
}
11、建一个接收队列消息的客户端监听端,监听的队列名称要一致,这里是test,通过content接收字符文本内容,这里也可以是对象接收,springboot会自动序列,反序列化。
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component; @Component
@RabbitListener(queues="test")
public class TestReceiver {
@RabbitHandler
public void process(String content) {
System.out.println("accept:"+content);
}
}
12、建一个发布端,测试队列
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.chobits81.cc.component.util.DirectCommUtil; @Controller
@RequestMapping(value = "/services/rabbit/test")
public class RabbitTestController{
public static final Logger LOG = LoggerFactory.getLogger(RabbitTestController.class);
@Autowired
private AmqpTemplate rabbitTemplate;
@RequestMapping(value = "/send", method = { RequestMethod.POST, RequestMethod.GET })
public void send(HttpServletRequest request,HttpServletResponse response)
{
PrintWriter printWriter = null;
String string = "";
try {
printWriter = response.getWriter();
response.setContentType("application/json;charset=" + DirectCommUtil.encoding_utf8);
String content = request.getParameter("content");
rabbitTemplate.convertAndSend("test",content);
string = "ok";
} catch (Exception e) {
// TODO: handle exception
LOG.error("异常",e);
}finally {
if (null != printWriter) {
printWriter.print(string);
printWriter.flush();
printWriter.close();
}
}
} }
13、客户端监听
@RabbitListener要结合@EnableRabbit一起使用,所以在springboot启动类上加入@EnableRabbit注解
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
@EnableRabbit
//此处省略了其它注解配置...
public class Application { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
14、启动springboot,通过地址测试效果:
后台客户端接收打印:
spring boot 中 rabbit mq基础例子的更多相关文章
- Spring boot集成Rabbit MQ使用初体验
Spring boot集成Rabbit MQ使用初体验 1.rabbit mq基本特性 首先介绍一下rabbitMQ的几个特性 Asynchronous Messaging Supports mult ...
- Spring Boot and Rabbit MQ 异常的时候消息的状态
我们有一个处理消息的方法. 在处理消息的时候出现了异常,那出现异常后这个消息会怎么处理呢. 根据我们的实际情况的观察,如果出现了异常. 但是你没有捕获或者处理异常,这个消息会一直存在,并且你的系统会持 ...
- Spring Boot中文文档(官方文档翻译 基于1.5.2.RELEASE)
作者:Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, ...
- Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
在上一篇Spring中使用JdbcTemplate访问数据库中介绍了一种基本的数据访问方式,结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端 ...
- Spring Boot中使用Spring-data-jpa
在实际开发过程中,对数据库的操作无非就“增删改查”.就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句 ...
- Spring Boot中使用RabbitMQ
很久没有写Spring Boot的内容了,正好最近在写Spring Cloud Bus的内容,因为内容会有一些相关性,所以先补一篇关于AMQP的整合. Message Broker与AMQP简介 Me ...
- Spring Boot中的缓存支持(一)注解配置与EhCache使用
Spring Boot中的缓存支持(一)注解配置与EhCache使用 随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决 ...
- Spring Boot中使用PostgreSQL数据库
在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...
- Spring Boot中的事务管理
原文 http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...
随机推荐
- 如何收集项目日志统一发送到kafka中?
上一篇(http://qindongliang.iteye.com/blog/2354381 )写了收集sparkstreaming的日志进入kafka便于后续收集到es中快速统计分析,今天就再写一篇 ...
- 第一个Vus.js
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- RAKsmart服务器受消费者青睐的原因
随着互联网的快速发展,网站建设变得越来越重要,现在很多做外贸网站的都会选择美国服务器来建设网站,近年来RAKsmart服务器受到广大站长的欢迎,那RAKsmart服务器受消费者青睐的关键是什么呢. 1 ...
- linux命令重定向>、>>、 1>、 2>、 1>>、 2>>、 <(转)
原文章地址:https://www.cnblogs.com/piperck/p/6219330.html >和>>: 他们俩其实唯一的区别就是>是重定向到一个文件,>&g ...
- linux 下使用scp命令传输文件
scp -P 1234 /home/wakasann/test.txt wakasann@192.168.1.30:/var/www/html/ 使用 1234端口,将 test.txt文件传输到服务 ...
- Laravel Illuminate\Http\Exceptions\PostTooLargeException
出错原因是: 请求的post的数据比 php.ini设定的 post_max_size大的原因 解决方法: 增加php.ini中 post_max_size和upload_max_filesize的设 ...
- odoo 分组视图下显示同一批次记录的总数
修改前: 修改后: xml文件: <?xml version="1.0" encoding="utf-8"?> <!-- vim:fdn=3: ...
- XML、JSON、ProtocolBuffer特点比较
XML JSON PB Lua 数据结构支持 复杂结构 简单结构 较复杂结构 复杂结构 数据保存方式 文本 文本 二进制 文本 数据保存大小 大 一般 小 一般 解析效率 慢 一般 快 稍快 语言支持 ...
- Java基础拾遗(一) — 忽略的 Integer 类
学习前我们先看一个笔者之前项目踩过的坑 public static void main(String[] args) { Integer a = 127; Integer b = 127; Syste ...
- <a>标签的SEO优化细节
<a>标签的SEO优化细节 如果需要在新窗口中打开链接,我们使用的方法是在a上加上taget=“_blank”,但很多人不知道这是不符合w3c的规范的,在使用严格的DOCTYPE(xhtm ...