首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏岑志军的专栏

    4)OC中消息消息转发-02

    所以我们可以得出结论,程序向某个对象发送没实现的消息,在程序崩溃之前会给我们三次机会弥补,接下来,我们用代码来验证第一个方法resolveInstanceMethod: resolveInstanceMethod forwardingTargetForSelector: 如果上面的方法+ (BOOL)resolveInstanceMethod:(SEL)sel返回NO,接着就会进行消息转发,执行forwardingTargetForSelector 事实证明,如果实现这个方法,程序在运行时调用的时候只要不返回nil或者self,系统会将该消息转发给别的对象来处理,在别的对象当中,甚至不需要再头文件将方法名暴露出来,系统会找到要转发的类,自动查找。 我怀疑:如果程序没有通过前面三种方法找到方法的实现,程序会动态调用一次- (Class)class方法,查看我们是否改变了对象所指向的类,如果发现我们改变了,程序就会通过消息转发forwardInvocation

    62220发布于 2018-05-28
  • 来自专栏用户1692782的专栏

    手撕Rtmp协议细节(4)——connect消息

    当rtmp客户端和rtmp服务端握手完成之后,客户端就会向服务端发送connect消息。connect消息的格式按照RTMP Header+RTMP Body的格式组织。 connect消息由四部分组成,首先是command name,用字符串类表示命令的类型,即"connect";在其之后紧跟着的是事务id,该值永远设为1;再之后是connect消息中承载的所有object 3.connect消息流 好了,这样客户端发送给server的connect消息就组装完成了。 ,向服务端发送“Window Acknowledgment”消息; 服务端向客户端发送一条用户控制消息(Stream Begin); 如果连接成功,服务端向客户端发送_result消息,否则发送_error 消息

    2.5K30发布于 2020-05-20
  • 来自专栏allsmallpi博客

    Redis实现消息队列的4种方案

    基于Sorted-Set的实现 4. UNSUBSCRIBE,取消订阅 此模式允许生产者只生产一次消息,由中间件负责将消息复制到多个消息队列,每个消息队列由对应的消费组消费。 优点 典型的广播模式,一个消息可以发布到多个消费者 多信道订阅,消费者可以同时订阅多个信道,从而接收多类消息 消息即时发送,消息不用等待消费者读取,消费者会自动接收到信道发布的消息 缺点 消息一旦发布, 增删改查 xadd 追加消息 xdel 删除消息,这里的删除仅仅是设置了标志位,不影响消息总长度 xrange 获取消息列表,会自动过滤已经删除的消息 xlen 消息长度 del 删除Stream 独立消费 读到新消息后,对应的消息ID就会进入消费者的PEL(正在处理的消息)结构里,客户端处理完毕后使用xack指令通知服务器,本条消息已经处理完毕,该消息ID就会从PEL中移除。

    3.2K10发布于 2021-02-25
  • 来自专栏RocketMQ原理与应用

    RocketMQ实战—4.消息零丢失的方案

    大纲1.全链路分析为什么用户支付完成后却没有收到红包2.RocketMQ的事务消息机制实现发送消息零丢失3.RocketMQ事务消息机制的底层实现原理4.是否可以通过同步重试方案来代替事务消息方案来实现发送消息零丢失 全链路分析为什么用户支付完成后却没有收到红包(1)客服反馈用户支付后没收到红包(2)订单系统推送消息到RocketMQ可能会丢失消息(3)消息到达RocketMQ后也可能会丢失消息(4)就算消息进入磁盘了也不是万无一失 (4)就算消息进入磁盘了也不是万无一失当Broker把消息写入了OS的PageCache,操作系统会在一段时间后把消息从内存中刷入磁盘文件里。 (4)事务消息机制之如果half消息写入成功如果订单系统发送half消息给RocketMQ成功了,此时订单系统就应该在自己本地的数据库里执行一些增删改操作。 (4)消息零丢失方案到底适合什么场景所以如果系统一定要使用消息零丢失方案,那么必然导致从头到尾的性能下降以及吞吐量下降,因此一般不要轻易在一个业务里使用如此重的一套方案。

    79421编辑于 2025-04-11
  • 来自专栏RocketMQ原理与应用

    RocketMQ原理—4.消息读写的性能优化

    大纲1.Producer基于队列的消息分发机制2.Producer基于Hash的有序消息分发3.Broker如何实现高并发消息数据写入4.RocketMQ读写队列的运作原理分析5.Consumer拉取消息的流程原理分析 3.Broker如何实现高并发消息数据写入(1)数据持久化(2)磁盘的随机写和顺序写(3)内存的随机写和顺序写(4)RocketMQ的消息写入写消息的方式有两种:一是随机写,二是顺序写。 (4)RocketMQ的消息写入首先会将所有消息数据都顺序写入到CommitLog磁盘文件。1个CommitLog的大小为1GB,写满一个CommitLog就切换下一个CommitLog。 创建一个Topic时会默认4个WriteQueue和4个ReadQueue。其中WriteQueue会和磁盘里的文件对应起来,属于物理概念,而ReadQueue则属于虚拟概念。 然后每个ConsumeQueue磁盘文件里都会存储一条一条的消息数据,每条消息数据在磁盘文件里存储的内容如下:8个字节的offset + 4个字节的消息大小 + 8个字节的Tag的Hash值按上述方式设计

    53910编辑于 2025-04-03
  • 来自专栏剑指工控

    重磅消息|OpenAI发布GPT-4 Turbo模型

    2023年11月6日,人工智能行业龙头OpenAI发布了GPT-4 Turbo模型。    简单来说,相较于大家都很熟悉的GPT-4,GPT-4 Turbo的进步主要体现在6个方面:   1、AI能够理解更长的上下文对话长度(context length)。 标准版GPT-4模型最多支持8192个token,此前的升级将其提高至最多3.2万个token。 3、GPT-4对于现实世界的知识截止于2021年9月,GPT-4 Trubo的知识则截止于2023年4月。   4、多模态API来了。 在市场极为关注的定价方面,作为行业领先的大模型,GPT-4 Turbo的价格要远低于GPT-4。其中输入Token的价格只有三分之一,而输出Token的价格只有一半。

    79010编辑于 2023-11-08
  • 来自专栏站长的编程笔记

    EasyWechat 4.x 微信小程序订阅消息

    前言 EasyWechat 4.x 订阅消息文档: https://easywechat.com/docs/4.x/mini-program/subscribe_message 微信官方文档订阅消息:https 发送订阅消息 page 参数 点击模板卡片后的跳转页面,仅限本小程序内的页面。 站长源码网 支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 miniprogram_state 参数 跳转小程序类型 formal 正式版 trial 体验版 developer 开发版, 省略时默认为正式版 EasyWechat 订阅消息示例中并没有该参数,我是在微信订阅消息官方文档发现的 用户没有授权或授权的次数已用尽 [ "errcode" => 43101, "errmsg" => "user refuse to accept the msg rid: 60b07a4d -07ed4b8e-286b09ae", ]

    1.7K20编辑于 2023-01-08
  • 来自专栏c#开发者

    MSMQ消息大于4MB限制的解决办法

    MSMQ 消息发送大于 4 导致 System.Messaging.MessageQueueException Mb。 症状 当试图发送邮件包含超过 4 Mb 。 不超过 4 MB 的数据 。 需要考虑中具有以下任何机制可能生成: 1), 接收者需要知道多部分消息机制 两发送者。 2) 组是 MSMQ 消息包含一个多部分消息需要他人标识。 更多信息 以下示例显示如何发送大于 4 文件 使用 System.Messaging Mb。

    1.5K130发布于 2018-04-13
  • 来自专栏腾讯云IoT

    【IoT迷你赛】TencentOS tiny学习源码分析(4)——消息队列

    然后调用tos_msg_queue_flush()函数将队列的消息列表的消息全部“清空”,“清空”的意思是将挂载到队列上的消息释放回消息池(如果消息队列的消息列表存在消息,使用msgpool_free( ()函数确保是从消息队列中获取消息,然后通过TOS_LIST_FIRST_ENTRY_OR_NULL判断一下是消息队列的消息列表否存在消息,如果不存在则返回K_ERR_MSG_QUEUE_EMPTY表示消息队列是空的 当发送消息时,TencentOS tiny会从消息池(空闲消息列表)中取出一个空闲消息,挂载到消息队列的消息列表中,可以通过opt参数选择挂载到消息列表的末尾或者是头部,因此消息队列的写入是支持FIFO 写入消息的过程非常简单,直接通过msgpool_alloc()函数从消息池取出一个空闲消息,如果系统不存在空闲的消息,则直接返回错误代码K_ERR_MSG_QUEUE_FULL表示系统可用的消息已经被使用完 如果取出空闲消息成功则将要写入的消息地址与大小记录到消息池的msg_addr 与 msg_size 成员变量中,然后通过opt参数选择将消息挂载到消息列表的位置(头部或者是尾部)。

    67480发布于 2019-08-20
  • 百万消息积压 4 小时,我靠这套方案快速止血

    作为常年和分布式架构打交道的开发者,我曾在生产环境中多次处理过消息积压问题,小到几万条消息的短暂阻塞,大到百万级消息积压4小时的紧急故障,总结出了一套“紧急止血→根源排查→彻底解决→复盘优化”的全流程方案 io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j com.jam.demo.consumer.config.RocketMQConfig; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j -Xms4g)避免OOM。

    6510编辑于 2026-04-14
  • 消息序列】详解(4):同步连接(SCOeSCO)的建立与断开流程

    会指定eSCO连接的类型(如EV3、EV4或EV5)和其他参数。 命令,并携带了 (HV1|HV2|HV3|EV3|EV4|EV5) 这些参数。 |2EV5|3EV3|3EV5) 消息,并且回复中同样携带了 (EV3|EV4|EV5|2EV3|2EV5|3EV3|3EV5) 参数。 与中央设备发起连接时类似,此命令也可能包含多个参数,如连接类型(EV3、EV4、EV5等)、数据包大小、重传参数等。 这个命令包含了新的eSCO连接参数,这些参数指定了连接的新特性,如EV3、EV4、EV5等。

    24410编辑于 2026-01-20
  • 来自专栏微擎

    微擎框架模块开发4-企业微信发送消息

    https://cloud.tencent.com/developer/column/102120一,企业微信发送消息1.这个发送消息功能,肯定是必备的,比如发送通知或者发送公告等,都需要用到。 2.首先我们先找到easywechat文档里对于这块消息的文档,熟悉一下该怎么去调用。3.然后打开插件目录的site.php文件,新建一个消息测试的方法。 'token' => 'VWOm', 'aes_key' => 'eVDcV3TkHfw6QyGYpxNOLporfZkEsyOaV8nzhhL3C4Y $e->getMessage(); } }4.访问send方法后,测试没有问题,可以正常发送到指定的某个人。 4.1 访问send方法和之前开发2的里的访问方法一样。 基本上熟悉easywechat文档的话就可以做好这一章的开发了,简单的获取openid然后再调用消息发送。2. 要注意的地方是,调用的时候,一定要将你的ip设置到企业可信IP里。

    50410编辑于 2025-01-04
  • 来自专栏IT大咖说

    RocketMQ源码详解:事务消息、批量消息、延迟消息

    ◆ 概述 在上文中,我们讨论了消费者对于消息拉取的实现,对于 这个黑盒的心脏部分,我们顺着消息的发送流程已经将其剖析了大半部分。本章我们不妨乘胜追击,接着讨论各种不同的消息的原理与实现。 ◆ 事务消息 ◆ 概念 RocketMQ 中的事务消息功能,实际上是 分布式事务中的本地事务表 的实现,只不过,在这里用消息中间件来代替了数据库,同时也帮我们做好了回查的操作。 ◆ 事务流程 客户端发送 half 消息 吐槽一下为什么要叫半消息(half message),叫 prepare 消息不是更直观吗 Broker 将 half 消息持久化 客户端根据事务执行结果,发送 ,来标记可以被移除的 half 消息(op 消息的存在代表对应事务的结束) /** * 读取op消息,解析op消息,填充removeMap * * @param removeMap 要删除的半消息,key ◆ 批量消息 ◆ 概念 在消息队列中,批量消息也是一个重要的部分,将消息压缩在一起发送不仅可以减少带宽的消耗,还能节省头部占用的空间。

    1.6K20发布于 2021-11-26
  • 来自专栏简单聊聊Spark

    Kafka系列第4篇:消息发送背后网络操作的那点事儿

    ​前言 上篇文章讲述了消息从生产到写入到 Broker 的 partition 上背后发生的故事,并提出了消息发送的网络模型的问题。本篇文章我们来尝试揭开其背后的神秘面纱,耐心看完你一定会有所收获。 ---- 总结 以上即为数据从客户端发送到服务端背后相关的网络操作故事;到此,关于生产者客户端的相关操作暂且分析到这里,关于客户端幂等性、消息重发等问题我们在后面专门用篇幅来讲解。 下篇文章我们来分析一下消费者端消费消息背后的一些故事,敬请期待。

    49030发布于 2020-05-08
  • 来自专栏Tech Explorer

    借助 ext4 文件系统的 打洞 功能实现消息队列

    借助 ext4 文件系统的 打洞 功能,可以实现一个消息队列 https://gist.github.com/CAFxX/571a1558db9a7b393579 1 fallocate(fd, FALLOC_FL_PUNCH_HOLE 如果用 3.15 之后的 linux kernel ,在 ext4 (only for extent-based files) 和 XFS 文件系统上, http://man7.org/linux/man-pages

    1.3K20发布于 2021-06-25
  • 来自专栏Rust语言学习交流

    【Rust投稿】从零实现消息中间件(4)-SERVER.CLIENT

    主要功能包括 接收消息 收到sub消息,就记录到全局列表中 收到pub消息,就发送给相关订阅的client 出错,删除订阅,关闭连接 数据结构定义 Client中除了cid以外,其他两项都使用了 msg_sender: 之所以用Mutex保护是因为除了client自己要发送消息,当其他client pub消息的时候也要通过这个ClientMessageSender发送消息 ClientMessageSender tokio::spawn(Client::client_task(c, reader)); msg_sender } ... } client_task 主要功能: 读取,解析消息 分发消息给相应的处理函数 process_error process_sub process_pub 这个其实就是一个tcp连接的主循环,说到这里我想把tokio::spawn 和 go语言中的 , 查找所有的订阅 将消息逐一转发给他们 转发的过程中要稍微麻烦一点,因为考虑到设计中的负载均衡问题,qsubs则是从同一个queue中随机选择一个来推送消息. rust async fn process_pub

    81320发布于 2020-03-10
  • 来自专栏浅谈电商系统的实践经验

    消息队列(1)--如何避免丢消息,积压消息

    比如,我们可以让消费者 C0 消费 Q0,Q1 和 Q2,C1 消费 Q3 和 Q4,如果 C0 宕机了,会触发重新分配,这时候 C1 同时消费全部 5 个队列。 如果 Broker 没有收到消费确认响应,下次拉消息的时候还会返回同一条消息,确保消息不会在网络传输过程中丢失,也不会因为客户端在执行消费逻辑中出错导致丢失。4.怎么保证消费的幂等性? 为了保证消息可靠,Broker和消费者都会存在重复消息,并且按着MQTT消息的质量标准要求,我们大部分的消息队列中间件采用At least once语义,Broker无法去除重复消息,只能依靠消费者在业务层进行幂等处理从对系统的影响结果来说 3.利用数据库的唯一约束是最后一道保证幂等的保证,同样,如果触发唯一约束,返回处理成功,ACK成功4.先将消息标记记录,消费时候进行标记检查全局唯一递增id标记消息,到消费者,需要先进行检查然后进行更新 ,开始执行“账户增加 100 元”;t1 时刻:Consumer B 收到条消息,检查消息执行状态,发现消息未处理过,因为这个时刻,Consumer A 还未来得及更新消息执行状态。

    1.3K11编辑于 2023-10-01
  • 来自专栏搜云库技术团队

    消息队列中:消息可靠性、重复消息消息积压、利用消息实现分布式事务

    一、如何确保消息不丢失? 1、检测消息丢失的方法 可以利用消息队列的有序性来验证是否有消息丢失。 如果没有消息丢失,Consumer收到消息的序号必然是连续递增的,如果检测到序号不连续,那就是丢消息了。 ,消息队列的客户端会把消息发送到Broker,Broker收到消息后,会给客户端返回一个确认响应,表明消息已经收到了。 事务的4个特性(ACID): 原子性:指一个事务操作不可分割,要么成功,要么失败,不能有一半成功一半失败的情况 一致性:指这些数据在事务执行完成这个时间点之前,读到的一定是更新前的数据,之后读到的一定是更新后的数据 然后订单系统给消息服务器发送一个半消息,这个半消息包含的内容是完整的消息内容,和普通消息的唯一区别是,在事务提交之前,对于消费者来说,这个消息是不可见的 半消息发送成功后,订单系统就可以执行本地事务了,

    2.5K20发布于 2019-11-21
  • 消息消息事务机制

    欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199 消息事务机制 消息事务机制是指在消息传递系统中,保障消息的可靠性传递和一致性处理的机制。 在分布式系统中,消息通常是异步发送和接收的,这意味着发送方无法立即知道消息是否成功传递给接收方。消息事务机制通过引入事务管理器来解决这个问题。 在消息事务机制中,发送方和接收方可以通过事务管理器来协调消息的传递和处理。发送方发送消息时,将消息放入一个事务中,事务管理器负责确保消息被正确传递给接收方。 接收方在接收到消息后,可以通过事务管理器确认消息的接收和处理。 如果发送方在发送消息后发生故障或网络出现问题,事务管理器可以将消息标记为未发送状态,并在后续恢复时重新发送。 如果接收方在接收消息后发生故障或处理失败,事务管理器可以将消息标记为未处理状态,并在后续恢复时重新处理。 消息事务机制可以确保消息的可靠传递和处理,降低消息丢失和重复处理的风险。

    24010编辑于 2025-08-29
  • 来自专栏前端基础

    web 桌面消息推送消息

    推送消息简易版本,并不会跳转到对应的页面,跳转到对应页面等下次更新``` </body> <script> var n = new Notification(‘状态更新提醒’,{ body: ‘你的朋友圈有

    3.5K10发布于 2020-04-16
领券