【问题标题】:Google PubSub getMessageID = null because of wrong tag?由于标签错误,Google PubSub getMessageID = null?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多