当前位置: 首页 > news >正文

消息队列以及RabbitMQ的使用

目录

一、同步与异步

二、消息队列技术选型

RabbitMQ:

RabbitMQ的使用:

数据隔离:


一、同步与异步

        微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们称这种调用方式为同步调用,也可以叫同步通讯。而异步调用就是实时性比较差,其他服务可能无法立即受到处理该请求,但是一个微服务却可以同时向多个服务发起请求;所以,如果我们的业务需要实时得到服务提供方的响应,则应该选择同步通讯(同步调用)。而如果我们追求更高的效率,并且不需要实时响应,则应该选择异步通讯(异步调用)。

        这样不利于我们拓展业务,倘若我们希望添加一个通知客户成功支付的功能,则需要新加代码,也就是说每次有新的需求,现有支付逻辑都要跟着变化,代码经常变动,不符合开闭原则,拓展性不好。其次,我们采用了同步调用,服务一多,各个服务相互等待就会出现性能问题,而我们又不见简单地做限流、熔断等处理,那样会导致更严重的数据不一致问题,所以这里就需要异步调用来解决该问题。

二、消息队列技术选型

消息Broker,目前常见的实现方案就是消息队列(MessageQueue),简称为MQ.

据统计,目前国内消息队列使用最多的还是RabbitMQ,再加上其各方面都比较均衡,稳定性也好,因此我们选择RabbitMQ来学习。

RabbitMQ:

接下来我们就来安装RabbitMQ:

1.将RabbitMQ的tar包拉到虚拟机/root目录下并使用以下指令加载tar包:

docker load -i mq.tar

2.执行以下指令创建容器:

docker run \-e RABBITMQ_DEFAULT_USER=******* \ #这里是自己设置的账号-e RABBITMQ_DEFAULT_PASS=****** \ #这里是自己设置的密码-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hm-net\-d \rabbitmq:3.8-management

        安装完成后,我们访问 http://192.168.150.101:15672即可看到管理控制台。首次访问需要登录,默认的用户名和密码在配置文件中已经指定了。

其中包含几个概念:

  • publisher:生产者,也就是发送消息的一方

  • consumer:消费者,也就是消费消息的一方

  • queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理

  • exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。

  • virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue

RabbitMQ的使用:

1.首先需要创建队列:

2.接着绑定交换机与队列,也就是创建路由:

3.最后在交换机当中发送信息:

我们回到Queues页面,可以发现hello.queue中已经有一条消息了:

点击队列名称,进入详情页,查看队列详情,这次我们点击get message:

数据隔离:

点击Admin选项卡,首先会看到RabbitMQ控制台的用户管理界面:

这里的用户都是RabbitMQ的管理或运维人员。目前只有安装RabbitMQ时添加的itheima这个用户。仔细观察用户表格中的字段,如下:

  • Nameitheima,也就是用户名

  • Tagsadministrator,说明itheima用户是超级管理员,拥有所有权限

  • Can access virtual host/,可以访问的virtual host,这里的/是默认的virtual host

对于小型企业而言,出于成本考虑,我们通常只会搭建一套MQ集群,公司内的多个不同项目同时使用。这个时候为了避免互相干扰, 我们会利用virtual host的隔离特性,将不同项目隔离。一般会做两件事情:

  • 给每个项目创建独立的运维账号,将管理权限分离。

  • 给每个项目创建不同的virtual host,将每个项目的数据隔离。

那么接下里,我们给黑马商城创建一个新的用户以及虚拟主机:

1.创建我们项目的用户,并设置密码以及超级管理员权限,添加好后退出登录并以hmall账号登录:

可以看到我们创建好的用户以及没有虚拟主机的状态,所以我们接下来要创建虚拟主机

2.根据图示顺序即可创建虚拟主机并且完成与hmall账号的绑定(因为是在这个账号下创建的)

这样就创建好了我们项目专属的虚拟主机环境啦

http://www.dtcms.com/a/498813.html

相关文章:

  • PyCharm之服务器篇|Linux连接校园网Neu版
  • 在linux上训练深度学习环境配置(Ubuntu)
  • 洗车小程序系统
  • 网站 备案 营业执照太仓网站设计早晨设计
  • 煤矿网站建设WordPress高端主题 熊
  • 告别炼丹玄学:用元学习精准预测模型性能与数据需求,AWS AI Lab研究解读
  • 无需 VNC / 公网 IP!用 Docker-Webtop+cpolar,在手机浏览器远程操控 Linux
  • Vue3与Cesium:轻量版3D地理可视化实践
  • 数据预处理(音频/图像/视频/文字)及多模态统一大模型输入方案
  • 一段音频多段字幕,让音频能够流畅自然对应字幕 AI生成视频,扣子生成剪映视频草稿
  • Linux-网络安全私房菜(二)
  • 广州外贸网站建设 open需要做网站建设的公司
  • QML学习笔记(四十三)QML与C++交互:上下文属性暴露
  • Redis 的字符串底层实现
  • 递归-206.反转链表-力扣(LeetCode)
  • 【Linux系列】掌控 Linux 的脉搏:深入理解进程控制
  • 百度怎么注册公司网站wordpress 2019主题谷歌字体
  • 算法14.0
  • 基于掌纹生物特征的 Windows 安全登录实践:从物理安全到零信任身份验证
  • uniapp map地图添加浮层
  • 可靠的tcp连接
  • 【uniapp】uni.uploadFile上传数据多出一个304的get请求处理方法
  • uni-app 入门学习教程,从入门到精通,uni-app组件 —— 知识点详解与实战案例(4)
  • 购物网站开发实例wordpress flash加载插件
  • 音视频ffmpeg
  • MySQL: 高并发电商场景下的数据库架构演进与性能优化实践
  • 微网站建设是什么推荐做问卷的网站
  • [SCADE编译原理] 初始化分析原理(2004)
  • VB.NET2003和VB2008可以导入VB6项目
  • 反常积分的判敛散