Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da
Apigee Edge.
Visão geral
A política PublishMessage permite publicar suas informações de fluxo de proxy de API em um tópico do Google Cloud Pub/Sub. O Pub/Sub do Google permite que os serviços se comuniquem de forma assíncrona, com uma latência significativamente menor. Para saber mais, consulte O que é o Pub/Sub? As informações que você quer publicar em um tópico do Pub/Sub podem ser um texto literal ou uma variável de fluxo. Também é possível especificar uma combinação de variáveis literais de texto e fluxo usando um modelo de mensagem.
Se a solicitação de publicação for bem-sucedida, a Apigee definirá a variável de fluxo
publishmessage.message.id
para o valor retornado pelo servidor do Pub/Sub. Para mais informações, consulte
Variáveis de fluxo.
Esta é uma política padrão e pode ser implantada em qualquer tipo de ambiente. Para informações sobre os tipos de políticas e a disponibilidade de cada tipo de ambiente, consulte Tipos de políticas.
Autenticação e implantação de proxy
Para executar a política PublishMessage, você precisa de um token de autenticação. No entanto, não há um elemento
<Authentication> explícito na definição da política. Você precisa implantar seu proxy de API para usar a autenticação do Google, que
adiciona o token de autenticação à solicitação internamente. Para informações sobre como implantar um proxy de API que usa a autenticação do Google, consulte
Etapas de implantação.
Além de usar a autenticação do Google no proxy de API, é preciso
implantar o proxy de API com uma conta de serviço que tenha um papel
com a permissão pubsub.topics.publish
. Para mais informações sobre os papéis de gerenciamento de identidade e acesso (IAM) para o Pub/Sub,
consulte Permissões e papéis.
<PublishMessage>
Especifica a política PublishMessage.
Valor padrão | N/A |
Obrigatório? | Obrigatório |
Tipo | Tipo complexo |
Elemento pai | N/A |
Elemento filho |
<CloudPubSub> <DisplayName> <Source> |
A tabela a seguir fornece uma descrição de alto nível dos elementos-filhos de <PublishMessage>
:
Elemento filho | Obrigatório? | Descrição |
---|---|---|
<CloudPubSub> |
Obrigatório | Elemento-pai de <Topic> . O elemento <Topic> especifica
o tópico do Pub/Sub em que você quer publicar a mensagem. |
<DisplayName> |
Opcional | Um nome personalizado para a política. |
<IgnoreUnresolvedVariables> |
Opcional | Especifica se o processamento será interrompido se a Apigee encontrar uma variável não resolvida. |
<Source> |
Obrigatório | Especifica a mensagem a ser publicada. |
Outros elementos filhos | ||
<Topic> |
Obrigatório | Especifica o tópico do Pub/Sub em que você quer publicar a mensagem. |
O elemento <PublishMessage>
usa a seguinte sintaxe:
Sintaxe
<?xml version="1.0" encoding="UTF-8"?><PublishMessage continueOnError="[true|false]" enabled="[true|false]" name="Publish-Message-1"> <DisplayName>DISPLAY_NAME</DisplayName> <Source>SOURCE_VALUE</Source> <CloudPubSub> <Topic>TOPIC_NAME</Topic> </CloudPubSub> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </PublishMessage>
Exemplo
O exemplo a seguir mostra a definição da política <PublishMessage>
:
<?xml version="1.0" encoding="UTF-8"?><PublishMessage continueOnError="false" enabled="true" name="Publish-Message-1"> <DisplayName>Publish Message-1</DisplayName> <Source>{flow-variable-1}</Source> <CloudPubSub> <Topic>projects/{flow-variable-project-id}/topics/{flow-variable-topic-name}</Topic> </CloudPubSub> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </PublishMessage>
Este elemento tem os seguintes atributos comuns a todas as políticas:
Atributo | Predefinição | Obrigatório? | Descrição |
---|---|---|---|
name |
N/A | Obrigatório |
O nome interno da política. O valor do atributo Opcionalmente, use o elemento |
continueOnError |
falso | Opcional | Definido como false para devolver um erro quando uma política falha. Este comportamento é o esperado para a maioria das políticas. Definido como true para que a execução do fluxo continue mesmo depois de uma política falhar. Veja também:
|
enabled |
verdadeiro | Opcional | Defina como true para aplicar a política. Defina como false para desativar a política. A política não é aplicada, mesmo que permaneça anexada a um fluxo. |
async |
falso | Descontinuado | Este atributo foi descontinuado. |
Referência a elementos filhos
Esta seção descreve os elementos filhos de<PublishMessage>
.
<DisplayName>
Use em conjunto com o atributo name
para etiquetar a política no editor de proxy da IU de gestão com um nome diferente e mais natural.
O elemento <DisplayName>
é comum a todas as políticas.
Valor predefinido | N/A |
Obrigatório? | Opcional. Se omitir <DisplayName> , é usado o valor do atributo name da política. |
Tipo | String |
Elemento principal | <PolicyElement> |
Elementos subordinados | Nenhum |
O elemento <DisplayName>
usa a seguinte sintaxe:
Sintaxe
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
Exemplo
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
O elemento <DisplayName>
não tem atributos nem elementos subordinados.
<Source>
Especifica a mensagem a ser publicada.
A mensagem pode ser um texto literal, uma variável de fluxo ou uma combinação de ambos na forma de um modelo de mensagem.
Valor padrão | N/A |
Obrigatório? | Obrigatório |
Tipo | String |
Elemento pai |
<PublishMessage> |
Elemento filho | Nenhum |
O elemento <Source>
usa a seguinte sintaxe:
Sintaxe
<Source>SOURCE</Source>
Example-1
O exemplo a seguir define a mensagem de origem para o valor da variável de fluxo flow-var-1
:
<Source>{flow-var-1}</Source>
Example-2
O exemplo a seguir define a mensagem de origem como source-message-text-01
:
<Source>source-message-text-01</Source>
<CloudPubSub>
Elemento-pai de <Topic>
.
Só é possível publicar em um tópico do Pub/Sub. Portanto, só é possível ter um elemento <Topic>
no
elemento <CloudPubSub>
.
Valor padrão | N/A |
Obrigatório? | Obrigatório |
Tipo | Tipo complexo |
Elemento pai |
<PublishMessage> |
Elemento filho |
<Topic> |
O elemento <CloudPubSub>
usa a seguinte sintaxe:
Sintaxe
<CloudPubSub> <Topic>TOPIC_NAME</Topic> </CloudPubSub>
Exemplo
O exemplo a seguir mostra os atributos do elemento <CloudPubSub>
:
<CloudPubSub> <Topic>projects/{request.header.project}/topics/{request.header.topic}</Topic> </CloudPubSub>
<Topic>
Especifica o tópico do Pub/Sub em que você quer publicar a mensagem <Source>
.
Especifique o nome do tópico no formato projects/project-id/topics/topic-name
.
Valor padrão | N/A |
Obrigatório? | Obrigatório |
Tipo | Tipo complexo |
Elemento pai |
<CloudPubSub> |
Elemento filho | Nenhum |
O elemento <Topic>
usa a seguinte sintaxe:
Sintaxe
<Topic>TOPIC_NAME</Topic>
Exemplo
O exemplo a seguir especifica o tópico do Pub/Sub a ser publicado:
<Topic>projects/project-id-marketing/topics/topic-name-test1</Topic>
Neste exemplo, project-id-marketing
é o ID do projeto no Google Cloud, e
topic-name-test1
é o tópico em que a
mensagem <Source>
será publicada.
<IgnoreUnresolvedVariables>
Especifica se o processamento será interrompido se a Apigee encontrar uma variável não resolvida.
Valor padrão | Falso |
Obrigatório? | Opcional |
Tipo | Booleano |
Elemento pai |
<PublishMessage>
|
Elemento filho | Nenhum |
Defina o valor como true
para ignorar variáveis não resolvidas e continuar o processamento. Caso contrário, false
. O
valor padrão é false
.
Definir <IgnoreUnresolvedVariables>
como true
é diferente de definir o continueOnError
do <PublishMessage>
como true
. Se você definir continueOnError
como true
, a Apigee vai ignorar todos os erros, e não
apenas os erros nas variáveis.
O elemento <IgnoreUnresolvedVariables>
usa a seguinte sintaxe:
Sintaxe
<IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
Exemplo
O exemplo a seguir define <IgnoreUnresolvedVariables>
como true
:
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Variáveis de fluxo
As variáveis de fluxo são objetos que contêm dados específicos e estão disponíveis para você no contexto de um fluxo de proxy de API. Essas variáveis armazenam informações, como informações de payload, caminho do URL, endereços IP e dados da execução da política. Para mais informações sobre variáveis de fluxo, consulte Como usar variáveis de fluxo.
Se a política PublishMessage for publicada com sucesso no tópico Pub/Sub,
a Apigee definirá a variável de fluxo publishmessage.message.id
para o
messageId retornado pelo
servidor Pub/Sub. A variável de fluxo é do tipo string, e a variável está disponível para você
a partir do fluxo de solicitação do proxy. Com base no seu requisito, é possível usar a variável de fluxo em
outras políticas downstream. No entanto, se a publicação falhar,
a Apigee não definirá a variável publishmessage.message.id
,
e o acesso a essa variável causará erros.
Para mais informações sobre vários tipos de variáveis de fluxo, consulte a Referência das variáveis de fluxo.
Códigos de erro
Esta secção descreve os códigos de falha e as mensagens de erro devolvidas, bem como as variáveis de falha definidas pelo Apigee quando esta política aciona um erro. Estas informações são importantes para saber se está a desenvolver regras de falhas para tratar falhas. Para saber mais, consulte o artigo O que precisa de saber acerca dos erros de políticas e o artigo Processamento de falhas.
Erros de tempo de execução
Estes erros podem ocorrer quando a política é executada.
Código de falha | Estado de HTTP | Causa |
---|---|---|
steps.publishmessage.PermissionDeniedError |
500 |
Este erro ocorre quando a conta de serviço de tempo de execução não consegue roubar a identidade da conta de serviço proxy ou a conta de serviço proxy não tem autorização para publicar no tópico. |
steps.publishmessage.ExecutionError |
500 |
Este erro ocorre se tiver ocorrido um erro inesperado durante a publicação da mensagem no Pub/Sub. Pode ver os detalhes do erro na mensagem de erro. |
steps.publishmessage.MessageVariableNotMessageType |
500 |
Este erro ocorre se o nome da variável especificado em UseMessageAsSource
não puder ser resolvido ou não for um tipo de mensagem.
|
Variáveis de falha
Sempre que existem erros de execução numa política, o Apigee gera mensagens de erro. Pode ver estas mensagens de erro na resposta de erro. Muitas vezes, as mensagens de erro geradas pelo sistema podem não ser relevantes no contexto do seu produto. Pode personalizar as mensagens de erro com base no tipo de erro para as tornar mais significativas.
Para personalizar as mensagens de erro, pode usar regras de falhas ou a política RaiseFault. Para
informações sobre as diferenças entre as regras de falhas e a política RaiseFault, consulte
Regras de falhas vs. a política RaiseFault.
Tem de verificar as condições através do elemento Condition
nas regras de falhas e na política RaiseFault.
O Apigee fornece variáveis de falhas exclusivas para cada política, e os valores das variáveis de falhas são definidos quando uma política aciona erros de tempo de execução.
Ao usar estas variáveis, pode verificar condições de erro específicas e tomar as medidas adequadas. Para mais informações sobre a verificação das condições de erro, consulte o artigo Criar condições.
Variáveis | Onde | Exemplo |
---|---|---|
fault.name |
O fault.name pode corresponder a qualquer uma das falhas indicadas na tabela Erros de tempo de execução.
O nome da falha é a última parte do código de falha. |
fault.name Matches "UnresolvedVariable" |
publishmessage.POLICY_NAME.failed |
POLICY_NAME é o nome especificado pelo utilizador da política que gerou a falha. | publishmessage.publish-message-1.failed = true |