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/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...
随机推荐
- 用CSS做导航菜单的4个理由
导航结构在网站设计中是起到决定性作用的,导航菜单/栏常常通过颜色.排版.形状和一些图片来帮助网站创造更好的视觉和感受,它是网页设计的关键元素.虽然网站导航菜单的外观是网页设计中关系到整个设计成败与否的 ...
- iOS开发系列-NSFileManager
NSFileManager NSFileManager类主要对文件和目录的操作(删除.修改.移动.复制等等).
- Random类和Math.random()方法
一.Random类的定义Random类位于 java.util 包中,主要用于生成伪 随机数Random类将 种子数 作为随机算法的起源数字,计算生成伪随机数,其与生成的随机数字的区间无关创建Rand ...
- Odoo Javascript 参考
本文介绍了odoo javascript框架.从代码行的角度来看,这个框架不是一个大的应用程序,但它是非常通用的,因为它基本上是一个将声明性接口描述转换为活动应用程序的机器,能够与数据库中的每个模型和 ...
- String str = new String("abc"),这段代码一共生成了几个String对象?为什么?
String str = new String("abc")创建了俩个对象,首先为创建一个String对象"abc",然后在调用String类的构造方法时 pu ...
- SQL Server SQLGetData()
{ /* 语法 C++ SQLRETURN SQLGetData( SQLHSTMT StatementHandle, SQLUSMALLINT Col_or_Param_Num, SQLSMALLI ...
- 多线程编程9认识等待函数WaitForSingleObject
一下子跳到等待函数 WaitForSingleObject, 是因为下面的 Mutex.Semaphore.Event.WaitableTimer 等同步手段都要使用这个函数; 不过等待函数可不止 W ...
- react diff 极简版
为什么react这么快呢 ? 因为react用了虚拟DOM: 但是每次虚拟DOM转真实DOM不也是很浪费性能吗 ? nice,所以关键点在Diff算法这里,去对比新旧DOM树,而后通过补丁去更新到真实 ...
- linux下phpstudy安装
linux下phpstudy安装 一.总结 一句话总结: 就是下载然后一步步用指令安装即可 二.linux下phpstudy安装 参考:linux下phpstudy安装https://www.cnbl ...
- JDK9新特性实战:简化流关闭新姿势。
做Java开发的都知道,每个资源的打开都需要对应的关闭操作,不然就会使资源一直占用而造成资源浪费,从而降低系统性能. 关于资源的关闭操作,从JDK7-JDK9有了不少的提升及简化. JDK6 在JDK ...