Scenario: invio di messaggi di coda a una funzione

Integra coda con funzioni mediante hub connettore.

Questo scenario prevede la creazione di una funzione e quindi il riferimento a tale funzione come destinazione in un connettore (Connector Hub) per ricevere ed elaborare i messaggi dalle code.

Invio di messaggi di coda a una funzione.

Il payload ricevuto dalla funzione contiene solo messaggi dalla coda.

Per un'esercitazione correlata, vedere Usa OCI Functions e OCI Queue per autorizzare le funzionalità utente senza esporre il privilegio di amministratore agli approvatori.

Per informazioni sulla risoluzione dei problemi, vedere Risoluzione dei problemi relativi ai connettori.

Criterio IAM necessario

Se si è membri del gruppo Administrators, si dispone già dell'accesso necessario per eseguire questo scenario. In caso contrario, è necessario accedere a Funzioni.

Il workflow per la creazione del connettore include un criterio predefinito quando necessario per fornire l'autorizzazione per la scrittura nel servizio di destinazione. Per informazioni nuove sui criteri, vedere Panoramica dei criteri IAM.

Gestione degli errori durante l'elaborazione delle code

Nota

Nel contesto dei messaggi di coda inviati alle funzioni, gli errori parziali durante l'elaborazione dei messaggi all'interno di un batch non sono supportati.

Quando una funzione che sta elaborando un batch di messaggi da una coda rileva un errore, tutti i messaggi in tale batch diventano nuovamente visibili nella coda, inclusi i messaggi elaborati correttamente dalla funzione. Pertanto, un messaggio potrebbe essere elaborato dalla funzione più volte. Come con qualsiasi destinazione, il connettore continua a riprovare a tempo indeterminato fino a quando la destinazione della funzione non riesce. Per ulteriori informazioni, vedere Dettagli di consegna.

Se si verifica un errore durante l'elaborazione di un batch di messaggi, il conteggio delle consegne per tali messaggi viene comunque aumentato. Se il conteggio di consegna di un messaggio raggiunge il massimo definito a livello di coda, il messaggio viene inviato alla coda di messaggi non recapitabili. Per ulteriori informazioni, vedere Conteggio consegne.

Per evitare la rielaborazione dei messaggi, rendi la tua funzione ideale.

    1. Nella pagina di elenco Connettori, selezionare Crea connettore. Per informazioni su come trovare la pagina dell'elenco, vedere Elenco dei connettori.
    2. Nella pagina Crea connettore, immettere un nome riconoscibile dall'utente per il nuovo connettore e una descrizione facoltativa. Evitare di inserire informazioni riservate.
    3. Selezionare il compartimento in cui memorizzare il nuovo connettore.
    4. In Configura connettore, in Origine, selezionare Coda.
    5. Per Target, selezionare Funzioni.
    6. In Configura connessione di origine, selezionare la coda contenente i messaggi desiderati:
      • Compartimento: selezionare il compartimento contenente la coda desiderata.
      • Coda: selezionare la coda che contiene i messaggi che si desidera.
        Nota

        Per selezionare una coda per un connettore, è necessario disporre dell'autorizzazione per leggere la coda. Vedere Policy IAM (Securing Connector Hub).
      • Filtro canale (in Filtro messaggi) (facoltativo): per filtrare i messaggi dai canali nella coda, immettere un valore.

        Ad esempio, per filtrare i messaggi in base all'ID canale, immettere l'ID canale.

        Per i valori supportati, vedere channelFilter all'indirizzo GetMessages (API coda).

      Nota

      Un messaggio trasferito alla destinazione del connettore viene considerato "consumato". Per soddisfare i requisiti del servizio Coda, il connettore elimina i messaggi trasferiti dalla coda di origine. Per ulteriori informazioni, vedere Utilizzo dei messaggi.
    7. In Configura destinazione, configurare la funzione in cui inviare i messaggi dalla coda.
      • Compartimento: selezionare il compartimento contenente la funzione desiderata.
      • Applicazione funzione: selezionare il nome dell'applicazione funzione che contiene la funzione desiderata.
      • Funzione: selezionare il nome della funzione a cui si desidera inviare i dati.
      • Mostra opzioni aggiuntive: selezionare questo collegamento e specificare i limiti per ogni batch di dati inviato alla funzione. Per utilizzare le impostazioni manuali, fornire i valori per il limite di dimensione batch (KB o numero di messaggi) e il limite di tempo batch (secondi).

        Ad esempio, limitare la dimensione del batch selezionando 5.000 kilobyte o 10 messaggi. Un limite di tempo batch di esempio è di 5 secondi.

      Considerazioni:

      • Il connettore svuota i dati di origine come lista JSON in batch. La dimensione massima del batch, o payload, è di 6 MB.
      • Le funzioni vengono richiamate in modo sincrono con 6 MB di dati per richiamo. Se i dati superano i 6 MB, il connettore richiama di nuovo la funzione per spostare i dati oltre il limite. Tali richiami vengono gestiti in sequenza.
      • Le funzioni possono essere eseguite per un massimo di cinque minuti. Vedere Dettagli consegna.
      • Non restituire i dati dalle destinazioni Funzioni ai connettori. L'hub connettore non legge i dati restituiti dalle destinazioni delle funzioni. Se la funzione restituisce correttamente senza errori, il connettore considera i messaggi nel batch come "consumati" ed elimina tali messaggi dalla coda.
    8. Accettare i criteri predefiniti: selezionare il collegamento Crea fornito per ogni criterio predefinito.
    9. Selezionare Crea.
    Il processo di creazione inizia e ne viene visualizzato l'avanzamento. Al termine, viene visualizzata la pagina dei dettagli del connettore.
    1. Definire l'origine della coda per il connettore: salvare un file denominato source.json.

      Contenuto file JSON di esempio per l'origine coda:

      {
          "kind": "plugin",
          "pluginName": "QueueSource",
          "configMap": {
              "queueId": "<queue_OCID>"
          }
      }
    2. Definire la destinazione delle funzioni per il connettore: salvare un file denominato target.json.

      Contenuto del file JSON di esempio per la destinazione Funzioni:

      {
          "kind": "functions",
          "functionId": "<function_OCID>",
          "batchSizeInKbs": "5000",
          "batchSizeInNum": "10",
          "batchTimeInSec": "60"
        }
    3. Creare il connettore utilizzando il comando oci sch service-connector create.

      Esempio di comando, con righe aggiunte per la possibilità di scansione:

      oci sch service-connector create
        --compartment-id <compartment_OCID>
        --display-name "Queues to Functions"
        --source file://source.json
        --target file://target.json
  • Eseguire l'operazione CreateServiceConnector per creare il connettore.

    Richiesta di esempio:

    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"
      }
    }

Confermare che il nuovo connettore sposta i dati

Dopo aver creato il connettore, confermarne lo spostamento.

  • Abilita log per il connettore per ottenere i dettagli sul flusso di dati.
  • Controllare i risultati previsti nel servizio di destinazione.

La conferma dello spostamento dei dati consente di evitare la disattivazione automatica, che si verifica quando un connettore si guasta per un lungo periodo di tempo.