我尝试通过这种方式:

        case message := <-Rmq.Messages:
            go func() {
                log.Printf("Process message: %s", message.MessageId)

                rmqMessages := make([]RmqMessage, 100)
                err := json.Unmarshal(message.Body, &rmqMessages)
                if err != nil {
                    log.Fatalf("Error decoding %s: %v", message.Body, err)
                }

                var (
                    pushResult FcmResponse
                    rmqMessage RmqMessage
                )
                for _, rmqMessage = range rmqMessages {

它可以进行一些迭代,但对于Error decoding : unexpected end of JSON inputmessage.Body == nil却失败了。但是,如果JSON不是对象列表([{...}, {...}, ...]而是一个对象{...},则一切正常

我试过了
    RmqMessages struct {
        Messages []RmqMessage
    }
    rmqMessages := RmqMessages{}
    err := json.Unmarshal(message.Body, &rmqMessages.Messages)


结果相同

我究竟做错了什么?

最佳答案

错误在于ack遍历反序列化数组的循环中的消息

10-04 13:53