两台电脑都会发生这种情况吧
是的,另外一台电脑可能结束的没那么果断,如果数据都是一致的情况下,多试几次就可能复现了。
核心就是这个原因导致的,程序逻辑就要看你自己找原因了。
有个点你要注意,如果你的进程持续watch永远不停止,producer理论是长连接,producer是单例,也不会销毁,所以最终消息还是会发送成功。所以如果你每次都是new producer
,那么你的设计可能要在改改了。
回大佬,同样的程序,用的同一个kafka集群,我在不同的电脑上进行了测试,在我本机测试的时候,数据并没有发生数据丢失,我看移动数据的速度大概有300个每秒左右,然后在第二台电脑上移动速度为每秒2800个左右。在第一台电脑上测试了几万条数据都成功发送,第二台电脑上的话就发生了丢失情况。如果按照大佬说的,producer所处的进程(线程)结束了,没来得及发送出去,应该是两台电脑都会发生这种情况吧(程序都是一样的
所以我怀疑是因为生成文件的速率太快了,send来不及发送就将数据丢弃了。
只有这一种情况的,你加了休眠,就不丢了呀。
核心其实就是producer
所处的进程(线程也一样)结束了,所以它也跟着结束了,但是消息还没来得及发。
谢大佬,可能我没讲清楚,是这么个情况,具体我是使用python watchdog 在不断监控文件夹下产生文件的情况,并不是循环发送数据,文件夹新增一个文件我就会send一次文件路径到kafka中,我将1000个左右的文件移动到监控的文件夹下,sum的数量就为正常的1000,并都可以正常传输到kafka,但数量增加到1500个左右后就会丢失数据,sum的数量就少于1500。
我怀疑是不是send没有成功,某个环节将数据丢弃了。