1

最近,我想在我的网站上集成在线支付服务。一切都很顺利,直到我有一个关于它的架构的问题。好吧,该服务的工作方式如下。首先,它检查以支付请求的形式推送到 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 例程读取最近的消息,忽略之前发送的消息。这是一个好方法吗?提前致谢

4

0 回答 0