我正试图从pubsub中获取消息,但现在有点迷失了。我想将消息处理程序与实际的“提取程序”分开。所以基本上我想这样做:
sub := pubsubClient.Subscription("bla")
err := sub.Receive(context.Background(), handleMessage)
func handleMessage(ctx context.Context, msg *pubsub.Message) {
fmt.Println(msg)
}
不幸的是,这不起作用。我收到以下错误:Cannot use handleMessage (type func(ctx context.Context, msg *pubsub.Message) error as type func(context.Context, *Message)
。
我可以通过以下方法解决此问题:
err := sub.Receive(context.Background(), func(ctx context.Context, msg *pubsub.Message) {
if err := handleMessage(msg); err != nil { // individual message processing went wrong
msg.Nack()
return
}
msg.Ack()
})
但是我更喜欢将实际的处理函数分开。任何帮助表示赞赏。