Шаблон конверта - это способ обернуть сообщение метаданными, чтобы определить, что делать с этим сообщением, не разбираясь в содержании самого сообщения. Метаданные могут использоваться для определения того, как направить сообщение соответствующему получателю для обработки содержимого сообщения, или могут указать, что делать с самим сообщением.
Как правило, этот шаблон работает так, что отличается Слои добавляют обертку поверх сообщения, которое передается ему. Может быть несколько вложенных конвертов. Когда сообщение получено, существует соответствующий слой, который удаляет один из конвертов для каждого добавленного слоя.
Сторона, которая создает сообщения, будет выглядеть так:
![Adding envelopes](https://i.stack.imgur.com/XaQC2.png)
Сторона, которая принимает сообщения, будет выглядеть так:
![Remvoing evenlopes](https://i.stack.imgur.com/0KB5V.png)
В Google Cloud Pub / Sub сообщение есть карта attributes
, которая может использоваться именно для этой цели. Вы можете поместить данные в атрибуты, которые могут указывать, что делать с сообщением, без необходимости декодировать байты, хранящиеся в части data
сообщения.
Например, представьте, что у вас есть topi c это содержит сообщения, которые соответствуют различным действиям пользователя на веб-сайте электронной коммерции. Некоторые сообщения предназначены для обновления профиля, другие - для транзакций. Вы хотите выполнять различные действия с этими типами сообщений. Вместо того, чтобы смотреть в поле data
в сообщении, чтобы определить, какой это тип и что с ним делать, вы можете добавить пары ключ / значение в attributes
, например, action: UPDATE
и action: TRANSACTION
. Затем ваш подписчик посмотрит на значение атрибута action
и определит, что делать с сообщением. Он может выполнить другой фрагмент кода или даже отправить его в другой сервис, выступая в качестве маршрутизатора для сообщений. Ключевым моментом является то, что определение того, что делать, может быть выполнено без необходимости декодировать сами данные сообщения.
Сообщения, отправляемые на pu sh подписка конечные точки имеют дополнительные добавлен конверт, который указывает на подписку , с которой пришло сообщение. Это необходимо, поскольку несколько подписок pu sh могут указывать на одни и те же конечные точки.