高性能中间件-RabbitMQ

2023-11-18

高性能中间件-RabbitMQ

高性能中间件-RabbitMQ

1 RabbitMQ是什么?

2 RabbitMQ的整体结构

3 SpringBoot集成RabbitMQ

4 RabbitMQ丢失消息和解决方案

5 RabbitMQ的应用实践


1 RabbitMQ是什么?

RabbitMQ是一个实现了高级消息队列协议(AMQP)的开源消息代理软件.服务端用Erlang语言编写,支持多种客户端.用于在分布式系统中存储转发消息,具有易用性,扩展性,高可用的特点.

 

2 RabbitMQ的整体结构

Producer:生产者,生产者创建消息,然后投递消息.

Broker:消息中间件的服务节点.

Exchange:交换器,生产者将消息发送到交换器,常见的交换器类型有Fanout,direct,topic,header四种

Queue:队列,是Rabbit的内部对象,用于储存消息.

Bing:绑定,通过绑定将交换器与对列关联起来,在绑定的时候会指定一个绑定建BingKey,方便正确的将消息路由到队列上.

Consumer:消费者,接受消息的一方.

 

 

3 SpringBoot集成RabbitMQ

在SpringBoot的.yum配置文件中配置RabbitMq的地址信息

测试发送订单号

接受发送的订单号

 

4 RabbitMQ丢失消息和解决方案

过程1: 从生产者到交换机丢失消息

如果一条消息没有进入路由,消息会消失

提供方案:

采用事务模式 Transaction,确认模式 confirm

// 将channel设置成事物模式

channel.txSelect();

// 提交事务

channel.txCommit();

// 事务回滚

channel.txRollback();

 

过程2 :消息在队列中存储丢失消息

内存节点消息会在内存中存储,

磁盘节点中,消息会在内存和磁盘中存储

如果消息只有一条时在磁盘节中存储点,所以至少有一个磁盘节点存在

提供方案:

采用持久化机制,队列持久化,交换机持久化,消息持久化

 

过程3: 消息传给消费者

消费者有一个默认的自动应答 autoACK,接收到消息的时候就发送

自动应答后会把消息的队头删掉,不会关心是否成功执行,只会关心时候接收到消息,这时候需要手动ACK,需要考虑异常情况

 

5 RabbitMQ的应用实践

在分布式系统架构下,RabbitMQ除了上面传递订单编号处理订单逻辑外,还可以处理商品上下架,删除的状态处理和相应处理.实现登陆的扫码机制.应用于促销活动的活动产品关系处理等等.

RabbitMQ使用的好会极大提高程序的性能和实现代码的异步解耦.还有就是定期的查看队列的情况,看看是不是存在没有被消费的队列数据,这点很重要.

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高性能中间件-RabbitMQ 的相关文章

  • 使用spring-amqp和rabbitmq实现带退避的非阻塞重试

    我正在寻找一种使用 spring amqp 和 Rabbit MQ 的退避策略来实现重试的好方法 但要求是侦听器不应被阻止 因此可以自由地处理其他消息 我在这里看到了类似的问题 但它不包括 后退 的解决方案 RabbitMQ 和 Sprin
  • Rails:如何从服务或队列中监听/拉取?

    大多数 Rails 应用程序的工作方式都是等待来自客户端的请求 然后发挥其作用 但是 如果我想将 Rails 应用程序用作微服务架构的一部分 例如 并进行一些异步通信 服务 A 将事件发送到 Kafka 或 RabbitMQ 队列 而服务
  • 为什么 Celery 工作人员给出“OSError:套接字已关闭”

    我的与rabbitMQ一起工作的celery工作人员在工作几分钟后不断给我一个套接字错误 见下文 我想知道问题的主要原因是什么 我认为这可能是防火墙 但是 禁用防火墙并没有解决问题 我正在 Windows 10 机器上工作 C Users
  • 如何在 celery 内为每个用户生成队列?

    因此 我尝试将 Web 请求中的阻塞内容移至后台任务并利用队列 我对消息传递和发布 订阅也很陌生 用户将数据推送到那里并进行处理 稍后用户会收到相关通知 我为此做了一个 celery 设置 发现它不能满足我为每个用户分配自己的任务的专用队列
  • 如何根据条件限制并发消息消耗

    场景 我已经简化了事情 许多最终用户可以从前端 Web 应用程序 生产者 开始工作 繁重的工作 例如渲染大型 PDF 这些作业被发送到单个持久的 RabbitMQ 队列 许多工作应用程序 消费者 处理这些作业并将结果写回到数据存储中 这个相
  • 在 Red Hat 上安装 RabbitMQ - 错误的 Erlang 版本

    我正在尝试按照以下说明在 Red Hat Enterprise Linux 7 64 位工作站版本 的评估虚拟机上安装 RabbitMQhttps www rabbitmq com install rpm html https www ra
  • 过期的消息不会从 RabbitMQ 中删除

    我通过生产者向 RabbitMQ 发送一条普通消息 然后发送第二条消息expiration属性分配给一个值 然后使用rabbitmqctl list queues命令我监视消息的状态 我发现如果我先发送一条普通消息 然后发送一条消息expi
  • 使用AWS SQS作为Aurora数据库的写入队列来提高系统性能是否有效

    我正在 AWS 上开发一个 Web 应用程序服务器 需要支持高吞吐量的读写 我的老板给了我这样的高级设计 我被困在 写入队列 上 团队告诉我 我们需要它来提高写入性能 因为我们只能有 1 个可以写入的主副本 我对 SQS 和 RabbitM
  • 何时使用 RabbitMQ 铲子以及何时使用 Federation 插件?

    对于我工作的公司 我们希望使用 RabbitMQ 作为我们的主要消息总线 我们的想法是 每个应用程序都使用自己的虚拟主机进行内部通信 并且通过 shovel 或联合插件 我们可以在多个虚拟主机 甚至可能是多台机器 非集群 之间共享某些类型的
  • 无法在Windows上启用rabbitmq管理插件

    所以 这就是我所做的 在我的 Windows x64 位机器上安装了 Erlang 安装 RabbitMQ 启动 RabbitMQ 服务 这一步我没有任何错误 但是 当我尝试启用rabbitmq management时 我在控制台中收到一些
  • RabbitMQ 失败,错误:无法连接到节点rabbit@TPAJ05421843:nodedown

    在 Windows 7 Enterprise 计算机上 我全新安装了 Erlang 17 4 和 RabbitMQ 3 4 3 x64 安装成功且顺利 我还没有尝试创建我的第一个队列或交换器 但我已经看到了麻烦 这个问题类似于另一个SO帖子
  • 使用 RabbitMq 锁定和批量获取消息

    我正在尝试以一种更非常规的方式使用 RabbitMq 尽管此时我可以根据需要选择任何其他消息队列实现 消费者不会将 Rabbit 推送消息留给我的消费者 而是连接到一个队列并获取一批 N 条消息 在此期间它会消费一些消息 并可能拒绝一些消息
  • 在 Windows 10 和 PHP 7.3 中安装 AMQP

    我想在 Windows 10 中使用 PHP 7 3 安装 AMQP 以便在 symfony 4 中使用 Windows 不使用任何 apache iis nginx 并直接由 symfony 运行 一切还好 直到 我决定在项目中使用rab
  • Celery 与rabbitmq 创建结果多个队列

    我已经用 RabbitMQ 安装了 Celery 问题是 对于返回的每个结果 Celery 都会在 Rabbit 中创建队列 并在交换 celeryresults 中使用任务 ID 我仍然想得到结果 但在一个队列上 我的芹菜配置 from
  • RabbitMQ 上的 Nack 和拒绝

    我想处理消费者从队列中获取的不成功的消息并将它们重新排队 想象一下我有这样的情况 P gt foo bar baz gt C 其中 foo bar 和 baz 是消息 如果消费者读到baz但出了问题 我可以使用basic reject or
  • 在 Celery 工作线程中捕获 Heroku SIGTERM 以优雅地关闭工作线程

    我对此进行了大量研究 令我惊讶的是我还没有在任何地方找到一个好的答案 我正在 Heroku 上运行一个大型应用程序 并且我有某些运行很长时间处理的 celery 任务 并在任务结束时保存结果 每次我在 Heroku 上重新部署时 它都会发送
  • RabbitMQ 管理插件窗口呈现为空白页面

    I have installed Erlang RabbitMQ and configured the management plugin as per the instructions on the website https www r
  • Amazon EC2 实例上和本地的 RabbitMQ?

    是否可以设置一个RabbitMQ服务器上的Amazon EC2 instance 并将我办公室的机器连接到此RabbitMQ服务器并向其发送 接收消息 我会被收取费用吗Amazon对于流入 流出我的带宽 消息RabbitMQ EC2 ins
  • RabbitMQ:如何创建和恢复备份

    我是 RabbitMQ 的新手 我需要一些帮助 如何备份和恢复到RabbitMQ 以及我需要保存哪些重要数据 谢谢 如果您安装了管理插件 您可以在Overview页 在底部你会看到导入 导出定义您可以使用它来下载代理的 JSON 表示形式
  • Rabbit mq - 等待 Mnesia 表时出错

    我已经在 Kubernetes 集群上使用 Helm Chart 安装了 RabbitMQ rabbitmq pod不断重新启动 在检查 pod 日志时 我收到以下错误 2020 02 26 04 42 31 582 warning lt

随机推荐

  • 使用UE4插件SimpleHTTP的技巧

    UE4插件名 SimpleHTTP 版本 1 1 目录 前置工作 上传资源 下载资源 删除资源 SimpleHTTP源码接口 哈喽大家好 我叫人宅 这节课我们来讲解一下SimpleHTTP使用技巧 该插件目前提供了对web服务器进行上传下载
  • 软件测试的一点心得体会

    在学习软件测试之前 我们先要知道什么是软件测试 只有知道了软件测试是做什么的 我们才能更深入的去理解它 在我的印象里 软件测试就是通过人工或者自动化的方式对软件进行检测 并发现软件的缺陷的一个过程 而软件测试工程师就相当于质检员的角色 在软
  • 深度学习:Keras入门(一)之基础篇

    1 关于Keras 1 简介 Keras是由纯python编写的基于theano tensorflow的深度学习框架 Keras是一个高层神经网络API 支持快速实验 能够把你的idea迅速转换为结果 如果有如下需求 可以优先选择Keras
  • python 指定值的位置_python数组查找某个值的位置

    python如何返回数组中某值在数组的位置 python3里这样 gt gt gt a 1 2 3 gt gt gt b 2 gt gt gt b in a True 先判定b在a里 gt gt gt a index b 1 b在a的位置1
  • RKNPU2通用API和零拷贝API

    RKNPU2通用API 通用API接口按照异构编程规范 需要将数据拷贝到NPU运行时的内存空间 通用API部署流程 初始化上下文 需要先创建上下文对象和读取模型文件 rknn context ctx model load model mod
  • 微信小程序商城--隐私协议--模板参考

    本隐私政策与您所使用的XX 替换成软件名称 服务以及该服务所包括的各种业务功能 以下统称 我们的产品与 或服务 息息相关 希望您在使用我们的产品与 或服务前仔细阅读并确认您已经充分理解本隐私政策所写明的内容 并让您可以按照本隐私政策的指引做
  • Poi模板技术

    Poi模板技术导入导出Excel 在我们的工作中 也经常会用到Poi模板技术操作Excel文件数据 而且不同的应用场景对Excel表格的单元格格式和合并操作都需要写大量的代码调试 比较麻烦 通过模板技术将自定义格式的Excel文件模板存放在
  • 【云原生之Docker实战】使用docker部署PicUploader图床工具

    云原生之Docker实战 使用docker部署PicUploader图床工具 一 PicUploader介绍 1 PicUploader介绍 2 PicUploader特点 二 检查本地系统环境 1 检查系统版本 2 检查系统内核版本 三
  • 对聊天室的优化&常用参数配置

    优化处1 编码和解码 编码解码用的是JDK 对象与数组的转换 这种虽然简单 但是效率不高 现在需要支持更多的序列化算法 就需要改进 抽取一个接口 Serializer 用以支持 序列化和 反序列化 package com zhao prot
  • educoder答案-Python编程训练-顺序与选择结构-太原理工大学

    太原理工大学 educoder实训平台答案 Python编程基础 持续更新 以下均为太原理工大学廖丽娟老师的实训项目内容答案 各位校友自取 第一关 顺序结构 changeOne int input changeTwo int input p
  • input输入框自动去除空格

    1 只去除两端空格
  • 加密证书的三大好处 122.228.86.6

    SSL证书有什么特点 1 数据加密传输 采用HTTPS加密APP及网页通讯 防止数据在传送过程中被窃取 篡改 确保数据的完整性 防止运营商的流量劫持 网页植入广告现象 同时有效抵挡中间人的攻击 大大提升安全性 2 高兼容性 兼容性关系到用户
  • 1.深度学习练习:Python Basics with Numpy(选修)

    本文节选自吴恩达老师 深度学习专项课程 编程作业 在此表示感谢 课程链接 https www deeplearning ai deep learning specialization 目录 1 Building basic function
  • 关于uni-app中Android不支持camera相机组件进行拍照,并需要改变调用uni.chooseImage时手机相机UI的替代解决方法

    关于uni app中Android不支持camera相机组件进行拍照 并需要改变调用uni chooseImage时手机相机UI的替代解决方法 uni app中Android不支持camera相机组件 解决办法live pusher组件进行
  • 设计模式,简单工厂模式实现商场促销问题。

    前言 自始至终觉得编程是一门技术 更是一门艺术 不能只满足于写完代码运行后的结果完事 还应该让后人能读懂 容易修改 容易扩展和复用 又由于自己经常写出屎山代码 所以准备苦学设计模式 尽力写出更加优雅的代码 正文 问题引入 定义一个商场收银软
  • 【MedusaSTears】解决IDEA卡顿,IDEA2019.2启动加速;Eclipse启动加速:JVM调优--让你的IDE如丝般顺滑~

    目录 idea64 exe vmoptions文件内容如下 请自己对照你自己的编写 别直接粘贴我的 否则后果自负 eclipse ini文件内容如下 请自己对照你自己的编写 别直接粘贴我的 否则后果自负 具体我也解释不清楚 反正就是参考了不
  • 有用的 C# 库

    1 caliburn micro 数据绑定的库 比自带mvvm更好一些 2 https github com xceedsoftware wpftoolkit wpf的空间库
  • 字符编码简介

    目录 一 ascii编码 二 扩展ascii编码 三 多字节编码 multi bytes 四 宽字符编码 wide char 五 unicode编码 六 utf 8编码 七 结语 大家好 我是略游 本文的目的是讲清楚 字符编码的今生来世 看
  • 农业掀起“上链”潮 区块链等数字技术正成为乡村振兴新动力

    目前区块链等数字技术已经广泛应用于农业全链条环节 近日 由中国宏观经济研究院课题组撰写的 数字技术赋能乡村产业发展报告 下简称 报告 指出 长期以来困扰乡村产业发展的难点 堵点正在逐渐被区块链等数字技术所消弭和破解 中国宏观经济研究院所做的
  • 高性能中间件-RabbitMQ

    高性能中间件 RabbitMQ 高性能中间件 RabbitMQ 1 RabbitMQ是什么 2 RabbitMQ的整体结构 3 SpringBoot集成RabbitMQ 4 RabbitMQ丢失消息和解决方案 5 RabbitMQ的应用实践