Você está lendo a documentação do Apigee Edge.
Acesse a documentação da
Apigee X. info
Versão: 1.5.2
Publicar mensagens em um tópico no serviço Google Cloud Pub/Sub.
Este conteúdo fornece uma 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 ExtensionCallout, você precisa:
Crie um tópico do Cloud Pub/Sub, conforme descrito no Guia de início rápido: como usar o console.
Depois de criar o tópico, conceda permissão para publicar nele. Por exemplo, é possível usar o papel
roles/pubsub.publisherpara 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 dissociam 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 ExtensionCallout.
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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=&quo>t;tru<e" ena>bled="true<" name=>"<;Publish->Message"
DisplayNamePu<blish Mess>age/D<isplay>Name
< Connectorc<loud-><pub-sub-extension-example/Connector
Actionpublish/Action
Input![><CDATA[>
< {
> "<;messag>e<" : "My> test message."
}
]]/Input
Outputtopic.message/Output
/ConnectorCallout
A seguinte política Atribuir mensagem 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&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="fals>e&quo<t; enabled=>"true" nam<e="Get->Topic<-Message-ID"
DisplayNameGet Topic >Messa<ge >ID/Displa<yName
AssignTo type="response>" createNew="fa<lse">;/
< >span>Set<
Paylo>ad 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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=&quo>t;tru<e" ena>bled="true<" name=>"<;Publish->Message"
DisplayNamePu<blish Mess>age/D<isplay>Name
< Connectorc<loud-><pub-sub-extension-example/Connector
Actionpublish/Action
Input![CDATA[
>< {
> < "message&quo<t; : { >&<quot;info" :> "My test message" }
}
]]/Input
Outputtopic.message/Output
/ConnectorCallout
A seguinte política Atribuir mensagem 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&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError="fals>e&quo<t; enabled=>"true" nam<e="Get->Topic<-Message-ID"
DisplayNameGet Topic >Messa<ge >ID/Displa<yName
AssignTo type="response>" createNew="fa<lse">;/
< >span>Set<
Paylo>ad 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 desta extensão.
Sintaxe
<Action>publish</Action>
<Input><![CDATA[{
"message" : "message-to-publish" | JSON-structured-data,
"customAt><tribut>es": JSON-array
}]]/Input
Exemplo de string
<Action>publish</Action>
<Input><![CDATA[
{
"message" : "My test m><essage>."
}
]]/Input
Exemplo de dados estruturados JSON
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "><My tes>t message" }
}
]]/Input
Exemplo de atributos personalizados
<Action>publish</Action>
<Input><![CDATA[
{
"message" : { "info" : "My test message" },
"customAttributes":>< {&quo>t;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 que contém o ID da mensagem publicada no tópico. Exemplo:
{"messageId":"165918654986954"}
Referência de configuração
Use o seguinte ao configurar e implantar essa extensão para uso em proxies de API.
Propriedades comuns de extensão
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ão
| Propriedade | Descrição | Padrão | Obrigatório |
|---|---|---|---|
topic |
O tópico em que será feita a publicação. Receba esse valor do serviço do Pub/Sub, como o console do GCP. Por exemplo, o nome do tópico pode ter a forma projects/GCP-PROJECT-ID/topics/TOPIC-NAME |
Nenhum. | Sim. |
credentials |
Quando inserido no console do Apigee Edge, esse é o conteúdo do seu arquivo de chave da conta de serviço. Quando enviado pela API Management, é um valor codificado em base64 gerado do arquivo de chave da conta de serviço. | Nenhum. | Sim. |