Estensione Pub/Sub Google Cloud

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Versione: 1.5.1

Pubblicare messaggi in un argomento nel servizio Google Cloud Pub/Sub.

Questi contenuti forniscono riferimento per la configurazione e l'utilizzo di questa estensione.

Prerequisiti

Prima di utilizzare l'estensione da un proxy API con le norme relative ai callout estensione, devi:

  1. Crea un argomento Cloud Pub/Sub, come descritto in Guida rapida all'utilizzo della console.

  2. Una volta ottenuto l'argomento, concedi l'autorizzazione a pubblicare nell'argomento Cloud Pub/Sub. Ad esempio, puoi utilizzare il ruolo roles/pubsub.publisher per pubblicare in argomenti. Per ulteriori informazioni sui ruoli di Cloud Pub/Sub, consulta Controllo degli accessi.

  3. Utilizza la console di Google Cloud per generare una chiave per l'account di servizio.

  4. Utilizza i contenuti del file JSON della chiave risultante durante l'aggiunta e la configurazione dell'estensione utilizzando il riferimento di configurazione.

Informazioni su Cloud Pub/Sub

Cloud Pub/Sub fornisce messaggistica asincrona many-to-many che disaccoppia mittenti e destinatari. Cloud Pub/Sub offre messaggistica a bassa latenza e durevole che consente agli sviluppatori di integrare rapidamente i sistemi ospitati sulla piattaforma Google Cloud ed esternamente.

Se hai appena iniziato a utilizzare Cloud Pub/Sub, dai un'occhiata alle guide rapide nella documentazione di Cloud Pub/Sub.

Samples

I seguenti esempi illustrano come configurare il supporto per le azioni dell'estensione Cloud Pub/Sub utilizzando i criteri ExtensionCallout.

SMS

In questo esempio, l'azione publish pubblica un messaggio come stringa semplice in un argomento specificato nella configurazione dell'estensione. L'azione publish restituisce l'ID del messaggio pubblicato nell'argomento in cui è stato pubblicato e lo scrive nella variabile specificata dal tag <Output>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : "My test message."
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

Il seguente criterio Assegna messaggio utilizza il valore della variabile che memorizza la risposta dell'estensione per assegnare il payload della risposta. L'ID messaggio è archiviato nella proprietà messageId della variabile di output:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

I dati della risposta vengono restituiti come JSON:

{"messageId":"165918654986954"}

Di conseguenza, il valore di topic.message.messageId è 165918654986954.

Messaggio JSON

In questo esempio, l'azione publish pubblica un messaggio come JSON in un argomento specificato nella configurazione dell'estensione. L'azione publish restituisce l'ID del messaggio pubblicato nell'argomento in cui è stato pubblicato e lo scrive nella variabile specificata dal tag <Output>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : { "info" : "My test message" }
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

Il seguente criterio Assegna messaggio utilizza il valore della variabile che memorizza la risposta dell'estensione per assegnare il payload della risposta. L'ID messaggio è archiviato nella proprietà messageId della variabile di output:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

I dati della risposta vengono restituiti come JSON:

{"messageId":"165918654986954"}

Di conseguenza, il valore di topic.message.messageId è 165918654986954.

Azioni

publish

Pubblica un messaggio nell'argomento specificato nella configurazione di questa estensione.

Sintassi

<Action>publish</Action>
<Input><![CDATA[{
  "message" : "message-to-publish" | JSON-structured-data,
  "customAttributes": JSON-array
}]]></Input>

Esempio di stringa

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : "My test message."
  }
]]></Input>

Esempio di dati strutturati JSON

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" }
  }
]]></Input>

Esempio di attributi personalizzati

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" },
      "customAttributes": {"attr1": "foo", "attr2": "bar"}
  }
]]></Input>

Parametri richiesta

Parametro Descrizione Tipo Predefinito Obbligatorie
messaggio Il messaggio da pubblicare. Puoi utilizzare una semplice stringa o strutturare il messaggio con un file JSON personalizzato. Stringa o JSON Nessuno
customAttributes

Attributi personalizzati da aggiungere al messaggio nel modulo:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
Array JSON Nessuno No

Risposta

JSON contenente l'ID del messaggio pubblicato nell'argomento. Ad esempio:

{"messageId":"165918654986954"}

Riferimento per la configurazione

Utilizza quanto segue durante la configurazione e il deployment di questa estensione per l'utilizzo nei proxy API.

Proprietà delle estensioni comuni

Per ogni estensione sono presenti le seguenti proprietà.

Proprietà Descrizione Predefinito Obbligatorio
name Il nome che assegni a questa configurazione dell'estensione. Nessuno
packageName Nome del pacchetto dell'estensione fornito da Apigee Edge. Nessuno
version Numero di versione del pacchetto dell'estensione da cui stai configurando un'estensione. Nessuno
configuration Valore di configurazione specifico per l'estensione che stai aggiungendo. Vedi Proprietà per questo pacchetto di estensioni Nessuno

Proprietà per questo pacchetto di estensioni

Proprietà Descrizione Predefinito Obbligatorie
topic L'argomento in cui pubblicare. Recupera questo valore dal servizio Pub/Sub, ad esempio dalla console di Google Cloud. Ad esempio, il nome dell'argomento potrebbe avere il formato projects/GCP-PROJECT-ID/topics/TOPIC-NAME Nessuna. Sì.
credentials Una volta inseriti nella console Apigee Edge, questi saranno i contenuti del file della chiave dell'account di servizio. Quando viene inviato tramite l'API di gestione, si tratta di un valore con codifica Base64 generato dal file della chiave dell'account di servizio. Nessuna. Sì.