我尝试通过这种方式:
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 input
和message.Body == nil
却失败了。但是,如果JSON不是对象列表([{...}, {...}, ...]
而是一个对象{...}
,则一切正常我试过了
RmqMessages struct {
Messages []RmqMessage
}
rmqMessages := RmqMessages{}
err := json.Unmarshal(message.Body, &rmqMessages.Messages)
结果相同
我究竟做错了什么?
最佳答案
错误在于ack
遍历反序列化数组的循环中的消息