# Use Send Messages to a Queue

Send messages to a queue refere-se ao processo de adição de mensagens a uma fila. Esta fila é uma estrutura de dados que armazena mensagens na ordem "*primeiro a entrar, primeiro a sair*" (*FIFO*, em inglês). As mensagens são adicionadas na parte de trás da fila e removidas da parte da frente. As mensagens podem ser enviadas de forma assíncrona e processadas pelo componente receptor posteriormente, facilitando a comunicação entre diferentes partes de um sistema.

---

## Obtenha a integração

Para obter a integração Send messages to a queue fornecida pelo Marketplace, siga esses passos:

1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Marketplace**.
2. Na homepage do Marketplace, selecione o card da integração.
3. Quando estiver na página da integração, clique no botão **Install**.

Aparecerá uma mensagem indicando que a integração foi instalada com sucesso.

:::tip
Você pode procurar qualquer integração navegando pelos cards, usando os filtros ou digitando uma palavra-chave na barra de busca.
:::

---

## Configure a integração

Sendo uma [Applications function](/pt-br/documentacao/produtos/marketplace/integracoes/#edge-application-functions), a **Send messages to a queue** é executada no edge, empregando uma application *existente*.

:::tip
Para criar uma nova application, acesse a [seção de Build](/pt-br/documentacao/produtos/guias/build/criar-uma-aplicacao/).
::: 

Para configurar a integração **Send messages to a queue**, complete os seguintes passos:

1. No canto superior esquerdo da página, selecione **Products Menu** > **Applications**.
2. Na lista de aplicações, selecione a application na qual deseja configurar a integração **Send messages to a queue**.
3. Na página da aplicação, entra na aba **Main Settings**.
4. Habilite o swicth **Functions** para permitir o uso do módulo na sua aplicação.
5. Clique no botão **Save** no canto inferior direito da página.

Aparecerá uma mensagem indicando que a application foi atualizada com sucesso.

:::caution[Atenção]
Se qualquer produto ou módulo for ativado, pode gerar custos relacionados ao uso. Consulte a [página de preços](/pt-br/documentacao/produtos/precos/) para obter mais informações.
:::

---

## Instancie a integração

Para instanciar a integração **Send messages to a queue**, ainda na página de **Applications**, siga os passos abaixo:

1. Selecione a aba **Functions Instances**.
2. Clique no botão **+ Function Instance**.
3. Escolha um nome fácil de lembrar para a sua função.
4. No menu suspenso de funções, selecione a função **Send messages to a queue**.
  - Esta ação irá carregar a aba **Arguments**.

Você pode configurar três serviços de mensageria: *RabbitMQ*, *Amazon SQS* e *Kafka-REST*. Para cada uma destas integrações, você terá parâmetros diferentes e credenciais diferentes, como mostrado nos exemplos abaixo:

### AMQP

```json
{
  "server_type": "amqp",
  "connection_url": "https://my-service.azion.com/queue",
  "connection_authorization": "Basic my_basic_auth",
  "connection_args: {
   "routing_key: "my_queue",
   "payload: "my_custom_payload"
  }
}
```

### SQS

```json
{
  "server_type": "sqs",
  "connection_url": "https://my-service.azion.com/sqs-queue",
  "connection_authorization": "Basic my_basic_auth",
  "connection_args: {
    "auth_params: "my_aditional_auth_params",
     "version": "2012-11-05",
    "expires": "Wed, 21 Oct 2015 07:28:00 GMT"
  }
}
```

### Kafka-REST

```json
{
  "server_type": "kafka-rest",
  "connection_url": "https://my-service.azion.com/topics/my-topic",
 "connection_args: {
    "payload": "my_custom_payload"
  }
}
```

**Onde**:
- `server_type`: define o tipo de conexão utilizada (`amqp`, `sqs`, `kafka-rest` são os três valores possíveis).
- `connection_url`: define a URL do servidor do serviço que você escolher.
- `connection_authorization`: define o tipo de autorização necessária para a conexão. Este é um campo *opcional*.

Você também pode definir parâmetros adicionais para sua fila, passando-os na seção `connection_args`. Cada serviço suportado tem parâmetros adicionais diferentes que podem ser utilizados. Estes **não** são obrigatórios para que a sua função rode no edge.

:::note
Não é possível integrar o Kafka **"as is"**, pois os clientes Kafka disponíveis para JavaScript (Kafka JS e Kafka Node) utilizam funcionalidades do NodeJS que são incompatíveis com o **Azion Cells**. Entretanto, você tem a opção de integrá-lo usando o Kafka-REST, um módulo que fornece uma interface HTTP RESTful para um cluster Kafka.
:::

5. Para finalizar, clique no botão **Save**.

---

## Defina uma regra para o Rules Engine

Agora, você deve configurar as regras que deseja (*criteria* e *behavior*) aplicar a fim de executar sua função.

Para fazer isso, ainda na página de **Applications**, siga estes passos:

1. Selecione a aba **Rules Engine**.
2. Clique em **Default Rule**.
    - Você não pode alterar o campo de *criteria* no **Rules Engine** para a **Default Rule**.
3. No campo *behavior*, selecione **Run Function** no menu suspenso.
4. Selecione a opção **Send messages to a queue**, de acordo com o nome que você deu na etapa de instanciação.
5. Clique no botão **Save**.

Pronto. Agora você tem a sua função funcionando no edge.

---