高性能中间件-RabbitMQ

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值