我在从订阅者的 pubsub 消息中获取消息 ID 时遇到了一些困难。问题似乎是 pubsub 消息将 ID 存储在 message_id 字段中,但 getMessageId 方法正在查找不存在的 messageId 字段中的消息 ID。
我正在尝试从另一个应用程序发布的 Pubsub 消息中获取消息 ID。JSON 请求正文如下所示:
{
"message": {
"data": "SomeEncodedDate",
"attributes": {
"Published_Timestamp": "1438970954798"
},
"message_id": "1325068255839"
},
"subscription": "projects/MyProject/subscriptions/MySubscription"
}
我可以使用以下代码成功地重新创建消息:
JsonParser parser = JacksonFactory.getDefaultInstance().createJsonParser(jsonRequest);
parser.skipToKey("message");
PubsubMessage message = parser.parseAndClose(PubsubMessage.class);
如果我在调试器中查看消息,它在 message_id 字段中具有有效的消息 ID。但是,getMessageId() 返回 null。如果我使用 setMessageId("SomeKey") 方法,则消息将包含一个带有新值的 messageId 新字段。现在我的消息有两个 ID 字段,message_id 和 messageId。调用 getMessageId 现在返回 messageId 字段值,而不是实际包含在 pubsub 消息中的 message_id。
这是一个错误还是我做错了什么?