【发布时间】:2015-08-07 19:06:44
【问题描述】:
我在从订阅者的 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 方法,但这似乎不对。
-
你在使用推送订阅吗?
-
是的,我们正在使用推送订阅。
标签: google-app-engine publish-subscribe google-cloud-pubsub