问题描述
最近,我想将在线支付服务集成到我的网站。一切都很顺利,直到我有一个关于它的架构的问题。好吧,该服务的工作方式如下。首先,它检查以支付请求的形式推送到 kafka 主题的任何传入消息,然后异步处理这些消息,并再次返回侦听消息。我应该注意到消息是从最新的偏移量中读取的,在我看来,这对于支付系统来说不是正确的方法,因为某些请求可能没有得到完全处理。上述方案中是否存在任何架构问题?顺便说一下,该服务是用 Go 编写的,所有异步操作都由 goroutine 和通道执行。这是一个片段
func (kc *KafkaConsumer) Consume(signalChan chan os.Signal) {
for{
select{
case sig := <-signalChan:
Sugar.Info("Caught signal %v",sig)
break
default:
message,err := kc.Consumer.ReadMessage(-1)
if err == nil{
Sugar.Infof("Got a new message %v",message)
done := make(chan bool)
go router.UseMessage(*message,done)
<-done
}else{
Log.Error(err.Error())
}
}
}
}
这里,ReadMessage 例程读取最近的消息,忽略之前发送的消息。这是一个好方法吗? 提前致谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)