我在从订阅者的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方法。这只是一个错误。