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

数据库有新的记录,我就需要调某接口推送消息,这个该怎么做?

  •  
  •   sandman511 · 2020-05-20 15:12:38 +08:00 · 2577 次点击
    这是一个创建于 1639 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每分钟检索一次数据库吗

    第 1 条附言  ·  2020-05-20 15:52:06 +08:00
    标题说的不准确 sorry
    类似于学校课程表,到了上课时间需要推送消息给学生。 应该是这么个需求。
    第 2 条附言  ·  2020-05-20 15:52:59 +08:00
    JAVA+ORACLE
    19 条回复    2020-05-25 20:11:11 +08:00
    zhangyp123
        1
    zhangyp123  
       2020-05-20 15:22:26 +08:00
    canal
    dorothyREN
        2
    dorothyREN  
       2020-05-20 15:26:01 +08:00
    我只知道 mssql 可以用触发器直接发送 http 请求
    tomato1111
        3
    tomato1111  
       2020-05-20 15:26:58 +08:00
    触发器
    asAnotherJack
        4
    asAnotherJack  
       2020-05-20 15:33:46 +08:00
    触发器,或者从 binlog 入手可不可以啊
    tomczhen
        5
    tomczhen  
       2020-05-20 15:41:15 +08:00
    Oracle 和 SQL Server 可以利用内置 的 Message Queue 功能来做,之前有做过 https://github.com/TomCzHen/jiandaoyun_push_tool 一个(顺便求个星)。可以配合修改业务存储过程,触发器来配合实现。

    如果不想做侵入式的修改,考虑基于 CDC 来做,Oracle 和 SQL Server 直接就有自带方案,Mysql 这边是基于 binlog 做的方案,可以搜一下,开源、商业方案都有,根据自己需要选择就好。
    narmgalaxy
        6
    narmgalaxy  
       2020-05-20 15:44:38 +08:00
    我觉得这可能是 x-y 问题,或许你把你的业务对象,过程完整说出来,你会得到更好的回答。
    zpfhbyx
        7
    zpfhbyx  
       2020-05-20 15:45:00 +08:00
    这个不应该是在写入的逻辑添加事件触发么..
    37Y37
        8
    37Y37  
       2020-05-20 15:52:14 +08:00
    signals 能完美解决,看看你所用的语言有没有,这里有一个 django signals 介绍和使用
    https://blog.ops-coffee.cn/s/cmxdafstno56ixurmd4kxa
    sandman511
        9
    sandman511  
    OP
       2020-05-20 15:52:44 +08:00
    @zhangyp123
    @dorothyREN
    @tomato1111
    @asAnotherJack
    @tomczhen
    @narmgalaxy
    @zpfhbyx
    标题说的不准确 sorry APPEND 了
    lsorrow
        10
    lsorrow  
       2020-05-20 16:19:30 +08:00
    java 可以看看 quartz,用 Spring 的话直接使用 Schedule 的 Cron
    项目启动的时候遍历一次现有数据设置任务,后续有数据插入再追加任务
    zoharSoul
        11
    zoharSoul  
       2020-05-20 16:22:33 +08:00
    订阅 bingo
    rioshikelong121
        12
    rioshikelong121  
       2020-05-20 16:23:46 +08:00
    你这个需求应该叫定时任务 job schduler

    .net 下我用过 Quartz
    saulshao
        13
    saulshao  
       2020-05-20 16:39:20 +08:00
    我没明白为啥要这么做?那个往数据库里新增数据的程序难道不是你系统的一部分?
    1ffree
        14
    1ffree  
       2020-05-20 17:50:56 +08:00
    课程表场景,可以使用 mq, 配置延迟消费
    fangcan
        15
    fangcan  
       2020-05-20 17:54:46 +08:00
    可以吧 写服务,查表,满足条件发送通知
    Jooooooooo
        16
    Jooooooooo  
       2020-05-20 18:02:05 +08:00
    监听 binlog

    写的时候就异步发通知
    shakespark
        17
    shakespark  
       2020-05-21 09:55:22 +08:00 via iPhone
    如果时效要求不是很高,最简单就是定时查询
    sandman511
        18
    sandman511  
    OP
       2020-05-25 14:28:03 +08:00
    @saulshao 嗯 数据是 A 系统维护的 我是 B 系统
    saulshao
        19
    saulshao  
       2020-05-25 20:11:11 +08:00
    最简单的做法是在你要监控的表上面加个字段,设个缺省值。每次你就读这个新增字段的值,如果是缺省的,就处理对应的行。处理完成后将这个新增的字段里面的值 update 一下......这个做法的问题是加入你需要处理的这个表里面,有记录更新也要计算就需要额外的逻辑了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2559 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:04 · PVG 00:04 · LAX 08:04 · JFK 11:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.