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

问一个消息队列的问题

  •  1
     
  •   Yuicon · 2019-05-09 11:50:00 +08:00 · 4734 次点击
    这是一个创建于 2060 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有很多仓库本地电脑会创建一些例如设备这样的对象,需要发送消息到消息队列让云端管理也创建一个一样的对象。现在问题的两个对象在数据库里的 id 是不一样的,云端要用怎样的方式把云端数据库的 id 传给本地数据库比较好?本地没有公网 ip,所以无法回调。
    15 条回复    2019-05-09 21:21:48 +08:00
    Yuicon
        1
    Yuicon  
    OP
       2019-05-09 11:56:03 +08:00
    目前自己的想法是搞个新的队列让客户端订阅去存 id,但是这样就很浪费,可能这个消息只发给一个客户端,这样所有的客户端都收到了
    Yuicon
        2
    Yuicon  
    OP
       2019-05-09 13:21:44 +08:00
    没有人么。。
    swuzjb
        3
    swuzjb  
       2019-05-09 13:35:13 +08:00
    分布式主键生成策略? 没看懂你的问题
    Yuicon
        4
    Yuicon  
    OP
       2019-05-09 13:40:41 +08:00
    @swuzjb 依赖了框架的 orm 所以主键用的是数据库自动生成的
    我的问题是客户端发送消息后,有什么好的方法拿到云端根据消息创建记录后生成的主键
    coffeSlider
        5
    coffeSlider  
       2019-05-09 14:06:35 +08:00 via Android
    写一个接口做 id 映射。
    h8743
        6
    h8743  
       2019-05-09 16:37:08 +08:00
    啥数据库? mybatis mysql 自带新增返回 id
    Yuicon
        7
    Yuicon  
    OP
       2019-05-09 16:39:43 +08:00
    @coffeSlider 走消息队列后就是异步的了 新问题在于什么时候去做映射这一步
    Yuicon
        8
    Yuicon  
    OP
       2019-05-09 16:40:40 +08:00
    @h8743 兄弟 拿 id 是可以做到的 问题是怎么传给客户端
    Yuicon
        9
    Yuicon  
    OP
       2019-05-09 16:43:23 +08:00
    最后我的解决方案是搞个新队列,把带 id 的对象发布上去
    Nasei
        10
    Nasei  
       2019-05-09 16:49:16 +08:00 via Android
    可以搞一个两边都能访问的数据库…云端建完了就写一个本地 id 和云端 id 的记录,本地间隔去查
    Yuicon
        11
    Yuicon  
    OP
       2019-05-09 16:55:17 +08:00
    @Nasei 这样感觉消耗有点大,本地有很多也怕这个数据库有性能问题

    对象现在基本都有唯一的 code 字段,其实是一开始设计的问题,因为前期开发用的 orm 就依赖了数据库自动生成的 id,所以就有这么蛋疼的事情
    Nasei
        12
    Nasei  
       2019-05-09 16:58:43 +08:00 via Android
    @Yuicon 从队列发回来也是可以的,就变了一个基于队列的 rpc 了
    Yuicon
        13
    Yuicon  
    OP
       2019-05-09 17:01:20 +08:00
    @Nasei 嗯 感觉唯一缺点就是我不需要广播 一个消息应该精准的发给需要的客户端
    rrfeng
        14
    rrfeng  
       2019-05-09 17:03:52 +08:00
    『两个对象在数据库里的 id 是不一样的』
    你让他一样不就行了吗???

    数据库里的自增 id 无所谓啊,加一个字段不就行了?关键是客户端生成的 id 是不是唯一的?
    Yuicon
        15
    Yuicon  
    OP
       2019-05-09 21:21:48 +08:00
    @rrfeng 你说的这个我是搞了一个唯一的 code 字段,问题是业务里用了很 orm 的东西,强依赖了这个自增 id
    比如我要创建一个对象,必须要传入对应的外键 id 才行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:47 · PVG 04:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.