Aperçu du service de file d'attente

Le service de file d'attente pour Oracle Cloud Infrastructure (OCI) est un service sans serveur entièrement géré qui permet de découpler les systèmes et d'autoriser les opérations asynchrones. Ce service traite de grands volumes de données transactionnelles qui nécessitent un traitement indépendant des messages sans aucune perte ni duplication. Le service de file d'attente prend en charge une mise à l'échelle transparente et automatique en fonction du débit pour les producteurs et les consommateurs. Ce service utilise des normes ouvertes pour prendre en charge la communication sans aucun client ni producteur et avec un minimum d'efforts.

Le service de file d'attente pour OCI repose sur quatre principes :

Publication
Les messages, ayant chacun une période de conservation, peuvent être publiés dans une file d'attente par un ou plusieurs producteurs. Si la conservation n'est pas spécifiée, le message expire en fonction de la période de conservation définie au niveau de la file d'attente. Un message contient des données utiles sous la forme d'une chaîne.
Consommation
Plusieurs consommateurs peuvent consommer des messages à partir d'une seule file d'attente. Le nombre de consommateurs peut évoluer avec le taux de publication des messages. Une fois qu'un message a été transmis à un consommateur, il est masqué pour les autres consommateurs pendant un laps de temps prédéfini, connu sous le nom de temporisation de visibilité.
Mise à jour
Si le traitement d'un message prend plus de temps que prévu, les consommateurs peuvent prolonger la temporisation de visibilité d'un message. La prolongation de la temporisation de visibilité empêche le retour du message dans la file d'attente et sa transmission à un autre consommateur.
Suppression
Après qu'un message a été transmis à un consommateur et traité par celui-ci, il doit être supprimé pour éviter qu'il ne soit transmis à nouveau à un autre consommateur.

Avantages

Le service de file d'attente offre les avantages suivants :

Découplage d'application

Le service de file d'attente permet de découpler les applications et les systèmes à l'aide d'une architecture basée sur les événements. Le découplage fait en sorte que chaque composant d'application soit dimensionné de manière indépendante et que, dès que de nouveaux composants sont intégrés à une application, ils soient en mesure de publier dans la file d'attente ou de s'y abonner.

Diagramme représentant un producteur envoyant des messages à plusieurs files d'attente consommées par un consommateur.

Traitement fiable des messages

Le service de file d'attente garantit qu'un message n'est jamais perdu même si le consommateur n'est pas disponible pour le consommer. Un message publié est conservé jusqu'à sa suppression ou son expiration.

Si un message n'est pas consommé correctement, il est envoyé dans une file d'attente de lettres mortes (DLQ). Les files d'attente de lettres mortes vous permettent d'isoler les messages problématiques pour déterminer pourquoi ils échouent. Ce mode d'isolement et de consommation des messages posant problème permet de garantir qu'ils seront transmis au moins une fois à une application consommatrice. Pour plus d'informations, voir Files d'attente des messages non distribués.

Normes ouvertes

Le service de file d'attente peut être appelé à l'aide de la définition d'API RESTful (avec une spécification d'API ouverte) ou du protocole STOMP standard du secteur.

Concepts

Le service de file d'attente utilise les concepts suivants.

message
Un message est un élément dans une file d'attente qui contient des données utiles sous la forme d'une chaîne. La chaîne peut être dans n'importe quel format, y compris XML, JSON, CSV, un message binaire Base64-encoded et même des formats compressés tels que gzip. Les producteurs et les consommateurs devraient s'entendre sur le format du message. Chaque message est traité indépendamment.
producteur
Client qui envoie des messages à la file d'attente.
consommateur
Client qui reçoit des messages d'une file d'attente. Le consommateur est également responsable de la suppression des messages de la file d'attente après leur réception.
canal
Destination éphémère dans une file d'attente qui peut être créée sur demande. Les messages peuvent être publiés sur un canal spécifique d'une file d'attente et les consommateurs peuvent extraire des messages de canaux spécifiques. Pour plus d'informations, voir Canaux.
période de conservation maximale
Durée pendant laquelle une file d'attente conserve un message jusqu'à ce que celui-ci soit automatiquement supprimé par le système, s'il n'est pas supprimé par un consommateur. La période de conservation maximale est configurable à des valeurs de 10 secondes à 7 jours au niveau de la file d'attente. La valeur par défaut est de 1 jour.
nombre de transmissions
Nombre de fois qu'un message est transmis à un consommateur sur demande.
nombre maximal de tentatives de transmission
Nombre de fois qu'un message est transmis à un consommateur, mais qu'il n'a pas été mis à jour ou supprimé, avant d'être envoyé dans une file d'attente de lettres mortes (DLQ). Le nombre maximal de tentatives de transmission est configurable à des valeurs de 1 à 20 au niveau de la file d'attente. Pour plus d'informations, voir Nombre de transmissions.
temporisation de scrutation
Durée pendant laquelle un consommateur attendra que les messages soient consommés. L'augmentation de la temporisation de scrutation réduit le nombre de fois qu'un consommateur demande des messages de la file d'attente, mais la réponse indique qu'il n'y a aucun message disponible à consommer. La temporisation de scrutation est configurable à des valeurs de 0 à 30 secondes au niveau de la file d'attente et les consommateurs peuvent définir la valeur lors de la demande de messages. La valeur par défaut est de 30 secondes. Pour plus d'informations, voir Scrutation longue.
temporisation de visibilité
Durée pendant laquelle un message reçu de la file d'attente par un consommateur n'est pas visible pour les autres consommateurs. La temporisation de visibilité est configurable à des valeurs de 1 seconde à 12 heures au niveau de la file d'attente et les consommateurs peuvent définir la valeur lors de la demande de messages. La valeur par défaut est de 30 secondes. Pour plus d'informations, voir Verrouillage de message.
messages visibles
Nombre de messages actuellement en file d'attente disponibles pour consommation.
messages en cours
Nombre de messages transmis à un consommateur, mais pas encore supprimés. Les messages en cours ne sont pas disponibles pour une nouvelle transmission tant que leur temporisation de visibilité n'a pas expiré.
file d'attente des messages non distribués
Si un message n'est pas consommé et qu'il présente plus de tentatives de transmission que le nombre maximal configuré, il est transféré dans une file d'attente des messages non distribués. Pour plus d'informations, voir Files d'attente des messages non distribués.

Garanties

Le service de file d'attente offre les garanties suivantes :

  • La durabilité d'un message publié est garantie jusqu'à ce qu'il soit supprimé ou que sa période de conservation soit écoulée. La publication d'un message est considérée comme réussie lorsque le service de file d'attente renvoie un accusé de réception au producteur. Il importe peu que la réponse ait été reçue.
  • Un message dans la temporisation de visibilité est garanti de ne pas être transmis à un autre consommateur jusqu'à ce que cette temporisation expire.
  • Un message ne sera pas supprimé par le service de file d'attente avant la fin de sa période de conservation. Un consommateur peut traiter et supprimer un message pendant sa période de conservation.

Authentification et autorisation

Chaque service d'Oracle Cloud Infrastructure est intégré avec le service GIA aux fins d'authentification et d'autorisation, pour toutes les interfaces (console, trousse SDK ou interface de ligne de commande et API REST).

Un administrateur de votre organisation doit configurer des groupes, des compartiments  et des politiques  qui déterminent quels utilisateurs peuvent accéder à quels services et ressources, ainsi que le type d'accès dont ils disposent. Par exemple, les politiques contrôlent les autorisations de création d'utilisateurs, de groupes et de compartiments, ou de création et de gestion des déploiements virtuels.

Méthodes d'accès au service de file d'attente

Vous pouvez accéder au service de file d'attente à l'aide de la console (interface basée sur un navigateur), de l'interface de ligne de commande Oracle Cloud Infrastructure ou des API REST.

Les instructions relatives aux trois méthodes sont incluses dans ce guide.

Limites de service

Lorsque vous vous abonnez à Oracle Cloud Infrastructure, un jeu de limites de service est configuré pour votre location. La limite de service correspond au quota défini pour une ressource. Vérifiez les limites de service suivantes pour les ressources de file d'attente.

Ressource Détails
Files d'attente 10 par location par région

Voir Limites de service pour en savoir plus sur les limites de service et trouver des instructions pour demander l'augmentation d'une limite. Pour définir des limites propres à un compartiment pour une ressource ou une famille de ressources, les administrateurs peuvent utiliser des quotas de compartiment.

Limites fonctionnelles

En plus des limites de ressources de service, des limites de file d'attente spécifiques existent pour les fonctions et les fonctionnalités.

Limite Détails
Canaux par file d'attente 256 par file d'attente
Taille maximale de la demande PutMessage 512 Ko et 20 messages
Taille maximale de la réponse GetMessage 2 Mo et 20 messages
Taille maximale de message 256 KO
Nombre maximal de messages en cours 100 000 par file d'attente
Nombre maximal de messages par file d'attente Sans limite
Conservation des messages Maximum : 7 jours

Minimum : 10 secondes

Par défaut : 1 jour

Temporisation de visibilité du message Maximum : 12 heures

Minimum : 0 seconde au niveau du message

Minimum : 1 seconde au niveau de la file d'attente

Par défaut : 30 secondes

Nombre maximal de demandes GET concurrentes 1 000 demandes par seconde par file d'attente
Nombre maximal d'opérations de message 1 000 demandes par seconde par API par file d'attente
Débit de données maximal Trafic entrant par file d'attente : 10 Mo/s

Trafic sortant par file d'attente : 10 Mo/s

Temporisation de scrutation Maximum : 30 secondes

Minimum : 0 secondes

Débit STOMP 10 Mo/s par connexion STOMP
Stockage 20 Go par location

2 Go par file d'attente