tx7do / kratos-transport

kratos transport layer extension
MIT License
348 stars 95 forks source link

和Kratos适配时,优雅关闭问题。 #37

Closed chazex closed 5 months ago

chazex commented 1 year ago

Hi, 我现在使用Kratos框架,server使用的是 kratos-transport的kafka。 有如下疑问:

  1. 优雅关闭消费者时,kratos-transport是通过 context机制来实现的(server.Stop()函数不生效)。subscribe的context是通过kafkaSrv.RegisterSubscriber()来设置的,在与Kratos结合时,subscribe的context应该与Kratos.App.ctx关联起来,在Kratos的layout中,Server是单独一个目录 internal/server/xxx.go,关联起来不是很方便,有什么好的方法吗?
  2. subscribe 使用 context来关闭,会出现一个问题。如果一个消息正在消费(处理业务逻辑),此时收到了优雅关闭信号,context被取消,此时可能收到错误 ERROR msg=[kafka]: unable to commit msg: context canceled, 待服务重启后,会出现二次消费的问题。
farums commented 1 year ago

kratos-transport up в type headerCarrier struct{} add Keys() []string Values(key string) []string

tx7do commented 1 year ago

kratos-transport up в type headerCarrier struct{} add Keys() []string Values(key string) []string

already fixed

xichengliudui commented 9 months ago

@chazex 请问如何通过 context 来设置优雅退出? 当我发现 server.Stop() 不生效时,我修改了取消订阅 s.reader.Close(), 但是同样会有二次消费的问题。