Что такое шаблон конверта в сообщениях Pubsub? - PullRequest
0 голосов
/ 31 марта 2020

Я ищу некоторые ресурсы для понимания шаблона конверта, и Google не слишком полезен. Может кто-нибудь проиллюстрировать это на примере? Для получения дополнительной информации я работаю с Pubsub в Python и хочу пометить сообщения дополнительной информацией (помимо простого добавления этой информации в тело сообщения) для сложных приложений.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Шаблон конверта - это способ обернуть сообщение метаданными, чтобы определить, что делать с этим сообщением, не разбираясь в содержании самого сообщения. Метаданные могут использоваться для определения того, как направить сообщение соответствующему получателю для обработки содержимого сообщения, или могут указать, что делать с самим сообщением.

Как правило, этот шаблон работает так, что отличается Слои добавляют обертку поверх сообщения, которое передается ему. Может быть несколько вложенных конвертов. Когда сообщение получено, существует соответствующий слой, который удаляет один из конвертов для каждого добавленного слоя.

Сторона, которая создает сообщения, будет выглядеть так:

Adding envelopes

Сторона, которая принимает сообщения, будет выглядеть так:

Remvoing evenlopes

В Google Cloud Pub / Sub сообщение есть карта attributes, которая может использоваться именно для этой цели. Вы можете поместить данные в атрибуты, которые могут указывать, что делать с сообщением, без необходимости декодировать байты, хранящиеся в части data сообщения.

Например, представьте, что у вас есть topi c это содержит сообщения, которые соответствуют различным действиям пользователя на веб-сайте электронной коммерции. Некоторые сообщения предназначены для обновления профиля, другие - для транзакций. Вы хотите выполнять различные действия с этими типами сообщений. Вместо того, чтобы смотреть в поле data в сообщении, чтобы определить, какой это тип и что с ним делать, вы можете добавить пары ключ / значение в attributes, например, action: UPDATE и action: TRANSACTION. Затем ваш подписчик посмотрит на значение атрибута action и определит, что делать с сообщением. Он может выполнить другой фрагмент кода или даже отправить его в другой сервис, выступая в качестве маршрутизатора для сообщений. Ключевым моментом является то, что определение того, что делать, может быть выполнено без необходимости декодировать сами данные сообщения.

Сообщения, отправляемые на pu sh подписка конечные точки имеют дополнительные добавлен конверт, который указывает на подписку , с которой пришло сообщение. Это необходимо, поскольку несколько подписок pu sh могут указывать на одни и те же конечные точки.

1 голос
/ 31 марта 2020

Шаблон конверта PubSub прост

  • Содержимое сообщения (абсолютно то, что вы хотите, закодировано в base64)
  • Атрибуты сообщения (которые вы можете добавить, чтобы добавить метаданные на контент). Вы можете использовать атрибут для принятия решения по сообщению без его обработки. Например, добавьте версию сообщения. Если ваш код может обрабатывать только v1, и у вас есть сообщение v2, пропустите его, вместо того, чтобы иметь немарширующую ошибку.
  • Идентификатор публикации
  • Метка времени

Когда вы используете конверт, он представляется в двух разных вариантах:

Вы найдете ту же информацию, но не структурированную с точно такой же схемой JSON.

...