Estensione Pub/Sub Google Cloud

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Versione: 1.5.1

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

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

Prerequisiti

Prima di utilizzare l'estensione da un proxy API utilizzando il criterio ExtensionCallout, devi:

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

  2. Una volta creato l'argomento, concedi l'autorizzazione per pubblicare nell'argomento Cloud Pub/Sub. Ad esempio, puoi utilizzare il ruolo roles/pubsub.publisher per pubblicare argomenti. Per saperne di più sui ruoli Cloud Pub/Sub, consulta Controllo dell'accesso.

  3. Utilizza la console GCP per generare una chiave per il service account.

  4. Utilizza i contenuti del file JSON della chiave risultante quando aggiungi e configuri l'estensione utilizzando il riferimento alla configurazione.

Informazioni su Cloud Pub/Sub

Cloud Pub/Sub fornisce messaggistica asincrona many-to-many che disaccoppia mittenti e destinatari. Cloud Pub/Sub offre una messaggistica duratura a bassa latenza che aiuta gli sviluppatori a integrare rapidamente i sistemi ospitati su Google Cloud Platform e quelli esterni.

Se hai appena iniziato a utilizzare Cloud Pub/Sub, consulta le guide rapide nella documentazione di Cloud Pub/Sub.

Esempi

Gli esempi seguenti illustrano come configurare il supporto per le azioni di estensione Cloud Pub/Sub utilizzando il ExtensionCallout policy.

SMS

In questo esempio, l'azione publish pubblica un messaggio come semplice stringa 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 Assign Message utilizza il valore della variabile che memorizza la risposta dell'estensione per assegnare il payload della risposta. L'ID messaggio è memorizzato 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 di risposta vengono restituiti in formato JSON:

{"messageId":"165918654986954"}

Pertanto, il valore di topic.message.messageId è 165918654986954.

Messaggio JSON

In questo esempio, l'azione publish pubblica un messaggio in formato 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 Assign Message utilizza il valore della variabile che memorizza la risposta dell'estensione per assegnare il payload della risposta. L'ID messaggio è memorizzato 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 di risposta vengono restituiti in formato JSON:

{"messageId":"165918654986954"}

Pertanto, il valore di topic.message.messageId è 165918654986954.

Azioni

pubblica

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 di richiesta

Parametro Descrizione Tipo Predefinito Obbligatorio
messaggio Il messaggio da pubblicare. Puoi utilizzare una semplice stringa o strutturare il messaggio con JSON di tua progettazione. 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 alla configurazione

Utilizza quanto segue quando configuri ed esegui il deployment di questa estensione per l'utilizzo nei proxy API.

Proprietà comuni delle estensioni

The following properties are present for every extension.

Property Description Default Required
name Name you're giving this configuration of the extension. None Yes
packageName Name of the extension package as given by Apigee Edge. None Yes
version Version number for the extension package from which you're configuring an extension. None Yes
configuration Configuration value specific to the extension you're adding. See Properties for this extension package None Yes

Proprietà di questo pacchetto di estensioni

Proprietà Descrizione Predefinito Obbligatorio
topic L'argomento in cui pubblicare. Ottieni questo valore dal servizio Pub/Sub, ad esempio dalla console GCP per il servizio. Ad esempio, il nome dell'argomento potrebbe avere il formato projects/GCP-PROJECT-ID/topics/TOPIC-NAME Nessuno. Sì.
credentials Se inserito nella console Apigee Edge, questo è il contenuto del file della chiave dell'account di servizio. Se inviato tramite l'API Management, è un valore codificato in base64 generato dal file delle chiavi del service account. Nessuno. Sì.