RabbitMQ深入理解

1.为什么要使用消息中间件?

生产能力远大于消费能力,如支付,支付的请求比较多,但是处理速度很慢,服务器中如果Http请求不能及时处理会消耗内存暂存请求慢慢处理,进而导致内存崩盘,从而我们希望有一个类似队列东西装载请求,能处理请求过多的情况,于是引入中间件

2.引入中间工具带来的问题

      中间工具分割开了原本100%可靠请求流程,例如:A-->B(RPC或者直连都能实现可靠通信),现在变成了A-->C-->B,  C不可靠(宕机,数据传输丢失),怎么保证 A100%到C,而B接收到C的数据又100%能消费到:

      投递消息确认模式实现了 A 100% 把消息投递到了C 且C能实现了持久化,此时A能收到C的投递回执,即A-->C 100%可靠

      C-->B,B主动去拉取C,C实现了消息消费确认机制,于是B拉取消息,且实现了逻辑后可以设置消费确认,告诉C:B已处理了消息,思考:如果B业务流程是 :操作数据库->消费回执,数据库操作完后回执不一定能执行到,此时消息还在消费队列中,即存在消息重复消费性;

引入以下问题:

1).消息投递100%可达性 (投递确认策略已解决)

2).重复消费(业务接口幂等性or事务锁)

3).中间件高可用问题 (集群)

4).中间件容灾恢复能力 (持久化数据文件恢复)

下篇再详细介绍

3.RabbitMQ 5中工作模式

rabbitmq的抽象交换机实现有5中

交换机构造器

构造器参数详解

   Exchange.DeclareOk exchangeDeclare(
        String exchange, //交换机name
        BuiltinExchangeType type, //交换机类型详见以下五种
        boolean durable, //数据持久化?
        boolean autoDelete,//自动删除?当交换机无绑定队列时自动删除?
        boolean internal, //是否内部交换机,是则客户端不能push消息,默认false外部交换机。
        Map<String, Object> arguments //扩展参数
    ) throws IOException;
CustomExchange,DirectExchange,FanoutExchange,HeadersExchange,TopicExchange

 五种使用教程可以参考 https://www.jianshu.com/p/7e574d4946e8

今天码到这。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值