# JMS Trigger

{% hint style="info" %}
Este *trigger* precisa de uma infraestrutura dedicada. Por questões de segurança, é necessário entrar em contato com a nossa Equipe de Suporte para obter a liberação.&#x20;
{% endhint %}

Digamos que você queira utilizar um *trigger* para realizar a subscrição em uma fila de mensagens. Ao usar o **JMS Trigger**, você consegue disparar um *pipeline* que habilita o consumo de uma mensagem por vez.

## **Commit com garantia de entrega**

Com a propriedade **Auto Commit** desabilitada, é possível dar o *ack* da mensagem somente após a execução bem sucedida do *pipeline*. Para o *broker* IBM MQ, é necessário manter esse campo sempre habilitado, pois não é suportado controlar o *ack* ou o *reject* da mensagem.

## Filas suportadas e parâmetros de configuração

As filas suportadas são:

* Oracle Advanced Queue
* Tibco EMS
* SQS
* IBM MQ

Dê uma olhada nas opções de configuração do *trigger*. Parâmetros suportados por [expressões *Double Braces*](/documentation/connectors-and-triggers/pt-br/double-braces/overview.md) estão marcados com `(DB)`.

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Account</strong></td><td>Define a <a href="/spaces/cO0A6g1dOsu8BiHYqO67/pages/fS1QLzAg8rGSSJFwtrvy">conta</a> que será usada pelo <em>trigger</em>. Tipos suportados: <strong>Basic</strong> e <strong>AWS V4</strong>.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Auto Commit</strong></td><td>Quando ativada, a estratégia de <em>auto commit</em> JMS será usada. Se não for ativada, o <em>commit</em> manual será usado.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Destination</strong></td><td>Define o parâmetro (<em>Queue</em> ou <em>Topic</em>).</td><td><em>Queue</em></td><td><em>String</em></td></tr><tr><td><strong>Name of the Queue or Topic</strong></td><td>Nome único dado ao <em>Queue</em> ou <em>Topic</em> selecionado.</td><td><em>Test</em></td><td><em>String</em></td></tr><tr><td><strong>Which JMS Provider Will Be Used</strong></td><td>Seleciona a fila desejada (Oracle Advanced Queue, Tibco EMS, SQS ou IBM MQ).</td><td>SQS</td><td><em>String</em></td></tr></tbody></table>

Dependendo da fila, parâmetros diferentes podem ser acessados:

### Oracle AQ <a href="#oracle-aq" id="oracle-aq"></a>

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th width="314">Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Hostname</strong></td><td>O nome do <em>host</em> da conexão <em>string</em> JMS.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>SID - Oracle Site Identifier</strong></td><td>Nome do banco de dados Oracle.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Port</strong></td><td>Número da porta de acesso ao servidor Oracle.</td><td>N/A</td><td>Inteiro</td></tr><tr><td><strong>JDBC Type</strong></td><td><em>Driver</em> Oracle jbdc (ex.: THIN ou OCI).</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Durable Subscriber</strong></td><td>Consumidor de mensagem que recebe todas as mensagens publicadas em um tópico, incluindo aquelas publicadas enquanto o <em>subscriber</em> está inativo; quando essa opção estiver ativada, é necessário informar o nome específico do <em>subscriber</em> no campo <strong>Subscriber Name</strong>.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Subscriber Name</strong></td><td>Nome do <em>subscriber</em> específico necessário ao ativar a opção <strong>Durable Subscriber</strong> no <strong>Oracle Advanced Queue</strong>.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Set Client ID</strong></td><td>Propriedade utilizada especificamente por um provedor JMS para identificar a conexão JMS do cliente e permitir que ela seja durável.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Message Selector</strong></td><td>Se a sua aplicação precisa filtrar as mensagens recebidas, você pode utilizar um selecionador de mensagens JMS API, que permite ao consumidor de mensagens especificar quais delas interessam - o <em>message selector</em> repassa a filtragem para o provedor JMS.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Maximum Timeout</strong></td><td>Tempo máximo (em milissegundos) para o <em>pipeline</em> processar informação antes de retornar uma resposta. Limite: 900000.</td><td>30000</td><td>Inteiro</td></tr><tr><td><strong>Allow Redelivery of Messages</strong></td><td>Se a opção estiver ativada, permite o reenvio da mensagem em caso de falha do <em>Pipeline Engine</em>.</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

### Tibco EMS <a href="#tibco-ems" id="tibco-ems"></a>

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th width="294">Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Connection String</strong></td><td>Conexão string JMS no formato <em>tcp://{host}:{port}</em>.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Durable Subscriber</strong></td><td>Consumidor de mensagem que recebe todas as mensagens publicadas em um tópico, incluindo aquelas publicadas enquanto o <em>subscriber</em> está inativo; quando essa opção estiver ativada, é necessário informar o nome específico do <em>subscriber</em> no campo <strong>Subscriber Name</strong>.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Subscriber Name</strong></td><td>Nome do <em>subscriber</em> específico necessário ao ativar a opção <strong>Durable Subscriber</strong> no <strong>Tibco EMS</strong>.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Set Client ID</strong></td><td>Propriedade utilizada especificamente por um provedor JMS para identificar a conexão JMS do cliente e permitir que ela seja durável.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Message Selector</strong></td><td>Se a sua aplicação precisa filtrar as mensagens recebidas, você pode utilizar um selecionador de mensagens JMS API, que permite ao consumidor de mensagens especificar quais delas interessam - o <em>message selector</em> repassa a filtragem para o provedor JMS.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Maximum Timeout</strong></td><td>Tempo máximo (em milissegundos) para o <em>pipeline</em> processar informação antes de retornar uma resposta. Limite: 900000.</td><td>30000</td><td>Inteiro</td></tr><tr><td><strong>Allow Redelivery of Messages</strong></td><td>Se a opção estiver ativada, permite o reenvio da mensagem em caso de falha do <em>Pipeline Engine</em>.</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

### SQS <a href="#sqs" id="sqs"></a>

Claro, aqui está a tabela organizada conforme solicitado:

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th width="285">Descrição</th><th>Valor padrão</th><th>Tipo de Dado</th></tr></thead><tbody><tr><td><strong>Role ARN</strong></td><td><p>O Amazon Resource Name (ARN) da role a ser assumida. Usado em políticas de fila ou do IAM para definir qual role pode interagir com a fila SQS. </p><p>Este parâmetro é compatível com o uso de <a href="/spaces/cO0A6g1dOsu8BiHYqO67/pages/-MkqahfptVSOoczFtCr_">Globals</a>.</p></td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Role Session Name</strong></td><td><p>Um nome que identifica a sessão da role assumida. Ajuda a rastrear quem (ou o quê) assumiu a role e realizou ações específicas na fila SQS. </p><p>Este parâmetro é compatível com o uso de <a href="/spaces/cO0A6g1dOsu8BiHYqO67/pages/-MkqahfptVSOoczFtCr_">Globals</a>.</p></td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Expiration (in ms)</strong></td><td>A duração (em milissegundos) antes que as credenciais temporárias expirem.</td><td>900</td><td>Inteiro</td></tr><tr><td><strong>Connection String</strong></td><td>Conexão string JMS no formato _https://{REGION_ENDPOINT}/queue.<br><br>/{YOUR_ACCOUNT_NUMBER}/{YOUR_QUEUE_NAME}_.</td><td><em>tcp://localhost:61616</em></td><td><em>String</em></td></tr><tr><td><strong>Region</strong></td><td>Região da AWS onde a fila está instalada.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Set Client ID</strong></td><td>Propriedade utilizada especificamente por um provedor JMS para identificar a conexão JMS do cliente e permitir que ela seja durável.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Message Selector</strong></td><td>Se sua aplicação precisar filtrar mensagens recebidas, você poderá usar um seletor de mensagens da API JMS, permitindo que o consumidor de mensagens especifique quais delas são importantes.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Maximum Timeout</strong></td><td>Tempo máximo (em milissegundos) para o <em>pipeline</em> processar informação antes de retornar uma resposta. Limite: 900000.</td><td>30000</td><td>Inteiro</td></tr><tr><td><strong>Allow Redelivery of Messages</strong></td><td>Se a opção estiver ativada, permite o reenvio da mensagem em caso de falha do <em>Pipeline Engine</em>.</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

{% hint style="warning" %}
O *Visibility Timeout* no *Broker* SQS deve ter um valor maior ou igual que o *timeout* do *pipeline*. Isso é necessário, porque o *Broker* SQS é um sistema distribuído e não remove a mensagem após o seu consumo, já que não há garantia de que ela foi realmente consumida.

Se o *Visibility Timeout* não é configurado dentro das condições mencionadas, pode ocorrer o reenvio de uma mensagem em processamento. O *Broker SQS* envia a mensagem novamente caso ela não receba ACK ou REJECT dentro do tempo configurado em *Visibility Timeout*. [Para mais informações, veja a documentação externa](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html).
{% endhint %}

### **IBM MQ**

{% hint style="info" %}
Ainda não há suporte para autenticação usando TLS.
{% endhint %}

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th width="330">Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Hostname</strong></td><td>Nome do <em>host</em> da conexão <em>string</em> JMS.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Channel Name</strong></td><td>Nome do canal a ser utilizado na comunicação do <em>broker</em>.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Queue Manager</strong></td><td>Nome do gerenciador de filas do IBM MQ.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Port</strong></td><td>Número da porta de acesso ao servidor Oracle.</td><td>N/A</td><td>Inteiro</td></tr><tr><td><strong>Durable Subscriber</strong></td><td>Consumidor de mensagem que recebe todas as mensagens publicadas em um tópico, incluindo aquelas publicadas enquanto o <em>subscriber</em> está inativo; quando essa opção estiver ativada, é necessário informar o nome específico do <em>subscriber</em> no campo <em>Subscriber Name</em>.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Set Client ID</strong></td><td>Propriedade utilizada especificamente por um provedor JMS para identificar a conexão JMS do cliente e permitir que ela seja durável.</td><td><em>False</em></td><td>Booleano</td></tr><tr><td><strong>Message Selector</strong></td><td>Se a sua aplicação precisa filtrar as mensagens recebidas, você pode utilizar um selecionador de mensagens JMS API, que permite ao consumidor de mensagens especificar quais delas interessam - o <em>message selector</em> repassa a filtragem para o provedor JMS.</td><td>N/A</td><td><em>String</em></td></tr><tr><td><strong>Maximum Timeout</strong></td><td>Tempo máximo (em milissegundos) para o <em>pipeline</em> processar informação antes de retornar uma resposta. Limite: 900000. </td><td>30000</td><td><em>Integer</em></td></tr><tr><td><strong>Allow Redelivery of Messages</strong></td><td>Se a opção estiver ativada, permite o reenvio da mensagem em caso de falha do <em>Pipeline Engine</em>.</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

## JMS Trigger em ação

Se você deseja disparar o *trigger*, será necessário publicar o *pipeline*. Veja como realizar o *deploy*:

1. Clique em **Run**, localizado na parte superior da tela.
2. Selecione o ambiente, que pode ser *test* ou *prod*.
3. Clique em **Criar uma nova implantação**.
4. Selecione o *pipeline* com a sua versão e capacidade.
5. Clique em **Confirmar**.

Quando for disparado, o *pipeline* receberá um *payload* similar ao seguinte:

```
{  
    "data":"mensagem"
}
```

&#x20;    **data:** conteúdo da mensagem recebida.

&#x20;  \
O **JMS Trigger** suporta o consumo de mensagens de forma paralela - o número de *consumers* configurado na hora do *deploy* de um *pipeline* será exatamente o mesmo para a fila/tópico JMS.

Portanto, se forem configurados 10 *consumers* no deploy, 10 *consumers* serão criados de tópico/fila JMS.

Isso aumenta o *throughput* de consumo das mensagens, além de permitir ao usuário ter controle de quantos consumidores simultâneos ele poderá criar.

Antes havia apenas um *consumer* por *trigger*.

{% hint style="info" %}
Caso você realize o *deploy* de um *pipeline* com o trigger JMS atrelado a um tópico, é preciso configurar apenas 1 *consumer* na hora de realizar o *deploy*.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/triggers/messaging-and-events/jms.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
