我在从订阅者的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。

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

最佳答案

不幸的是,我还没有找到其他解决方案。我唯一能做的就是使用以下命令将应该是消息ID的内容复制到messageId字段中:message.setMessageId(message.get(“ message_id”)。toString());然后,我可以使用getMessageId方法。这只是一个错误。

07-24 09:15