Pour publier un message avec Pub/Sub, une application d'éditeur crée et envoie des messages à un sujet.
Ce document présente le workflow de publication, y compris le concept de sujets et de messages.
À propos des sujets
Un sujet Pub/Sub est une ressource nommée qui représente un flux de messages. Lorsqu'un éditeur envoie un message, il cible un sujet spécifique. Le service Pub/Sub utilise ce nom de sujet pour acheminer le message vers tous les abonnements associés au sujet. Si un abonnement compte plusieurs abonnés, un seul d'entre eux reçoit le message.
Les éditeurs n'ont pas besoin de savoir combien d'abonnés existent. Ils se concentrent sur le sujet, en veillant à séparer les préoccupations entre l'envoi et la réception des messages.
Pub/Sub est compatible avec deux types de sujets: un sujet standard et un sujet d'importation.
Propriétés d'un sujet
Lorsque vous créez ou mettez à jour un sujet, vous pouvez spécifier ses propriétés.
Pour en savoir plus sur les propriétés d'un sujet, consultez Propriétés d'un sujet.
À propos des sujets d'importation
Un sujet d'importation permet à Pub/Sub d'ingérer des données de streaming à partir d'une autre source et d'agir en tant qu'application d'éditeur qui envoie les données au sujet. Vous pouvez activer l'ingestion sur un sujet à l'aide de la console, de la Google Cloud CLI, d'appels REST ou des bibliothèques clientes. Dans le cadre de la gestion du sujet d'importation,Google Cloud assure la surveillance et la mise à l'échelle du pipeline d'ingestion.
Sans sujet d'importation, le streaming de données vers Pub/Sub à partir d'une source de données nécessite un service supplémentaire. Ce service supplémentaire extrait les données de la source d'origine et les publie dans Pub/Sub. Le service supplémentaire peut être un moteur de streaming tel qu'Apache Spark ou un service écrit sur mesure. Vous devez également configurer, déployer, exécuter, mettre à l'échelle et surveiller ce service.
Vous trouverez ci-dessous une liste d'informations importantes sur les importations:
Comme pour un thème standard, vous pouvez toujours publier manuellement dans un thème d'importation.
Vous ne pouvez associer qu'une seule source d'ingestion à un thème d'importation.
Nous vous recommandons d'importer des sujets pour les données en streaming. Si vous envisagez d'ingérer des données par lot dans BigQuery au lieu d'ingérer des données en streaming, vous pouvez essayer le service de transfert de données BigQuery (BQ DTS). Si vous souhaitez ingérer des données dans Cloud Storage, le service de transfert de stockage (STS) est une bonne option.
Pub/Sub est compatible avec les sources suivantes pour les sujets d'importation:
Réplication des données dans un sujet
Un sujet Pub/Sub utilise trois zones pour stocker des données. Le service prend en charge la réplication synchrone dans au moins deux zones et la réplication au mieux de nos capacités dans une troisième zone supplémentaire. La réplication Pub/Sub ne s'effectue que dans une seule région.
À propos des messages
Un message Pub/Sub correspond aux données qui transitent par le service.
Un message est constitué de champs contenant des données du message et des métadonnées. L'un des éléments suivants doit être spécifié dans un message.
Données du message: il s'agit du contenu principal du message, qui peut être du texte ou des données binaires. Il représente les informations réelles que vous souhaitez communiquer entre les éditeurs et les abonnés. Si vous utilisez directement l'API REST, les données du message doivent être encodées en base64. Consultez l'exemple dans l'onglet REST de la section Publier des messages.
Clé de tri: identifiant représentant l'entité pour laquelle les messages doivent être triés. Les messages avec la même clé de tri doivent être distribués à un abonné dans l'ordre de leur publication. Une clé de tri n'est requise que si vous souhaitez que vos messages soient distribués dans l'ordre. Pour en savoir plus sur les clés d'ordonnancement, consultez la section Message d'ordre.
Attributs: paires clé-valeur facultatives qui fournissent du contexte et des informations supplémentaires sur le message. Ils peuvent être utilisés pour le routage, le filtrage ou l'enrichissement du contenu des messages. Par exemple, vous pouvez ajouter des attributs tels que des codes temporels ou des ID de transaction. Pour en savoir plus sur les attributs utilisés pour publier des messages, consultez la section Utiliser des attributs pour publier un message.
Le service Pub/Sub ajoute les champs suivants au message :
- ID de message unique pour le sujet
- Horodatage correspondant au moment où le service Pub/Sub reçoit le message
Voici un exemple de format de message au format JSON:
{
"data": "This is the core message content.",
"attributes": {
"category": "notification",
"user_id": "12345",
"priority": "medium"
},
"orderingKey": "12345"
}
Workflow de publication de messages
Pour publier un message avec Pub/Sub, une application d'éditeur crée et envoie des messages dans un sujet.
- Vous créez un message contenant vos données.
- Sélectionnez les attributs de publication facultatifs.
- Vous envoyez une requête au serveur Pub/Sub pour publier le message dans un sujet spécifié.
Le service Pub/Sub reçoit le message et le traite comme suit:
Le message est stocké pour être distribué.
Le message est répliqué dans plusieurs zones pour assurer sa durabilité et sa haute disponibilité.
Pub/Sub identifie les abonnés dont les abonnements correspondent au sujet du message et distribue une copie du message à chacun d'eux.
Pub/Sub offre aux abonnés existants la distribution de chaque message au moins une fois et l'ordonnancement des messages, dans la mesure du possible.
Pour en savoir plus sur le système Pub/Sub, consultez la section Présentation du service Pub/Sub.
Pour en savoir plus sur le fonctionnement de Pub/Sub, consultez la page Présentation de l'architecture de Pub/Sub.