rabbitmq(一)-基础入门
原文地址:https://www.jianshu.com/p/e186a7fce8cc
在学东西之前,我们先有一个方法论,知道如何学习。学习一个东西一般都遵循以下几个环节:
- xxx是什么,诞生的原因,能解决什么问题。
- 如何安装,如何使用(快起启动一个demo)。
- 涉及到的一些基础概念介绍和基础入门使用。
- 中阶、高阶的功能特性使用。
- 高可用部署方案。
- 原理的深入理解。
这篇文章主要处于第一、二环节,让新手更好得入门。
1、rabbitmq是什么
rabbitmq 是目前非常热门的一款消息中间件。Rabbit 这样名字,是因为兔子行动非常迅速且繁殖起来非常疯狂, RabbitMQ 的开创者认为以此命名这个分布式软件再合适不过了。
RabbitMQ 是采用 Erlang 语言实现 AMQP (Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,所以rabbitmq的特点是可靠性传输,性能在可靠性后面
2、为什么要使用mq,为什么要选rabbitmq
为什么要使用mq?
mq一般有两种模式
一种是点对点模式:主要是为了削峰和异步。
另一种是广播模式:主要是为了业务之间的解耦。
简单说就是业务有需要对流量削峰的场景,有需要对业务解耦场景。
为什么要选rabbitmq?
rabbitmq的特点如下:
1、可靠性: RabbitMQ是为了金融系统而生, 所以特地使用一些机制来保证可靠性,如持久化、传输确认及发布确认等。
2、灵活的路由器:4种路由器
3、扩展性:多个 rabbitmq 节点可以组成个集群,也可以根据实际业务情况动态地扩展集群中节点。
4、高可用:拥有镜像队列防止容灾消息丢失。
让我们使用mq产品做重要的业务处理(例如金额、订单)的时候,我们最基本的述求是
1、可靠稳定,消息不丢失。
2、有集群容灾方案。
3、灵活的功能特性。
4、性能在可靠的基础上
rabbitmq都能完美胜任。
4、rabbitmq的安装
这里只介绍docker安装方式
docker run -d --name myrabbit1 -p 15672:15672 -p 5672:5672 rabbitmq:3.6.15-management
安装之后访问 localhost:15672(localhost改服务器ip)见到如下界面代表安装成功。

使用默认账号guest/guest登录

管理台的界面后续再一个一个地方详细讲解。
4、快速使用的demo
这里以springboot为例子展示如何快速使用rabbitmq
4.1 新建springboot工程同时增加配置
spring.rabbitmq.host=localhost
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
4.2 引入ampq的springboot-start依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
4.3 新建配置文件,初始化队列
@Configuration
public class RabbitMqConfig {
@Bean
public Queue demo(){
Queue demo = new Queue("demo");
return demo;
}
}
4.4 新建消费者、生产者。
@RestController
@RequestMapping
public class Controller {
@Autowired
private RabbitTemplate rabbitTemplate;
@GetMapping("sendMq")
public String sendMq(String msg){
rabbitTemplate.convertAndSend("demo",msg);
return msg;
}
}
@Component
public class DemoLister {
@RabbitListener(queues = "demo")
public void Lister(Message message){
byte[] body = message.getBody();
System.out.println("接受到的消息体:"+new String(body));
}
}
4.5 发送消息查看效果
执行命令curl localhost:8080/sendMq?msg=abc
查看效果

5、最后
git clone -b teacher-1 https://gitee.com/guoeryyj/rabbitmq-teacher.git下载试例代码x
rabbitmq(一)-基础入门的更多相关文章
- RabbitMQ(1)——基础入门
本文章写在了CSDN :https://blog.csdn.net/qq_30348181/article/details/87911398
- C# 消息队列之 RabbitMQ 基础入门
Ø 简介 C# 实现消息队列的方式有很多种,比如:MSMQ.RabbitMQ.EQueue 等,本文主要介绍使用 RabbitMQ 实现消息队列的基础入门.包括如下内容: 1. 什么是消息队列? ...
- ASP.NET Core消息队列RabbitMQ基础入门实战演练
一.课程介绍 人生苦短,我用.NET Core!消息队列RabbitMQ大家相比都不陌生,本次分享课程阿笨将给大家分享一下在一般项目中99%都会用到的消息队列MQ的一个实战业务运用场景.本次分享课程不 ...
- Rabbit MQ 基础入门
Rabbit MQ 学习(一)基础入门 简介 RabbitMQ 简介 为什么选择 RabbitMQ RabbitMQ 的模型架构是什么? AMQP 协议是什么? AMQP 常用命令 概念 生产者和消费 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- 「译」JUnit 5 系列:基础入门
原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...
- .NET正则表达式基础入门
这是我第一次写的博客,个人觉得十分不容易.以前看别人写的博客文字十分流畅,到自己来写却发现十分困难,还是感谢那些为技术而奉献自己力量的人吧. 本教程编写之前,博主阅读了<正则指引>这本入门 ...
- 从零3D基础入门XNA 4.0(2)——模型和BasicEffect
[题外话] 上一篇文章介绍了3D开发基础与XNA开发程序的整体结构,以及使用Model类的Draw方法将模型绘制到屏幕上.本文接着上一篇文章继续,介绍XNA中模型的结构.BasicEffect的使用以 ...
- 从零3D基础入门XNA 4.0(1)——3D开发基础
[题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...
随机推荐
- 解决Use 'LimitInternalRecursion' to increase the limit if necessary的问题 CodeIgniter .htaccess
配置.htaccess如下: RewriteEngine on RewriteBase / RewriteCond $1 !^(index\.php|images|robots\.txt|css|js ...
- Java知识系统回顾整理01基础06数组05复制数组
数组的长度是不可变的,一旦分配好空间,是多长,就多长,不能增加也不能减少 一.复制数组 把一个数组的值,复制到另一个数组中 System.arraycopy(src, srcPos, dest, de ...
- 《C++ primerplus》第13章练习题
1.对CD类的派生练习.基类CD类存储作者和作品号等信息,派生类Classic额外增加一格"主要作品"的信息.主函数使用拷贝构造函数.按引用传递参数的函数和指针来测试基类和派生类的 ...
- MySQL中事务和事务的隔离级别
本文主要是帮助理解相关知识,没有具体的操作和代码. 事务 事务就是一组操作,这组操作要么全部成功,要么全部失败. 最经典的例子就是银行转账: 张三给李四转账100,对用户来说,就是一个操作.但对应到数 ...
- [学习笔记] Treap
想必大家都知道一种叫做二叉搜索树这东西吧,那么我们知道,在某些特殊情况下,二叉搜索树会退化成一条链,而且如果出题人成心想卡你的话也很简单,分分钟把你(n log n)的期望卡成.那么我们该如何避免这种 ...
- 测试AAA
程序计数器(线程私有) 程序计数器(Program Counter Register),也有称作为 PC 寄存器.保存的是程序当 前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址),当 ...
- go内建方法 append copy delete
package mainimport "fmt"func main() { testAppend() testCopy() testDelete()}func testAppend ...
- 面试官:说说CountDownLatch,CyclicBarrier,Semaphore的原理?
CountDownLatch CountDownLatch适用于在多线程的场景需要等待所有子线程全部执行完毕之后再做操作的场景. 举个例子,早上部门开会,有人在上厕所,这时候需要等待所有人从厕所回来之 ...
- 剑指offer——2
剑指offer 机器人的运动范围 数组的应用和递归 package com.wang.test; public class Myso { /** * 题目描述 * 地上有一个m行和n列的方格.一个机器 ...
- json expected name at 1 1
问题1:导入新的java项目,报expected name at 1:1错误. 解决方法:勾选Derived复选框.