Я использую клиент Gmail Java в небольшом приложении Scala для импорта сообщений в почтовый ящик пользователя и хотел понять, является ли базовый API идемпотентным или нет.В частности, я использую этот вызов:
gmail.users().messages().gmailImport("me", message).execute()
Прежде чем передать этот метод message
, я явно устанавливаю идентификатор сообщения (message.setId(<id>
) и использую GUID для значения(например: 85e2adbb-d548-4d0b-bc5c-5eabeccd5551
), но это, похоже, никак не влияет.В ответе API я всегда вижу вышестоящий идентификатор, который выглядит как 14c777cc5fbac1ec
.Кроме того, даже если использовать этот идентификатор в последующем вызове gmailImport
, похоже, что новое сообщение импортировано, и в моем тестовом почтовом ящике появляются дубликаты.
Мои вопросы:
- Является ли это поле идентификатора сообщения чем-то сгенерированным Google и НЕ предназначенным для того, чтобы потребитель API отправлял его для достижения идемпотентности?(https://developers.google.com/gmail/api/v1/reference/users/messages)
- Если ответ на ^ - да, есть ли вообще поддержка идемпотентности на уровне API? Или мне нужно отслеживать сообщения и идентификаторы, если я хочу избежать дубликатов?
Спасибо!