V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fatcheung
V2EX  ›  Java

想问下各位大佬这个面试题

  •  
  •   fatcheung · 2021-04-10 07:49:01 +08:00 via Android · 2949 次点击
    这是一个创建于 1315 天前的主题,其中的信息可能已经有所发展或是发生改变。
    就是我们发送消息可能会用到消息中间件,如果失败了,我们会记录到表里面,然后会用定时调度去扫。但是这个操作可能会有一定的延时,有没有更快的方法?🤔
    14 条回复    2021-04-13 00:49:24 +08:00
    xuanbg
        1
    xuanbg  
       2021-04-10 08:07:20 +08:00
    快是什么快?要消除的是定时任务的延时效果?这个没意义,现在发不出去的消息,马上重发大概率也是发不出去的。
    fatcheung
        2
    fatcheung  
    OP
       2021-04-10 08:19:10 +08:00 via Android
    @xuanbg 对啊,面试官问我有没有更加即时的方法,我答不上来,有点困惑,想问问各位老哥😂
    noreplay
        3
    noreplay  
       2021-04-10 08:51:49 +08:00 via Android
    跟面试官说,记录完之后,发个通知给面试官,让面试官马上打电话通知调用方。🌚🌚
    mseasons
        4
    mseasons  
       2021-04-10 09:04:34 +08:00
    将失败了的信息写进一个优先级队列,然后每次执行任务之前都检查队列,有就发送。

    实际上把轮询写进了代码逻辑,就像程序响应系统中断一样
    skymei
        5
    skymei  
       2021-04-10 09:09:28 +08:00
    没有 ACK 机制吗,失败的没有 ACK 确认会自动进入延时队列,延时结束之后会自动进入原队列。
    leafre
        6
    leafre  
       2021-04-10 09:38:08 +08:00
    callback 持久化到 db 同时开个线程重试消息
    ch2
        7
    ch2  
       2021-04-10 09:45:01 +08:00 via iPhone
    把定时任务改成循环监听,就是看门狗机制
    blackboom
        8
    blackboom  
       2021-04-10 11:42:52 +08:00 via iPhone
    Binlog listener
    young1lin
        9
    young1lin  
       2021-04-10 11:51:21 +08:00
    用 Binglog 机制不行么,或者 MySQL 的插件 mysql-udf-http 。或者像 Kafka 一样,用带有回调的方法发送消息,阻塞直到发送成功,外加 ACK = -1
    qianxiaobang
        10
    qianxiaobang  
       2021-04-10 13:42:32 +08:00
    加个发送结果,发送过去如果没有响应,就起几个定时任务( 10s,30s,60s,5min )来重试;长期没有结果再走定时跑批
    jacksparrow414
        11
    jacksparrow414  
       2021-04-10 13:49:50 +08:00
    redis 的 list 结构? LPUSHRPOP 试一下
    securityCoding
        12
    securityCoding  
       2021-04-10 14:03:32 +08:00 via Android
    他想要的应该是 binlog
    DoctorCat
        13
    DoctorCat  
       2021-04-10 19:13:11 +08:00
    写到 kafka/RabbitMQ/RocketMQ 理论上应该更快一些。
    cubecube
        14
    cubecube  
       2021-04-13 00:49:24 +08:00
    应该是想让你说延时队列处理,然后 balabala 队列的一些问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2853 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:34 · PVG 19:34 · LAX 03:34 · JFK 06:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.