Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

windows分支使用VS2022编译成功后,_include下没有kafka相关的头文件 #1465

Closed
LZUXK opened this issue Jan 5, 2024 · 20 comments · Fixed by #1466
Closed

windows分支使用VS2022编译成功后,_include下没有kafka相关的头文件 #1465

LZUXK opened this issue Jan 5, 2024 · 20 comments · Fixed by #1466

Comments

@LZUXK
Copy link

LZUXK commented Jan 5, 2024

拉取的2024-1-05最新的代码,CMAKE配置(VS2022,X64),生成.sln,用vs2022打开选择ALL_BUILD,12个全部生成成功。查看_include\workflow文件夹下面没有kafka相关的头文件。

@Barenboim
Copy link
Contributor

Barenboim commented Jan 5, 2024

是的,kafka目前我们没有能力维护windows的。
如果你需要用到,能不能帮我们把最新的kafka代码移植到windows分支?我们这块的代码大多数比较标准,没有什么特殊的unix特有的写法。

另外,你没有看到kafka的header,是因为编译时,需要加上KAFKA=y。当然,代码有点老,后面的更新我们都没有加上。

@Barenboim Barenboim added the help wanted Extra attention is needed label Jan 6, 2024
@LZUXK
Copy link
Author

LZUXK commented Jan 8, 2024

make Kafka=y 是用来生成kafka_cli客户端示例程序的吧?没有上图的头文件,示例也编译不过的。

@Barenboim
Copy link
Contributor

是KAFKA=y吧,全大写,y是小写。我感觉是区分大小写的。
不过,之前有人试过,这个kafka跑不通。可能还是需要移植一下。

@Barenboim
Copy link
Contributor

要不我来移植一下吧。然后麻烦帮我们试试最新代码能不能用。

@Barenboim Barenboim linked a pull request Jan 8, 2024 that will close this issue
@Barenboim
Copy link
Contributor

@LZUXK 你好,我合进windows分支了,麻烦帮我们再试一下。谢谢。

@Barenboim Barenboim removed the help wanted Extra attention is needed label Jan 8, 2024
@LZUXK
Copy link
Author

LZUXK commented Jan 8, 2024

@Barenboim 是的,我很想使用起来,但是我没法使用。我可能没描述清楚我遇到的问题,我再上传两张图片描述一下。

@Barenboim
Copy link
Contributor

图片上传有问题,看不到啊。
我们windows分支的ci脚本里,是有编译kafka的库和tutorial示例的。你也可以参考一下ci。
只要加了KAFKA=y的选项,应该是有那几个头文件的才对啊。

@LZUXK
Copy link
Author

LZUXK commented Jan 8, 2024

还没编译过。但是我好像有点明白了,我再研究试试。

@Barenboim
Copy link
Contributor

好的,麻烦帮我们跟进一下问题。随时交流。

@Barenboim
Copy link
Contributor

你好,麻烦用最新windows分支代码再试一下!

@LZUXK
Copy link
Author

LZUXK commented Jan 10, 2024

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

@Barenboim
Copy link
Contributor

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

啊,这个有个timeout可以设置的吧?我看一下。肯定是可以等消息再callback,不会一直空跑的。

@kedixa
Copy link
Contributor

kedixa commented Jan 10, 2024

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

参考一下文档中给出的fetch_timeout配置项,默认100ms没有取得消息就返回,可以尝试增加这个参数例如1000ms。但也不要太长以至于超过请求的超时时间。

https://github.com/sogou/workflow/blob/master/docs/tutorial-13-kafka_cli.md#%E5%88%9B%E5%BB%BA%E5%B9%B6%E5%90%AF%E5%8A%A8kafka%E4%BB%BB%E5%8A%A1

@LZUXK
Copy link
Author

LZUXK commented Jan 10, 2024

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

参考一下文档中给出的fetch_timeout配置项,默认100ms没有取得消息就返回,可以尝试增加这个参数例如1000ms。但也不要太长以至于超过请求的超时时间。

https://github.com/sogou/workflow/blob/master/docs/tutorial-13-kafka_cli.md#%E5%88%9B%E5%BB%BA%E5%B9%B6%E5%90%AF%E5%8A%A8kafka%E4%BB%BB%E5%8A%A1

kafka客户端持续消费的任务我是程序一开始就启动的,我无法知道什么时候会有消息过来,可能一个小时,可能一天,设置这个fetch_timeout不太行吧。我只能一个任务接着一个任务的create?

@LZUXK
Copy link
Author

LZUXK commented Jan 10, 2024

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

啊,这个有个timeout可以设置的吧?我看一下。肯定是可以等消息再callback,不会一直空跑的。

假如设置1000ms的fetch_timeout,假如消息一个小时后才生产出来,那是不是有3000多个任务是空跑的

@Barenboim
Copy link
Contributor

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

啊,这个有个timeout可以设置的吧?我看一下。肯定是可以等消息再callback,不会一直空跑的。

假如设置1000ms的fetch_timeout,假如消息一个小时后才生产出来,那是不是有3000多个任务是空跑的

这个没什么关系的啊,一秒一个请求。这里你非要改,改成一个小时也没关系的。

@LZUXK
Copy link
Author

LZUXK commented Jan 10, 2024

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

啊,这个有个timeout可以设置的吧?我看一下。肯定是可以等消息再callback,不会一直空跑的。

假如设置1000ms的fetch_timeout,假如消息一个小时后才生产出来,那是不是有3000多个任务是空跑的

这个没什么关系的啊,一秒一个请求。这里你非要改,改成一个小时也没关系的。

我的意思不是改fetch_timeout,我的意思是是否可以第一个任务就一直阻塞等有消息生产出来了,开始回调函数,然后再接着开始第下一个消费任务。因为我之前用rabbitmq是这样的,循环消费消息是一开始是阻塞的,等收到第一个消息后才开始接下来的逻辑。我的想法是订阅消息,不应该是有推送这么一说嘛。为什么还要主动请求消费消息。

@Barenboim
Copy link
Contributor

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

啊,这个有个timeout可以设置的吧?我看一下。肯定是可以等消息再callback,不会一直空跑的。

假如设置1000ms的fetch_timeout,假如消息一个小时后才生产出来,那是不是有3000多个任务是空跑的

这个没什么关系的啊,一秒一个请求。这里你非要改,改成一个小时也没关系的。

我的意思不是改fetch_timeout,我的意思是是否可以第一个任务就一直阻塞等有消息生产出来了,开始回调函数,然后再接着开始第下一个消费任务。因为我之前用rabbitmq是这样的,循环消费消息是一开始是阻塞的,等收到第一个消息后才开始接下来的逻辑。我的想法是订阅消息,不应该是有推送这么一说嘛。为什么还要主动请求消费消息。

那不就是fetch timeout无限吗?kafka本来就要给server发一个fetch timeout的,我们默认是100ms。你想等有消息再回调,那就设置一个比较长的fetch timeout就可以了,这都是参数设置的问题。fetch和推送不是一回事吗?你推送也可以有超时啊。一秒超时一次不会有什么问题。如果你不想,那就一小时也行,但不要纠结于有超时这个问题。

@Barenboim
Copy link
Contributor

还是说你想一个callback被调用多次?我们一个task都是只回调一次,然后重新创建的。

你想要多次回调,可以在我们这个的基础上再封装一个函数,完成你想要的功能。

@LZUXK
Copy link
Author

LZUXK commented Jan 11, 2024

最新的windows分支可以编译通过了,kafka也成功fetch到消息了。但是我有一个问题:kafka任务的回调函数为什么不是阻塞到等fetch到消息后再调用的,导致Kafka客户端持续消费的时候,kafka任务大部分时间下在空跑。

啊,这个有个timeout可以设置的吧?我看一下。肯定是可以等消息再callback,不会一直空跑的。

假如设置1000ms的fetch_timeout,假如消息一个小时后才生产出来,那是不是有3000多个任务是空跑的

这个没什么关系的啊,一秒一个请求。这里你非要改,改成一个小时也没关系的。

我的意思不是改fetch_timeout,我的意思是是否可以第一个任务就一直阻塞等有消息生产出来了,开始回调函数,然后再接着开始第下一个消费任务。因为我之前用rabbitmq是这样的,循环消费消息是一开始是阻塞的,等收到第一个消息后才开始接下来的逻辑。我的想法是订阅消息,不应该是有推送这么一说嘛。为什么还要主动请求消费消息。

那不就是fetch timeout无限吗?kafka本来就要给server发一个fetch timeout的,我们默认是100ms。你想等有消息再回调,那就设置一个比较长的fetch timeout就可以了,这都是参数设置的问题。fetch和推送不是一回事吗?你推送也可以有超时啊。一秒超时一次不会有什么问题。如果你不想,那就一小时也行,但不要纠结于有超时这个问题。

哦。好的,明白。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants