//connection
//channel //broke
//exchange:fanout、 dirct、 topic(*:一个单词、#:多个单词)、 header
//queue
//bind(exchange,queue,routingkey) //一、如何保证消息不丢失
//生产者发布消息时 设置消息持久化(Persistent:true)、设置确认模式(DeliveryMode:2)
//声明交换机时设置持久化(durable:true)
//声明队列时声明持久化(durable:true)
//消费者消费消息时关闭自动应答(autoAck:false) //二、实现延迟队列
//声明队列时设置队列消息过期时间TTL(x-message-ttl)或者发布消息时设置消息过期时间TTL(Expiration)
//配置死信队列
//当消息没有消费者过期时会进入死信队列,再消费死信队列中的消息可实现延迟队列的效果 //三、进入死信队列条件
//配置了死信队列
//消息被拒、过期、超过队列长度 //四、消费者2种消费模式
//Push(BasicConsume)、Pull(BasicGet) //五、如何保证消息不重复消费
前提:生产者产生消息时带一个唯一ID
方案一、将唯一ID设置为数据库表的唯一索引,通过数据库唯一索引保证消费端幂等性(适用于新增场景)
方案二、使用Redis+TTL+消费状态(过期时间)
方案三、使用数据库+补偿机制(数据库存唯一ID、消费状态、消费次数),定时任务自动处理消费多少次的任务

-->(特殊情况,比如消费完成没有更新消费状态)消费次数>N次,则人工介入做补偿
-->插入失败-->(已消费直接返回成功、消费中则拒收进入延迟队列)
插入消费记录(消费中、消费次数)-->插入成功-->执行业务-->执行成功-->修改消费记录状态为成功
-->执行失败-->删除消费记录-->重新投递

//六、开启手动应答模式后
//BasicAck()、BasicNAck、BasicReject

RabbitMQ相关总结的更多相关文章

  1. Rabbitmq相关学习网址

    1.安装文档: http://www.cnblogs.com/shuzhenyu/p/9823324.html 2.RabbitMq的整理 exchange.route.queue关系 https:/ ...

  2. RabbitMq相关

    RabbitMq 通过通过IP,Port等参数创建connection对象,然后实际上通信用的是channel,channel的建立基于connection RPC 调用: RPCClient通过ch ...

  3. RabbitMq相关运维

    # 命令查询所有用户列表rabbitmqctl list_users # 使用命令对 xiandian-admin 用户进行授权set_permissions xiandian-admin '.*' ...

  4. rabbitmq 相关

    Exchange 在上一节我们看到生产者将消息投递到Queue中,实际上这在RabbitMQ中这种事情永远都不会发生.实际的情况是,生产者将消息发送到Exchange(交换器,下图中的X),由Exch ...

  5. RabbitMQ 相关理论部分

    集群配置方式 RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel cluster: 不支持跨网段,用于同一个网段内的局域网 可以随意的动态 ...

  6. linux下RabbitMQ相关命令

    1. 关闭与启动 ① 到指定目录:cd/etc/init.d ② 停止:rabbitmq-server stop ③ 启动:rabbitmq-server start ④ 查看是否停止/启动成功:ps ...

  7. RabbitMQ相关使用命令

    启动:rabbitmq-server -detached 停止:rabbitmqctl stop 状态:rabbitmqctl status 查看所有用户rabbitmqctl list_users ...

  8. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  9. 缓存、队列(Memcached、redis、RabbitMQ)

    本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.Li ...

  10. RabbitMq 集群搭建

        实验环境: 操作系统为 Centos 7.2 IP hostName 192.168.190.132 node132 192.168.190.139 node139 192.168.190.1 ...

随机推荐

  1. 【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(2)

    1.问题描述: 怎么判断登录的华为帐号有变动? 解决方案: 华为帐号登录成功后会返回唯一标识OpenID和UnionID,如果切换不同的华为帐号登录,这个唯一标识会变. OpenID是华为帐号用户在不 ...

  2. ComfyUI进阶篇:ComfyUI核心节点(四)

    ComfyUI核心节点(四) 前言: 学习ComfyUI是一场持久战.当你掌握了ComfyUI的安装和运行之后,会发现大量五花八门的节点.面对各种各样的工作流和复杂的节点种类,可能会让人感到不知所措. ...

  3. iOS开发基础102-后台保活方案

    iOS系统在后台执行程序时,有严格的限制,为了更好地管理资源和电池寿命,iOS会限制应用程序在后台的运行时间.然而,iOS提供了一些特定的策略和技术,使得应用程序可以在特定场景下保持后台运行(即&qu ...

  4. oeasy教您玩转python - 003 - # - 继续运行

    ​ 继续运行 回忆上次内容 在解释器里玩耍 print("Hello World") 1+1 编写了 py 文件 运行了 py 文件 这次我们继续丰富这个文件 分析 py 文件 我 ...

  5. 接口防刷!利用redisson快速实现自定义限流注解

    问题: 在日常开发中,一些重要的对外接口,需要加上访问频率限制,以免造成资��损失. 如登录接口,当用户使用手机号+验证码登录时,一般我们会生成6位数的随机验证码,并将验证码有效期设置为1-3分钟,如 ...

  6. python selenium 判断元素是否存在,实现:找到元素,执行对应的代码;找不到元素,继续执行其他代码

    selenium因为找不到元素会抛出异常,导致执行结束 可以考虑使用driver.find_elements(),找不到元素时就会返回空列表,使用if-else语句,判断列表是否为空,非空,则正常找到 ...

  7. Superviso可视化监控进程

    如果您需要同时运行多个 ThinkPHP 命令,可以在 Supervisor 中为每个命令创建一个单独的程序段.以下是示例配置,其中包含两个 ThinkPHP 命令:command1.php 和 co ...

  8. midjourney 入门操作

    midjourney 入门操作 settings面板 选择模型 当从 V6 切换到 Niji模型时,Current suffix会添加参数 default V6面板功能介绍 RAW Mode功能 -- ...

  9. axios传递参数的使用

    今天在学习elasticsearch时,遇到一个问题:项目中前端采用的是Vue2+axios,后端的接口采用Restful风格来接收: 关于Resultful风格: 1. GET(SELECT):从服 ...

  10. 【爬虫】Python获取星巴克所有产品

    视频只介绍了BS4的简单使用,但我想全部获取出来 其实翻看接口,直接有一个json资源提供了这些数据,但是没有分类 import re import urllib.request from bs4 i ...