Scénario : Envoi de messages de file d'attente à une fonction
Intégrer la file d'attente avec Functions à l'aide de Connector Hub.
Ce scénario implique la création d'une fonction, puis le référencement de cette fonction en tant que cible dans un connecteur (Hub de connecteurs) pour recevoir et traiter les messages provenant de files d'attente.
La charge utile reçue par la fonction contient uniquement les messages de la file d'attente.
Pour consulter un tutoriel connexe, reportez-vous à Utilisation d'OCI Functions et d'OCI Queue pour autoriser les fonctionnalités utilisateur sans exposer de privilège d'administration aux approbateurs.
Pour plus d'informations sur le dépannage, reportez-vous à la section Dépannage des connecteurs.
Stratégie IAM requise
Si vous êtes membre du groupe d'administrateurs, vous disposez déjà de l'accès requis pour exécuter ce scénario. Sinon, vous devez avoir accès à Functions .
Le workflow de création du connecteur inclut une stratégie par défaut lorsque nécessaire afin de fournir des droits d'accès en écriture au service cible. Si vous ne connaissez pas les stratégies, reportez-vous à Présentation des stratégies IAM.
Traitement des erreurs lors du traitement des files d'attente
Dans le contexte des messages de file d'attente envoyés aux fonctions, les échecs partiels lors du traitement des messages dans un batch ne sont pas pris en charge.
Lorsqu'une fonction qui traite un lot de messages d'une file d'attente rencontre une erreur, tous les messages de ce lot sont de nouveau visibles dans la file d'attente, y compris les messages que la fonction a traités avec succès. Par conséquent, un message peut être traité par la fonction plusieurs fois. Comme pour toute cible, le connecteur continue de réessayer indéfiniment jusqu'à ce que la cible de la fonction réussisse. Pour plus d'informations, reportez-vous à Détails de livraison.
En cas d'échec lors du traitement d'un lot de messages, le nombre de messages distribués pour ces messages est toujours augmenté. Si le nombre de livraisons d'un message atteint le maximum défini au niveau de la file d'attente, le message est envoyé à la file d'attente des lettres mortes. Pour plus d'informations, reportez-vous à Nombre de distributions.
Pour empêcher le retraitement des messages, rendez votre fonction idempotente.
Configurer la file d'attente et la fonction
Avant de pouvoir créer le connecteur (Hub de connecteurs) , vous devez configurer une file d'attente et une fonction pour recevoir les données de la file d'attente.
Pour obtenir des instructions sur les files d'attente, reportez-vous à la rubrique Création d'une file d'attente.
Pour obtenir des instructions sur la fonction, reportez-vous aux sections suivantes :
Le processus de création commence et sa progression s'affiche. Une fois l'opération terminée, la page de détails du connecteur s'ouvre. Exécutez l'opération CreateServiceConnector pour créer le connecteur.
Exemple de demande :
POST /20200909/serviceConnectors Host: service-connector-hub.us-phoenix-1.oraclecloud.com <authorization and other headers> { "displayName": "My Queue to Function Connector", "compartmentId": "<compartment_OCID>", "description": "My connector description", "source": { "kind": "plugin", "pluginName": "QueueSource", "configMap": { "queueId": "<queue_OCID>" } }, "target": { "kind": "functions", "functionId": "<function_OCID>", "batchSizeInKbs": "5000", "batchSizeInNum": "10", "batchTimeInSec": "60" } }
Vérification et dépannage des appels
Pour vérifier et dépanner les appels sur le service Functions, reportez-vous à Stockage et affichage des journaux de fonction.
Vérifier que le nouveau connecteur déplace les données
Après avoir créé le connecteur, vérifiez qu'il déplace les données.
- Activez les journaux pour que le connecteur obtienne des détails sur le flux de données.
- Recherchez les résultats attendus au niveau du service cible.
La confirmation du déplacement des données vous permet d'éviter la désactivation automatique, qui se produit lorsqu'un connecteur tombe en panne pendant une longue période.