3

У меня возникли трудности с получением идентификатора сообщения из сообщения 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.

Является ли это ошибкой или я делаю что-то неправильно?

+0

Я нашел решение для групповой помощи, но я бы предпочел не делать этого. Я могу скопировать код сообщения в поле messageId с помощью: message.setMessageId (message.get ("message_id"). ToString()); Затем я могу использовать метод getMessageId, но это кажется неправильным. – Gremash

+0

Вы используете push-подписку? –

+0

Да, мы используем push-подписки. – Gremash

ответ

0

К сожалению, я не нашел другого решения. Единственное, что я могу сделать, это скопировать код сообщения в поле messageId с помощью: message.setMessageId (message.get ("message_id"). ToString()); Затем я могу использовать метод getMessageId. Это всего лишь ошибка.