
消息队列
文章平均质量分 62
纵然间
资深码农,编程十年有余,曾服务于多家互联网大厂。技术精湛,经验丰富,擅长解决复杂问题。对新技术充满热情,致力于创造卓越的产品体验
展开
-
RabbitMQ技术问答系列-NO3
集群通过将数据和负载分布在多个节点上来实现高可用性,每个节点都可以独立处理消息的存储和传递,同时还可以与其他节点进行通信,以确保消息的正确路由和传递。此外,RabbitMQ集群还具备一些其他的特性,如灵活的路由、多语言客户端支持、管理界面和插件机制等。它使用交换机来路由信息,支持多种编程语言,提供了易用的用户界面来监控和管理消息和集群中的节点,并且提供了许多插件以实现多方面的扩展。综上所述,RabbitMQ集群通过其高可用性、高性能和灵活配置的特性,为处理大量消息通信和确保消息的可靠传递提供了强大的支持。原创 2024-04-09 09:09:10 · 350 阅读 · 0 评论 -
RabbitMQ技术问答系列-NO2
当消息被消费者处理完毕后,会发送一个确认消息给RabbitMQ服务器,服务器随后删除已确认的消息。此外,RabbitMQ还支持多种交换机类型来实现不同的路由机制,如直接交换机、主题交换机和扇形交换机等,这些交换机决定了消息如何被路由到不同的队列中。同时,RabbitMQ还提供了消息的持久化、消费者的负载均衡等特性,以确保消息的可靠传输和处理。RabbitMQ的消息分发机制是其核心功能之一,它允许生产者发送消息到队列,并由消费者从队列中获取并处理这些消息。四.RabbitMQ消息怎么路由?原创 2024-04-09 09:06:41 · 1073 阅读 · 0 评论 -
RabbitMQ技术问答系列-NO1
其次,确保消息接受方消费了消息,RabbitMQ提供了消息补偿机制。如果消费者成功消费了消息,会向MQ服务器的队列发送一个确认消息。该服务收到延迟发送的消息后,会查询数据库确认该消息是否已被消费,如果没有,则会重新发送该消息给消费者。消息的发送首先到达交换机上,然后根据既定的路由规则,由交换机将消息路由到不同的Queue(队列)中。通过结合使用交换机、队列、Confirm机制、消息补偿机制以及Publisher Confirms和Returns机制,可以大大提高消息在RabbitMQ中发送和消费的可靠性。原创 2024-04-09 09:04:47 · 813 阅读 · 0 评论 -
Kafka技术问答系列-NO3
Offset是Kafka中用于标识消息在分区中位置的元数据,消费者通过管理和更新offset来确定下一次消费的位置。Kafka消费者出现活锁问题时,通常表现为消费者持续地发送心跳,但没有进一步处理消息,导致offset提交失败。在Kafka中,消费者可以通过配置来禁用自动提交偏移量,从而允许应用程序在适当的时候手动提交偏移量。Kafka确保不消费重复数据有多种策略,主要涉及到生产者配置、消费者逻辑以及Kafka本身的特性。四.kafka分布式(不是单机)的情况下,如何保证消息的顺序消费?原创 2024-04-08 08:53:36 · 1023 阅读 · 0 评论 -
Kafka技术问答系列-NO2
而在对消息可靠性要求极高的场景下,应选择acks=all以确保消息的完整性和一致性。Zookeeper在Kafka中扮演着多个关键角色,它作为Kafka集群的核心协调服务,提供了分布式数据一致性、集群管理和故障恢复等功能。这三种事务定义提供了不同程度的消息传输保证,根据具体的应用场景和需求,可以选择合适的事务定义。这两个条件共同确保Kafka集群中的节点状态能够得到准确的判断,从而维持集群的健康和稳定。Kafka的ACK机制是用于确认生产者发送的消息是否成功到达Kafka服务器的重要机制。原创 2024-04-08 08:52:04 · 852 阅读 · 0 评论 -
Kafka技术问答系列-NO1
Kafka的消费者(Consumer)是**拉(pull)**模式,而不是推(push)模式。kafka-console-producer.sh --bootstrap-server : --topic kafka-console-consumer.sh --bootstrap-server : --topic Kafka需要消息系统的原因主要在于其提供了特定的功能和优势,这些功能在某些场景下是MySQL等传统数据库无法满足的。原创 2024-04-08 08:50:12 · 530 阅读 · 0 评论 -
理解消息队列
6、broker要等待消费者真正确认消费到了消息时才删除掉消息,这里通常就是消费端ack机制,消费者接收到一条消息后,如果确认没有问题了,就可以发送一个ack,broker接收到ack后才会删除消息。2、首先要确保消息不多发,这个不常出现,也比较难控制,因为如果出现了多发,很大的原因是生产者自己的原因,如果要避免出现问题,就需要在消费端做控制。3、要避免不重复消费,最保险的机制就是消费者实现幂等性,保证就算重复消费,也不会有问题,通过幂等性,也能解决生产者重复发送消息的问题。原创 2024-03-28 08:24:34 · 326 阅读 · 0 评论 -
理解Kafka和其他MQ对比
Kafka的生产者采用的是异步消息发送机制,当发送一条消息时,消息并没有发送到Broker而是缓存起来,然后直接想业务返回成功,当缓存的消息达到一定数量时再批量发送给Broker。1、pull表示消费者主动拉取,可以批量拉取,也可以单条拉取,所以pull可以由消费者自己控制,根据自己的消息处理能力来进行控制,但是消费者不能及时知道是否有消息,可能会拉到的消息是空的。2、Producer在发送消息的时候从NameServer获取Broker服务器地址,根据负载均衡算法选择一台服务器来发送消息。原创 2024-03-28 08:21:19 · 196 阅读 · 0 评论 -
最大努力通知方案
如果尽最大努力也没有通知到接收方,或者接收方消费消息后要再次消费,此时可由接收方主动向通知方查询消息信息来满足需求。1、有一定的消息重复通知机制。因为接收通知方可能没有接收到通知,此时要有一定的机制对消息重复进行通知。原创 2024-03-23 14:41:36 · 325 阅读 · 0 评论 -
Java线程池中常见的阻塞队列
3、DelayedWorkQueue:是一个优先级队列,它可以保证每次出队的任务都是当前队列中执行时间最靠前的。workQueue 当没有空闲核心线程时,新来的任务会加入到此队列排队,队列满会创建救急线程执行任务。4、SynchronousQueue:不存储元素的阻塞队列,每个插入操作都必须等待一个移出操作。2、LinkedBlockingQueue:基于链表结构的有界阻塞队列,FIFO。1、ArrayBlockingQueue:基于数组结构的有界组成队列,FIFO。是懒惰的,创建节点的时候添加数据。原创 2024-03-20 12:21:19 · 307 阅读 · 0 评论 -
Kafka中实现高性能的设计
页缓存:把磁盘中的数据缓存到内存中,把对磁盘的访问变为对内存的访问。消息分区:不受单台服务器的限制,可以不受限的处理更多的数据。分批发送:将消息打包批量发送,减少网络开销。顺序读写:磁盘顺序读写,提升读写效率。零拷贝:减少上下文切换及数据拷贝。消息压缩:减少磁盘IO和网络IO。原创 2024-03-19 17:53:13 · 325 阅读 · 0 评论 -
去哪网消息中间件讲解
partition与consumer静态绑定。客户端设计 — 最终—致性。服务端设计 — 存储模型。原创 2024-03-01 12:27:57 · 387 阅读 · 0 评论 -
RabbitMQ部署指南
如果有集群总数大于count+1,并且包含镜像的节点出现故障,则将在另一个节点上创建一个新的镜像。例如我们有2个MQ:mq1,和mq2,如果你的消息在mq1,而你连接到了mq2,那么mq2会去mq1拉取消息,然后返回给你。镜像模式:与普通模式不同,队列会在各个mq的镜像节点之间同步,因此你连接到任何一个镜像节点,均可获取到消息。在刚刚的案例中,一旦创建队列的主机宕机,队列就会不可用。用户发送给队列的一切请求,例如发送消息、消息回执默认都会在主节点完成,如果是从节点接收到请求,也会路由到主节点去完成。原创 2024-02-29 14:02:48 · 1303 阅读 · 0 评论 -
分布式事务延迟队列与轮询
分布式事务问题使用延迟队列和轮询扫描技术方案解决,业务场景分析,技术方案实例,以及主要代码呈现原创 2024-02-13 12:07:47 · 1078 阅读 · 0 评论 -
后台服务于工具消息中间件:rabbitmq 安装
-enable-smp-support 启用对称多处理支持(Symmetric Multi-Processing 对称多处理结构的。执行:/usr/sbin/rabbitmq-plugins enable rabbitmq_management 添加可视化插件。--enable-hipe 启用高性能 Erlang(High Performance Erlang)--enable-kernel-poll 启用 Linux 内核 poll。--enable-threads 启用异步线程支持。原创 2024-02-10 14:36:49 · 359 阅读 · 0 评论