右侧
当前位置:网站首页 > 资讯 > 正文

消息队列的设计,消息队列都有什么

作者:admin 发布时间:2024-02-12 04:15 分类:资讯 浏览:74 评论:0


导读:消息队列(三)kafka的一致性和失败处理策略服务器处理消息需要是幂等的,消息的生产方和接收方都需要做到幂等性;发送放需要添加一个定时器来遍历重推未处理的消息,避免消息丢失,造...

消息队列(三)kafka的一致性和失败处理策略

服务器处理消息需要是幂等的,消息的生产方和接收方都需要做到幂等性; 发送放需要添加一个定时器来遍历重推未处理的消息,避免消息丢失,造成的事务执行断裂。

kafka一定要配置上消息重试的机制,并且重试的时间间隔一定要长一些,默认1秒钟并不符合生产环境(网络中断时间有可能超过1秒)。

Kafka中的消息保留在分区中,分区中的消息有序排列,每个分区中的消息都有一个唯一的偏移量(offset)。消息生产者可以选择将消息发送到指定分区或让Kafka根据一定的负载均衡策略自动选择分区。

在FlinkKafakProducer连接器的构造函数中要传入参数,这个参数就是用来保证状态一致性的。就是在构造函数的最后一个参数输入如下:配置Kafka读取数据的隔离级别 在kafka中有个配置,这个配置用来管理Kafka读取数据的级别。

消息队列原理及选型

即消息的Ackownledge确认机制,为了保证消息不丢失,消息队列提供了消息Acknowledge机制,即ACK机制,当Consumer确认消息已经被消费处理,发送一个ACK给消息队列,此时消息队列便可以删除这个消息了。

ActiveMQ工作原理:首先来看本地通讯的情况,应用程序A和应用程序B运行于同一系统A,它们之间可以借助消息队列技术进行彼此的通讯:应用程序A向队列1发送一条信息,而当应用程序B需要时就可以得到该信息。

解耦: 如果使用多线程进行异步,这样会造成与下游系统耦合,每对接一个系统,会增加一个接口调用,然后重新发布系统。使用消息队列,将消息发布到消息队列中,下游系统直接监听审批过程消息来感知审批进度,达到解耦目的。

一般来说,消息队列有两种模式,一种是发布者订阅模式,另外一种是生产者和消费者模式。Redis的消息队列,也是基于这2种原理的实现。 发布者和订阅者模式:发布者发送消息到队列,每个订阅者都能收到一样的消息。

我打算从入门开始讲起,一直到它的底层实现逻辑个原理以及源码,建议大家花点耐心,从头开始看,相信会对你有所收获。

消息队列(MQ)消息延迟及过滤设计方案

1、消息的生产方也就是订单服务,完成了自己的逻辑(对商品进行下单操作)然后把这个消息通过 mq 发送到需要进行数据同步的其他服务中,也就是我们栗子中的购物车服务。

2、MQ重试,网上有方案一般采用的是,本地消息表+定时任务,不清楚的可以自行了解下。我这里提供一种另外的思路,供大家参考。

3、比如支持5秒、10秒的Level,那么用户只能发送5秒延迟或者10秒延迟,不能发送8秒延迟的消息。

4、MQ(消息队列)发送消息失败是指在进行消息发送时,由于某种原因导致消息无法成功送达目标队列。当出现MQ发送消息失败的情况时,需要仔细检查错误信息,确定具体的原因并采取相应的措施进行解决。

5、检查网络的网速是否正常,局域网里是否有人看电影或者下载软件等拖慢了网速。

6、客户端在接受到消息并处理完后,可以发送一个ack消息给RabbitMQ,告诉它该消息可以安全的删除了。假如客户端在发送ack之前意外死掉了,那么RabbitMQ会将消息投递到下一个consumer客户端。

标签:


取消回复欢迎 发表评论: