[mq 的消费者与 broker 之间的联系] 问题无法简单描述,请看正文 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
RedBeanIce
V2EX    Java

[mq 的消费者与 broker 之间的联系] 问题无法简单描述,请看正文

  •  
  •   RedBeanIce 2022 年 12 月 6 日 1598 次点击
    这是一个创建于 1237 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假如我在家里,且没有申请公网 IP ,那么在家里的电脑上写得代码,都是处理一个 NAT 的网络环境

    以下操作,默认,在家里的,NAT 的网络下,进行

    假如我在电脑上写了一个服务,有两个方法,一个是生产者( sendMqMsg ,topic 是 test-mq ),一个消费者( consumerMqMsg ,topic 和上面的对应)

    这个服务上面,链接的是云厂商的 mq ,这个 mq 是肯定有公网 ip 的。( mq 可以是 mqtt ,rabbitmq ,kafka ,rocketmq 等)

    (之前看 rocketmq 的代码,好像有推模型和拉模型,但是我不理解)

    总结以上描述的重点:mq 的 broker 是怎么精准的把消息发到我的服务里面的呢,,我的服务明明是一个 NAT 的网络环境。外部应该不能够直接调用来咋。。

    6 条回复    2022-12-08 20:39:06 +08:00
    vitoliu
        1
    vitoliu  
       2022 年 12 月 6 日 via iPhone   1
    别想那么多复杂的问题,只要你能连 broker 的网,建立长连接后直接就能推送接收
    ktqFDx9m2Bvfq3y4
        2
    ktqFDx9m2Bvfq3y4  
       2022 年 12 月 6 日 via iPhone   1
    你手机在 nat 里微信还不是实时推送消息给你了。

    长链接。
    lazyfighter
        3
    lazyfighter  
       2022 年 12 月 6 日   1
    broker 是存储消息的,一般还有一方负责协调各个 broker , 无论你作为生产者还是消费者都是跟《协调者》进行交互,协调者会告诉你 broker 的地址,然后客户端直接跟 broker 进行交互,也就是 broker 跟你的客户端也需要网络通才行,推拉很简单,broker push 消息到你的消费者就是推模式,client 定时拉去消息到客户端这就是拉模式
    RedBeanIce
        4
    RedBeanIce  
    OP
       2022 年 12 月 7 日
    @vitoliu
    @Chad0000
    @lazyfighter

    得到一个这样的答案

    白烟染黑墨 2022/12/6 14:55:38
    你客户端不是要主动连接服务端吗?

    想写 im 的 雪糕 2022/12/6 14:56:25
    你的意思是 http 通过长链接或者心跳,等 http 手段处理的么?

    白烟染黑墨 2022/12/6 14:57:01
    只要是 TCP 就可以

    白烟染黑墨 2022/12/6 14:57:10
    udp 不保证

    想写 im 的 雪糕 2022/12/6 14:58:18
    大佬有个问题,你的家庭是 nat 网络,,,,,,,,远在云服务商服务器,是如何调用处于 nat 网络的你的呢

    白烟染黑墨 2022/12/6 14:59:51
    你需要去看 TCP/IP 网络相关的书籍,有个 NAT 映射表的,出去的时候会建立,回来的时候只要这个表还在就可以通讯。

    白烟染黑墨 2022/12/6 15:00:18
    你是计算机专业的吗

    想写 im 的 雪糕 2022/12/6 15:00:39
    计网知识缺乏

    Touch Sky 2022/12/6 15:00:54
    可以了解一下 iptables

    想写 im 的 雪糕 2022/12/6 15:01:03
    收到

    想写 im 的 雪糕 2022/12/6 15:01:05
    我去了解下

    Touch Sky 2022/12/6 15:01:11
    三层网络转发

    想写 im 的 雪糕 2022/12/6 15:02:29
    我去详细找找 nat 的知识。。感谢。
    dextercai
        5
    dextercai  
       2022 年 12 月 8 日
    理解有一点偏误。不管是推模型还是拉模型,前提都是 Client 连到 Broker 建立长连接。

    简单点来说:推模型是订阅 topic 之后,服务器主动在这个长连接里面给你推数据;而拉模型是相当于请求对应的 topic ,服务器再给你传过来。

    换句话来说,对线上的 Broker ,不需要处理“怎么找到你的服务”或者“怎么连接到你的服务”这个问题,因为所有的操作都是建立在你和 Broker 的长连接的前提下。

    你贴的这个聊天记录,讲的是在 NAT ( IP Masquerade )网络环境下,怎么去保持这样的一个 TCP 连接的,对应的网络设备上会维护一个 NAT 表项,对于 UDP 和 TCP 会有不同的保活机制、超时时长。和应用层上的消息队列没啥太大关系。
    RedBeanIce
        6
    RedBeanIce  
    OP
       2022 年 12 月 8 日
    @dextercai 感谢回复,我去去了解一下。

    对于 mq 的 consumer 以及 broker 来说,那就是一个 http keetp-alive 的长连接!!在这个链接里面进行推送数据。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2696 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 07:07 PVG 15:07 LAX 00:07 JFK 03:07
    Do have faith in what you're doing.
    script src="http://www.v2ex.com/b/i/G2bFpDUoZW81vQi1rLuAhFed9nntmmlMzpOIXTV1B7EsTfYaAdjah1tS5Ok6yEzJY86YZduzSxJpaUb8uMUIsWyUs9R468k_s2n7VwQWlA0tnDqLYF9xiIU4Quqs3Yxhk6NHXdjvGo8NjHwW_vNCfKvUCO4a4_3ZZYeRzz5vu_Y="> ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86