热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:rabbitmq基础入门

本文由编程笔记#小编为大家整理,主要介绍了rabbitmq-基础入门相关的知识,希望对你有一定的参考价值。 在学东西之前,我们先有一个方法论,知道如何学习。学习一个东西一般都遵循以下几个环节:xxx
本文由编程笔记#小编为大家整理,主要介绍了rabbitmq-基础入门相关的知识,希望对你有一定的参考价值。



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

  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依赖


org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-amqp

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






















推荐阅读
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 快速掌握Tomcat 8.5.40的配置与应用技巧 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • 通过利用代码自动生成技术,旨在减轻软件开发的复杂性,缩短项目周期,减少冗余代码的编写,从而显著提升开发效率。该方法不仅能够降低开发人员的工作强度,还能确保代码的一致性和质量。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
author-avatar
粉爱_粉爱陈小翔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有