当前位置: 首页 > news >正文

MQ的消费模式-消息是推还是拉

文章目录

    • 概述
    • RocketMQ默认push
    • RabbitMQ默认push
    • Kafka默认拉Pull
    • ActiveMQ默认push

概述

MQ的消费模式可以大致分为两种,一种是推Push,一种是拉Pull
Push是服务端主动推送消息给客户端,Pull是客户端需要主动到服务端轮询获取数据。
推优点是及时性较好,但如果客户端没有做好流控,一旦服务端推送大量消息到客户端时,就会导致客户端消息堆积甚至崩溃。
拉优点是客户端可以依据自己的消费能力进行消费,但是频繁拉取会给服务端造成压力,并且可能会导致消息消费不及时。

在消息队列系统中,Kafka、RabbitMQ、ActiveMQ和RocketMQ都支持推模式(Push)和拉模式(Pull)两种消息消费方式。但是它们在默认行为和主要特点上有所不同:

  1. Kafka:
    ○ 默认行为:Kafka 使用拉模式(Pull)作为默认的消息消费方式。消费者需要主动从 Kafka Broker 拉取消息。
    ○ 主要特点:Kafka 提供高吞吐量、持久性、分布式、可扩展的消息传递。消费者可以自主控制消息的消费进度。
  2. RabbitMQ:
    ○ 默认行为:RabbitMQ 使用推模式(Push)作为默认的消息消费方式。Broker 主动推送消息给消费者。
    ○ 主要特点:RabbitMQ 提供灵活的消息路由和多种交换机类型,支持广泛的消息协议。它更适合用于实时性要求较高的场景。
  3. ActiveMQ:
    ○ 默认行为:ActiveMQ 支持推模式(Push)和拉模式(Pull),具体取决于消费者的配置。通过消息监听器实现推模式,通过 JMS API 实现拉模式。
    ○ 主要特点:ActiveMQ 是一个功能丰富的开源消息中间件,支持广泛的消息协议和高级特性,如事务性消息和消息持久化。
  4. RocketMQ:
    ○ 默认行为:RocketMQ 使用推模式(Push)作为默认的消息消费方式。Broker 主动推送消息给消费者。
    ○ 主要特点:RocketMQ 是一个高吞吐量、低延迟、高可靠性和可伸缩性的分布式消息队列系统。它在支持海量消息堆积和数据复制方面表现出色。

需要注意的是,以上消息队列系统都可以通过配置或编程来切换消费模式,以满足具体的业务需求。选择合适的消息消费方式取决于应用程序的实时性要求、处理能力以及对消息传输的可控性需求。

RocketMQ默认push

RocketMQ 支持两种消费消息的方式:推模式(Push)和拉模式(Pull)。

  1. 推模式(Push):
    在推模式下,消费者向 Broker 注册监听器,当有消息到达时,Broker 主动推送消息给消费者。消费者只需要注册消息监听器,并在监听器中处理接收到的消息即可。
  2. 拉模式(Pull):
    在拉模式下,消费者需要主动向 Broker 发起请求,从指定的队列中拉取消息。消费者需要定时轮询 Broker,获取待消费的消息并进行处理。消费者可以控制拉取消息的频率和数量。
    在 RocketMQ 中,消费者默认使用推模式来消费消息。但是也可以通过设置消费者的消费模式为 Pull 来切换到拉模式。
    RocketMQ的push模式其实底层的实现还是基于pull实现的,我们介绍过长轮询,其实RocketMQ的push就是通过长轮询来实现的。
    总的来说,RocketMQ 的消息消费既支持推模式又支持拉模式,可以根据实际需求选择合适的消费方式。

RabbitMQ默认push

在 RabbitMQ 中,消息消费是基于推模式(Push)实现的。当消费者注册了队列,并设置了消息监听器时,RabbitMQ 会主动推送消息给消费者进行处理。消费者不需要主动轮询或拉取消息,而是由 RabbitMQ 主动将消息推送给已注册的消费者。
这种推模式使得 RabbitMQ 在消息传递方面表现出色,能够及时地将消息传递给消费者。消费者只需关注消息到达时的处理逻辑,而不必担心消息的拉取和管理问题。
总的来说,在 RabbitMQ 中,消息是通过推模式推送给消费者的,消费者只需要注册消息监听器,当有消息到达时就会触发监听器对消息进行处理。

Kafka默认拉Pull

在 Kafka 中,消息消费是基于拉模式(Pull)实现的。消费者需要主动向 Kafka Broker 发起拉取消息的请求,并从指定的主题(topic)中获取消息。消费者可以控制拉取消息的频率、数量以及处理逻辑。
Kafka 的拉取模式使得消费者可以根据自身的处理能力和需求来控制消息的消费速率,可以按照自己的节奏进行消息处理,避免了推送模式下可能出现的消息堆积和处理不及时的情况。
总的来说,在 Kafka 中,消息是通过拉取模式由消费者主动从 Broker 拉取的,消费者可以根据需要自主控制消息的拉取和处理过程。

ActiveMQ默认push

在 ActiveMQ 中,消息消费通常是基于推模式(Push)实现的,类似于 RabbitMQ。当消费者注册了消息监听器并订阅了某个队列或主题时,ActiveMQ 会主动将消息推送给消费者进行处理。消费者无需主动拉取消息,而是等待 ActiveMQ 主动通知并传递消息。

通过消息监听器实现的推模式消费,在 ActiveMQ 中是比较常见和典型的方式。消费者只需关注消息到达时的处理逻辑,而不需要关心消息的拉取和管理细节,简化了消息消费的编程模型。

总的来说,在 ActiveMQ 中,消息消费是通过推模式实现的,消费者注册监听器后,ActiveMQ 主动将消息推送给消费者,消费者只需处理接收到的消息即可。

相关文章:

MQ的消费模式-消息是推还是拉

文章目录 概述RocketMQ默认pushRabbitMQ默认pushKafka默认拉PullActiveMQ默认push 概述 MQ的消费模式可以大致分为两种,一种是推Push,一种是拉Pull Push是服务端主动推送消息给客户端,Pull是客户端需要主动到服务端轮询获取数据。 推优点是及…...

一个平台满足你对测试工具的所有需求

背景 目前,测试人员普遍使用的测试工具有Postman、JMeter等,但这些工具都存在一定的局限性。例如,Postman缺少对API性能测试方面的支持,而JMeter则缺乏一个整合测试报告、测试脚本的统一管理系统以及UI测试功能。 RunnerGo是什么…...

【C语言】【字符串函数】【超详解】【上】!!!

前言: 在学习C语言的过程中,字符串、字符数组等对新手来说总是会有疏忽,在已有的库函数中,我们平时用到最多的就是关于字符串的函数,今天我们就来详细学习字符串函数的相关内容。 下面我们就开始讲解字符串函数&#x…...

算法沉淀——动态规划之其它背包问题与卡特兰数(leetcode真题剖析)

算法沉淀——动态规划之其它背包问题与卡特兰数 二维费用的背包问题01.一和零02.盈利计划 似包非包组合总和 Ⅳ 卡特兰数不同的二叉搜索树 二维费用的背包问题 01.一和零 题目链接:https://leetcode.cn/problems/ones-and-zeroes/ 给你一个二进制字符串数组 strs…...

selenium中ChromeDriver配置,一把过,并且教你伪装

最近正值毕业季,我之前不是写了个问卷星代码嘛,昨晚上有人凌晨1点加我,问我相关内容。 由于我之前C盘重装了一下,导致我很多东西空有其表,实际不能用,借此机会,向大家编写ChromeDriver配置&…...

vue3 + vite 项目可以使用纯Js开发吗?

答案:可以 创建项目: 按照链接参考或者按官方: webstorm 创建vue3 vite 项目-CSDN博客 项目目录 tsconfig.json 配置允许js allowJs指定是否编译js文件,在任意文件当中,如果我们模块使用js写的,那么我们需要 将all…...

Java EE之线程安全问题

一.啥是线程安全问题 有些代码,在单个线程执行时完全正确,但同样的代码让多个线程同时执行,就会出现bug。例如以下代码: 给定一个变量count,让线程t1 t2分别自增5000次,然后进行打印,按理说co…...

掌握Nodejs高级图片压缩技巧提升web优化

掌握Nodejs高级图片压缩技巧提升web优化 在当今的数字时代,图像在网络开发中发挥着至关重要的作用。它们增强视觉吸引力、传达信息并吸引用户。然而,高质量的图像通常有一个显着的缺点——较大的文件大小会减慢网页加载时间。为了应对这一挑战并确保快速加载网站,掌握 Node…...

C++初阶 类(上)

目录 1. 什么是类 2. 如何定义出一个类 3. 类的访问限定符 4. 类的作用域 5. 类的实例化 6. 类的大小 7. this指针 1.this指针的引出 2. this指针的特性 8. 面试题 1. 什么是类 在C语言中,不同类型的数据集合体是结构体。为了方便管理结构体,我…...

图片速览 BitNet: 1-bit LLM

输入数据 模型使用absmax 量化方法进行b比特量化,将输入量化到 [ − Q b , Q b ] ( Q b 2 b − 1 ) \left[-Q_{b},Q_{b}\right](Q_{b}2^{b-1}) [−Qb​,Qb​](Qb​2b−1) x ~ Q u a n t ( x ) C l i p ( x Q b γ , − Q b ϵ , Q b − ϵ ) , Clip ⁡ ( x , a , b ) ma…...

金融基础——拨备前利润和拨备后利润介绍

一、简介 拨备前利润(PreProvision Operating Profit,也就是PPOP)和拨备后利润的主要区别在于是否扣除减值准备金、是否遵循保守性原则以及显示的利润数值不同。 拨备前利润。指在计算利润时没有扣除减值准备金的利润,它等于税前…...

网络编程作业day7

作业项目&#xff1a;基于UDP的聊天室 服务器代码&#xff1a; #include <myhead.h>//定义客户信息结构体 typedef struct magtye {char type; //消息类型char name[100]; //客户姓名char text[1024]; //客户发送聊天信息 }msg_t;//定义结构体存储…...

【Vision Pro杀手级应用】3D音乐会/演唱会,非VR视频播放的形式,而是实实在在的明星“全息”形象,在你的面前表演

核心内容形式:体积视频 参考对标案例深度解读: 体积视频,这一全新的内容形式,正在引领我们进入一个前所未有的四维体验时代。它将传统的演艺形式推向了新的高度,让我们能够更加深入地沉浸在虚拟世界中,感受前所未有的视听盛宴。 在这一领域,有一个引人注目的案例,那…...

变频器学习

西门子变频器 SINAMICS V20 入门级变频器 SINAMICS G120C...

Linux Ubuntu系统安装MySQL并实现公网连接本地数据库【内网穿透】

文章目录 前言1 .安装Docker2. 使用Docker拉取MySQL镜像3. 创建并启动MySQL容器4. 本地连接测试4.1 安装MySQL图形化界面工具4.2 使用MySQL Workbench连接测试 5. 公网远程访问本地MySQL5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主…...

0048__Unix传奇

Unix传奇 &#xff08;上篇&#xff09;_unix传奇(上篇)-CSDN博客 Unix传奇 &#xff08;下篇&#xff09;-CSDN博客 Unix现状与未来——CSDN对我的采访_nuix邮件系统行业地位-CSDN博客...

蓝桥杯-排序

数组排序 Arrays.sort(int[] a) 这种形式是对一个数组的所有元素进行排序&#xff0c;并且时按从小到大的顺序。 package Work;import java.util.*;public class Imcomplete {public static void main(String args[]) {int arr[]new int [] {1,324,4,5,7,2};Arrays.sort(arr)…...

计算机设计大赛 深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …...

高性能JSON框架之FastJson的简单使用

高性能JSON框架之FastJson的简单使用、 1.前言 1.1.FastJson的介绍: JSON协议使用方便&#xff0c;越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址: FastJson 1.2.FastJson的特点: 1.F…...

★判断素数的几种方法(由易到难,由慢到快)

素数的定义&#xff1a; 素数&#xff0c;又称为质数&#xff0c;指的是“大于1的整数中&#xff0c;只能被1和这个数本身整除的数”。换句话说&#xff0c;素数是只有两个正约数&#xff08;1和本身&#xff09;的自然数。素数在数论中有着重要的地位&#xff0c;且素数的个数…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)

注&#xff1a;文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件&#xff1a;STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...