一、前言

RabbitMQ是实现了AMQP(高级消息队列协议)的开源消息中间件,RabbitMQ服务器是用Erlang(面向并发的编程语言)编写的。

RabbitMQ官网下载地址:https://www.rabbitmq.com/download.html

Docker部署则执行如下命令即可

# RABBITMQ_DEFAULT_USER:用户名,RABBITMQ_DEFAULT_PASS:密码 这里修改为自己的即可
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/rabbitmq/data:/var/lib/rabbitmq --hostname my-rabbit --restart=always -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3-management

温馨小提示:本文只是简单的通过rabbitmq发送消息接收消息,适用于新手简单入门了解~

二、SpringBoot 整合 RabbitMQ

1、pom.xml 中引入 rabbitmq 依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2、application.yml 中配置 rabbitmq

spring:
# RabbitMQ配置
rabbitmq:
host: 127.0.0.1
port: 5672
# 填写自己安装rabbitmq时设置的账号密码,默认账号密码为`guest`
username: admin
password: admin
virtual-host: my_vhost # 填写自己的虚拟机名,对应可查看 `127.0.0.1:15672/#/users` 下Admin中的`Can access virtual hosts`信息

3、rabbitmq配置文件 - 配置一个简单的Queue(消息队列)

生产者发送消息到队列,消费者从队列中获取消息

@Configuration
public class RabbitConfig { public static final String QUEUE_KEY = "hello_world"; @Bean
public Queue queue() {
// durable: true 标识开启消息队列持久化 (队列当中的消息在重启rabbitmq服务的时候还会存在)
return new Queue(QUEUE_KEY, true);
} }

4、生产者 - 发送消息

@Slf4j
@Component
public class MsgSender { @Autowired
private AmqpTemplate rabbitTemplate; public void send() {
String msgContent = "Hello World ~";
log.info("生产者发送消息 : " + msgContent);
this.rabbitTemplate.convertAndSend(RabbitConfig.QUEUE_KEY, msgContent);
} }

5、消费者 - 接收消息

@Slf4j
@Component
@RabbitListener(queues = RabbitConfig.QUEUE_KEY)
public class MsgReceiver { @RabbitHandler
public void process(String msg) {
log.info("消费者接收消息 : " + msg);
} }

6、测试

@RestController
public class RabbitController { @Autowired
private MsgSender msgSender; @GetMapping(value = "/sendMsg", produces = "application/json;charset=utf-8")
@ApiOperation(value = "发送消息", httpMethod = "GET", response = ApiResult.class)
public ApiResult sendMsg() {
msgSender.send();
return ApiResult.ok();
} }

7、运行项目,访问 http://127.0.0.1:8080/sendMsg

本文案例demo源码

https://gitee.com/zhengqingya/java-workspace

最新文章

  1. Building a RESTful Web Service
  2. Android 第三方开源库收集整理(转)
  3. Erlang数据类型的表示和实现(4)——boxed 对象
  4. SHOI2008小约翰的游戏John
  5. ios通知-kvo
  6. rnqoj-30- [stupid]愚蠢的矿工-树形DP
  7. LNMP环境出现”504 gateway time-out”错误的解决方案
  8. java IMAGEIO
  9. Jvm垃圾收集器和垃圾回收算法
  10. 专注于C#.Net WPF软件开发-软件反编译-软件破解-逆向-靖芯科技-包括安卓APK反编译
  11. python中remove的一些坑
  12. BootstrapTable使用实例
  13. shell脚本和python脚本实现批量ping IP测试
  14. opencv对手写数字进行无黏连切割
  15. As3截图转换为ByteArray传送给后台node的一种方法
  16. 学习dbms_parallel_execute包
  17. java8中ConcurrentHashMap
  18. Java-JUC(九):使用Lock替换synchronized,使用Condition的await,singal,singalall替换object的wait,notify,notifyall实现线程间的通信
  19. C++ 第七课 标准 C I/O
  20. keras 类似问题解决:model找不到,或者无法下载

热门文章

  1. @loj - 2496@ 「AHOI / HNOI2018」毒瘤
  2. 04Redis入门指南笔记(内部编码规则简介)
  3. @codeforces - 1205B@ Shortest Cycle
  4. HZOJ 那一天我们许下约定
  5. 学习canvas画布
  6. hdu 2473 Junk-Mail Filter (暴力并查集)
  7. LRJ-Example-06-02-Uva514
  8. 小程序加载大图片 使用widthFix时,图片先拉伸然后才显示完全
  9. HDU 2602Bone Collector 01背包问题
  10. pytorch lstm crf 代码理解 重点