原文地址:https://www.jianshu.com/p/e186a7fce8cc

在学东西之前,我们先有一个方法论,知道如何学习。学习一个东西一般都遵循以下几个环节:

  1. xxx是什么,诞生的原因,能解决什么问题。
  2. 如何安装,如何使用(快起启动一个demo)。
  3. 涉及到的一些基础概念介绍和基础入门使用。
  4. 中阶、高阶的功能特性使用。
  5. 高可用部署方案。
  6. 原理的深入理解。

这篇文章主要处于第一、二环节,让新手更好得入门。

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(一)-基础入门的更多相关文章

  1. RabbitMQ(1)——基础入门

    本文章写在了CSDN :https://blog.csdn.net/qq_30348181/article/details/87911398

  2. C# 消息队列之 RabbitMQ 基础入门

    Ø  简介 C# 实现消息队列的方式有很多种,比如:MSMQ.RabbitMQ.EQueue 等,本文主要介绍使用 RabbitMQ 实现消息队列的基础入门.包括如下内容: 1.   什么是消息队列? ...

  3. ASP.NET Core消息队列RabbitMQ基础入门实战演练

    一.课程介绍 人生苦短,我用.NET Core!消息队列RabbitMQ大家相比都不陌生,本次分享课程阿笨将给大家分享一下在一般项目中99%都会用到的消息队列MQ的一个实战业务运用场景.本次分享课程不 ...

  4. Rabbit MQ 基础入门

    Rabbit MQ 学习(一)基础入门 简介 RabbitMQ 简介 为什么选择 RabbitMQ RabbitMQ 的模型架构是什么? AMQP 协议是什么? AMQP 常用命令 概念 生产者和消费 ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. 「译」JUnit 5 系列:基础入门

    原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...

  7. .NET正则表达式基础入门

    这是我第一次写的博客,个人觉得十分不容易.以前看别人写的博客文字十分流畅,到自己来写却发现十分困难,还是感谢那些为技术而奉献自己力量的人吧. 本教程编写之前,博主阅读了<正则指引>这本入门 ...

  8. 从零3D基础入门XNA 4.0(2)——模型和BasicEffect

    [题外话] 上一篇文章介绍了3D开发基础与XNA开发程序的整体结构,以及使用Model类的Draw方法将模型绘制到屏幕上.本文接着上一篇文章继续,介绍XNA中模型的结构.BasicEffect的使用以 ...

  9. 从零3D基础入门XNA 4.0(1)——3D开发基础

    [题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...

随机推荐

  1. C# Redis分布式锁 - 单节点

    为什么要用分布式锁? 先上一张截图,这是在浏览别人的博客时看到的. 在了解为什么要用分布式锁之前,我们应该知道到底什么是分布式锁. 锁按照不同的维度,有多种分类.比如 1.悲观锁,乐观锁; 2.公平锁 ...

  2. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

  3. Python实现的数据结构与算法之快速排序详解

    一.概述 快速排序(quick sort)是一种分治排序算法.该算法首先 选取 一个划分元素(partition element,有时又称为pivot):接着重排列表将其 划分 为三个部分:left( ...

  4. ElasticSearch 索引 VS MySQL 索引

    前言 这段时间在维护产品的搜索功能,每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的. 这甚至比在我本地使用 MySQL 通过主键的查询速度还快. 为此我搜索了 ...

  5. Java之微信支付(扫码支付模式二)案例实战

    摘要:最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,在做的过程中也遇到些问题,所以现在总结梳理一下,分享给有需要的人,也为自己以后回顾留个思路. 一:微信支付接入准备工作: 首先, ...

  6. java 反射之静态and动态代理

    首先说一下我们什么情况下使用代理? (1)设计模式中有一个设计原则是开闭原则,是说对修改关闭对扩展开放,我们在工作中有时会接手很多前人的代码,里面代码逻辑让人摸不着头脑(sometimes the c ...

  7. MeteoInfoLab脚本示例:MODIS AOD

    MODIS的气溶胶光学厚度(AOD)产品应用很广,数据可以在Giovanni上下载:http://disc.sci.gsfc.nasa.gov/giovanni/overview/index.html ...

  8. sql 存储过程 输出参数 输入参数

    1.简单的存储过程 create procedure porc_name as select * from 表 go 调用时: exec proc_name 2. 带参数的存储过程 create pr ...

  9. 手写Redux-Saga源码

    上一篇文章我们分析了Redux-Thunk的源码,可以看到他的代码非常简单,只是让dispatch可以处理函数类型的action,其作者也承认对于复杂场景,Redux-Thunk并不适用,还推荐了Re ...

  10. .Net Core实现基于Quart.Net的任务管理

    前段时间给公司项目升级.net框架,把原先的任务管理平台用.net core实现,现做如下整理: 一.实现思路 之前的实现也是参考了博客园中其他文章实现的思路: 一个任务定义一个实现IJob接口的类, ...