kratos-transport
kratos-transport copied to clipboard
和Kratos适配时,优雅关闭问题。
Hi, 我现在使用Kratos框架,server使用的是 kratos-transport的kafka。 有如下疑问:
- 优雅关闭消费者时,kratos-transport是通过 context机制来实现的(server.Stop()函数不生效)。subscribe的context是通过kafkaSrv.RegisterSubscriber()来设置的,在与Kratos结合时,subscribe的context应该与Kratos.App.ctx关联起来,在Kratos的layout中,Server是单独一个目录 internal/server/xxx.go,关联起来不是很方便,有什么好的方法吗?
- subscribe 使用 context来关闭,会出现一个问题。如果一个消息正在消费(处理业务逻辑),此时收到了优雅关闭信号,context被取消,此时可能收到错误 ERROR msg=[kafka]: unable to commit msg: context canceled, 待服务重启后,会出现二次消费的问题。
kratos-transport up в type headerCarrier struct{} add Keys() []string Values(key string) []string
kratos-transport up в type headerCarrier struct{} add Keys() []string Values(key string) []string
already fixed
@chazex 请问如何通过 context 来设置优雅退出?
当我发现 server.Stop() 不生效时,我修改了取消订阅 s.reader.Close(), 但是同样会有二次消费的问题。