• rabbitmq常见问题


    概念

    RabbitMQ消息中间件,采用的是erlang语言,而这个语言就本身就是支持并发的。

    在项目中运用的场景是我们对于订单数据修改时,需要把订单的状态同步到第三方系统,在这个对接的过程中,我们将消息发送到RabbitMQ上,而RabbitMq再把消息推送到第三方系统

    几种模式

    • 单发送单接收
    • 单发送多接收
    • 发布订阅模式
    • 按topic发送接收

    保证数据不丢失

    在发送消息的时候,消费信息的过程中,在三个地方可能存在的问题

    1.发送时,消息由于网络问题,半路就会搞丢了

    解决办法:

    • a.同步:采用事物管理,开始事物,在发送消息的时候,如果mq没有接受到消息,抛出异常,本地捕捉异常并重试
    • b.异步:写入时可以调本地接口,确定机制(建议使用)

    2.MQ服务器本身的问题,如果他还没有来得及把消息发送消费端就挂了,这个时候消息就丢了

    解决办法:(持久化操作)

    • a.创建队列时,设置其为持久化
    • b.消息的deliveryMode为2

    3.在消费的时候,消息由于网络问题,半路搞丢

    解决办法:

    消息者在接收到消息先执行业务代码,等结束时,再告诉服务器已经执行完,再执行删除操作

    如何避免数据重复消费

    这个rabbitmq认为不是服务器的问题,而是我们代码的问题

    所以我们解决办法就是在消费端进行控制,拥有一个业务id,人工去重/

  • 相关阅读:
    [GSEAPY] 在Python里进行基因集富集分析
    scRNAseq R包公共单细胞数据获取
    pybedtools:在Python中使用BEDTools
    pybedtools 提取序列
    将博客搬至CSDN
    【转】SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    sql长日期数据以短日期格式显示【转】
    [转]YouTube架构学习体会
    [转]让Nginx 支持 ASP ASP.NET配置方法
    [转]LINQ查询总结
  • 原文地址:https://www.cnblogs.com/zhuyuanying123--/p/12556414.html
Copyright © 2020-2023  润新知