У меня возникли трудности с получением идентификатора сообщения из сообщения pubsub в моем подписчике. Проблема заключается в том, что сообщение pubsub сохраняет идентификатор в поле message_id, но метод getMessageId ищет идентификатор сообщения в несуществующем поле messageId.Google PubSub getMessageID = null из-за неправильного тега?
Я пытаюсь получить идентификатор сообщения из сообщения Pubsub, которое было опубликовано из другого приложения. Тело запроса 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. Однако getMessageId() возвращает значение null. Если я использую метод setMessageId («SomeKey»), тогда сообщение будет содержать новое поле messageId с новым значением. Теперь мое сообщение имеет два поля ID, message_id и messageId. Вызов getMessageId теперь возвращает значение поля messageId, а не message_id, которое фактически было включено в сообщение pubsub.
Является ли это ошибкой или я делаю что-то неправильно?
Я нашел решение для групповой помощи, но я бы предпочел не делать этого. Я могу скопировать код сообщения в поле messageId с помощью: message.setMessageId (message.get ("message_id"). ToString()); Затем я могу использовать метод getMessageId, но это кажется неправильным. – Gremash
Вы используете push-подписку? –
Да, мы используем push-подписки. – Gremash