Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Versão: 1.5.1
Publicar mensagens em um tópico no serviço do Google Cloud Pub/Sub.
Este conteúdo fornece referência para configurar e usar essa extensão.
Pré-requisitos
Antes de usar a extensão de um proxy de API com a política Extension callout, você precisa:
Crie um tópico do Cloud Pub/Sub, conforme descrito em Guia de início rápido: como usar o console.
Assim que tiver o tópico, conceda permissão para publicar no tópico do Cloud Pub/Sub. Por exemplo, é possível usar o papel
roles/pubsub.publisher
para publicar em tópicos. Para saber mais sobre os papéis do Cloud Pub/Sub, consulte Controle de acesso.Use o Console do GCP para gerar uma chave para a conta de serviço.
Use o conteúdo do arquivo JSON da chave resultante ao adicionar e configurar a extensão usando a referência de configuração.
Sobre o Cloud Pub/Sub
O Cloud Pub/Sub fornece mensagens assíncronas de muitos para muitos que separam remetentes e destinatários. O Cloud Pub/Sub entrega mensagens duráveis de baixa latência que ajudam os desenvolvedores a integrar rapidamente os sistemas hospedados no Google Cloud Platform e externamente.
Se você está começando a usar o Cloud Pub/Sub, confira os guias de início rápido na documentação do Cloud Pub/Sub.
Amostras
Os exemplos a seguir ilustram como configurar o suporte para ações de extensão do Cloud Pub/Sub usando a política Extension callout.
Mensagem de texto
Neste exemplo, a ação publish
publica uma mensagem como uma string simples em um tópico especificado na configuração da extensão. A ação publish
retorna o ID da mensagem publicada no tópico em que ela foi publicada e o grava na variável especificada pela 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>
A política Atribuir mensagem a seguir usa o valor da variável que armazena a resposta da extensão para atribuir o payload da resposta. O ID da mensagem é armazenado na propriedade messageId
da variável de saída:
<?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>
Os dados de resposta são retornados como JSON:
{"messageId":"165918654986954"}
Portanto, o valor de topic.message.messageId
é 165918654986954.
Mensagem JSON
Neste exemplo, a ação publish
publica uma mensagem como JSON em um tópico especificado na configuração da extensão. A ação publish
retorna o ID da mensagem publicada no tópico em que ela foi publicada e o grava na variável especificada pela 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>
A política Atribuir mensagem a seguir usa o valor da variável que armazena a resposta da extensão para atribuir o payload da resposta. O ID da mensagem é armazenado na propriedade messageId
da variável de saída:
<?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>
Os dados de resposta são retornados como JSON:
{"messageId":"165918654986954"}
Portanto, o valor de topic.message.messageId
é 165918654986954.
Ações
publicar
Publica uma mensagem no tópico especificado na configuração dessa extensão.
Sintaxe
<Action>publish</Action>
<Input><![CDATA[{
"message" : "message-to-publish" | JSON-structured-data,
"customAttributes": JSON-array
}]]></Input>
Exemplo de string
<Action>publish</Action>
<Input><![CDATA[
{
"message" : "My test message."
}
]]></Input>
Exemplo de dados estruturados JSON
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" }
}
]]></Input>
Exemplo de atributos personalizados
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" },
"customAttributes": {"attr1": "foo", "attr2": "bar"}
}
]]></Input>
Parâmetros de solicitação
Parâmetro | Descrição | Tipo | Padrão | Obrigatório |
---|---|---|---|---|
mensagem | A mensagem a ser publicada. Você pode usar uma string simples ou estruturar sua mensagem com JSON do seu próprio design. | String ou JSON | Nenhum | Sim |
customAttributes | Atributos personalizados a serem adicionados à mensagem no formulário: "customAttributes": {"attr1": "foo", "attr2": "bar"} . |
Matriz JSON | Nenhum | Não |
Resposta
JSON contendo o ID da mensagem conforme publicada no tópico. Exemplo:
{"messageId":"165918654986954"}
Referência de configuração
Use o seguinte ao configurar e implantar esta extensão para uso em proxies de API.
Propriedades de extensão comuns
As propriedades a seguir estão presentes para cada extensão.
Propriedade | Descrição | Padrão | Obrigatório |
---|---|---|---|
name |
Nome que será dado a esta configuração da extensão. | Nenhum | Sim |
packageName |
Nome do pacote de extensão fornecido pelo Apigee Edge. | Nenhum | Sim |
version |
Número da versão do pacote de extensão a partir do qual você está configurando uma extensão. | Nenhum | Sim |
configuration |
Valor de configuração específico da extensão que você está adicionando. Consulte Propriedades para este pacote de extensão. | Nenhum | Sim |
Propriedades deste pacote de extensões
Propriedade | Descrição | Padrão | Obrigatório |
---|---|---|---|
topic |
O tópico a ser publicado. Encontre esse valor no serviço do Pub/Sub, como no console do GCP para o serviço. Por exemplo, o nome do tópico pode estar no formato projects/GCP-PROJECT-ID/topics/TOPIC-NAME |
Nenhum. | Sim. |
credentials |
Quando inserido no console do Apigee Edge, este é o conteúdo do arquivo de chave da conta de serviço. Quando enviado pela API de gerenciamento, é um valor codificado em base64 gerado a partir do arquivo de chave da conta de serviço. | Nenhum. | Sim. |