Google PubSub getMessageID = null 因为标签错误?

Google PubSub getMessageID = null because of wrong tag?

我在从订阅者的 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() returns 为空。如果我使用 setMessageId("SomeKey") 方法,消息将包含一个新的 messageId 字段和新值。现在我的消息有两个 ID 字段,message_id 和 messageId。现在调用 getMessageId returns messageId 字段值而不是 message_id 实际包含在 pubsub 消息中的值。

这是一个错误还是我做错了什么?

很遗憾,我还没有找到其他解决方案。我唯一能做的就是将消息 ID 复制到 messageId 字段中:message.setMessageId(message.get("message_id").toString());然后我可以使用 getMessageId 方法。这只是一个错误。