# Como integrar Centros de Distribuição usando Multi-Instância

## **Visão geral**

Este artigo mostra como usar o recurso de [**Multi-Instância**](/documentation/developer-guide/pt-br/platform-administration/settings/multi-instance.md) da Digibee Integration Platform para resolver um cenário em que o sistema central de uma empresa de varejo precisa consumir informações de estoque de vários Centros de Distribuição, cada um com sua própria fila de mensageria.

## **Cenário**

<figure><img src="/files/cflog0N1LUQBN8bGreK2" alt=""><figcaption></figcaption></figure>

Imagine uma rede de varejo na qual os Centros de Distribuição (**CDs**) publicam atualizações de estoque em um broker **RabbitMQ**, que posteriormente envia essas informações ao ERP (Planejamento de Recursos Empresariais).

Normalmente, bastaria um pipeline com um trigger [**RabbitMQ**](/documentation/connectors-and-triggers/pt-br/triggers/messaging-and-events/rabbitmq.md) apontando para o broker. Porém, se cada CD tiver uma fila ou até mesmo um host diferente, o trigger não poderá consumir mensagens de múltiplas origens.

O recurso **Multi-Instância** resolve esse desafio ao permitir que você:

* Mantenha **um único pipeline** com a mesma lógica de processamento.
* **Implante instâncias dedicadas** para cada CD, com parâmetros específicos (host, porta, fila, entre outros).

Dessa forma, o processamento permanece padronizado, enquanto as configurações variam conforme a necessidade.

{% hint style="warning" %}
A lógica do pipeline deve ser idêntica entre as instâncias. É uma boa prática manter as mesmas etapas em todas elas, evitando tratamentos condicionais baseados na instância.
{% endhint %}

## **Arquitetura**

<figure><img src="/files/IYFRYygB9JCFjQHRRagk" alt=""><figcaption></figcaption></figure>

Cada Centro de Distribuição (**CD1**, **CD2** e **CD3**) envia atualizações de estoque por meio do **RabbitMQ (AMQP)**.

Na Digibee, um **pipeline Multi-Instância** configurado com **tamanho small**, **10 consumidores** e **1 réplica** coleta as mensagens, processa as informações e as envia para o **ERP**, onde são armazenadas em um **banco de dados SQL**.

Essa arquitetura garante **centralização**, **automação** e **escalabilidade** no controle de estoque.

## **Colocando a teoria em prática**

Para construir a solução apresentada acima, siga as etapas abaixo.

{% stepper %}
{% step %}

### Crie o modelo Multi-Instância

Na página inicial da Plataforma, clique no ícone de **Configurações** no canto superior direito, acesse o menu **Multi-Instância** e clique em **Criar**.

Preencha os campos:

* **Nome:** `warehouse-stock-queue`
* **Descrição:** Insira um texto explicando o uso deste modelo, por exemplo: “Modelo Multi-Instância para consumir filas independentes de brokers RabbitMQ, com uma instância dedicada para cada centro de distribuição”.
* **Campos:** Adicione os seguintes campos, pressionando **Enter** entre cada um:
  * `warehouse-cd`: Código do centro de distribuição.
  * `host`: IP do servidor RabbitMQ do CD.
  * `port`: Porta do servidor RabbitMQ.
  * `virtual-host`: Host virtual do RabbitMQ.
  * `queue`: Fila RabbitMQ com as mensagens do CD.

Clique em **Salvar** para criar o modelo.

<figure><img src="/files/0RaHc2ywm1aT2S2b8bNA" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Cadastre as instâncias e preencha os dados

1. Com o modelo criado, clique em **Configurar Multi-Instância** (segundo ícone na coluna de **Ações** da tabela de modelos Multi-Instância) e depois em **Criar**.
2. Cadastre as instâncias correspondentes às filas de cada CD (**cd1**, **cd2** e **cd3**):

* Preencha o campo **Nome**.
* Preencha os demais parâmetros — `port`, `host`, `virtual-host`, `warehouse-cd` e `queue` — conforme a configuração de cada ambiente.

3. Clique em **Salvar**.
4. Repita o processo para cada CD.

<figure><img src="/files/Z8QaLul5QedH2DKx6EPz" alt=""><figcaption></figcaption></figure>

Para cada CD, há uma instância configurada conforme sua respectiva fila RabbitMQ, tanto para teste quanto para produção.<br>
{% endstep %}

{% step %}

### Vincule o modelo Multi-Instância ao pipeline

Com a Multi-Instância criada e configurada, o próximo passo é vinculá-la ao pipeline que utilizará esses dados.

{% hint style="info" %}
Um mesmo modelo Multi-Instância pode ser vinculado a quantos pipelines forem necessários.
{% endhint %}

Para fazer o vínculo:

1. Acesse o pipeline desejado.
2. Abra o menu de **Configurações**.
3. Marque a opção **É Multi-Instância**.
4. Selecione o modelo **`warehouse-stock-queue`**.

<figure><img src="/files/hrZBukuG4klAQZmGE0IL" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Após definir o pipeline como Multi-Instância, **não é possível reverter** essa configuração. Por outro lado, qualquer pipeline, implantado ou não, pode ser transformado em Multi-Instância.
{% endhint %}
{% endstep %}

{% step %}

### Referencie os campos da Multi-Instância

Conforme descrito na [documentação sobre criação de pipelines Multi-Instância](/documentation/developer-guide/pt-br/platform-administration/settings/multi-instance/multi-instance.md), para referenciar o valor de um campo configurado em uma instância, use a notação:

```
{{replica.nome_da_variável_da_instância}}
```

No exemplo deste documento, esses campos são usados no trigger **RabbitMQ** da seguinte forma:

* **Hostname:** `{{replica.host}}`
* **Port:** `{{replica.port}}`
* **The RabbitMQ Queue To Consume Messages From:** `{{replica.queue}}`

<figure><img src="/files/mrztoSq8aI5tDFfcZca8" alt=""><figcaption></figcaption></figure>

Assim, ao implantar o pipeline para uma instância (**cd1**, **cd2** ou **cd3**), o trigger assume automaticamente os valores configurados.

Os campos da Multi-Instância também podem ser usados em outros conectores.

Exemplo com o [**JSON Generator**](/documentation/connectors-and-triggers/pt-br/connectors/tools/json-generator.md):

```json
{
  "warehouse": "{{replica.warehouse-cd}}",
  "host": "{{replica.host}}",
  "port": {{replica.port}},
  "queue": "{{replica.queue}}"
}
```

{% endstep %}

{% step %}

### Teste o pipeline Multi-Instância

Para testar o pipeline, vá até o [**Painel de Execução**](/documentation/developer-guide/pt-br/development-cycle/build-overview/canvas/execution-panel.md). Antes de iniciar o teste, selecione a instância desejada no campo **Multi-Instância** e clique em **Executar** para visualizar o resultado daquela instância.

<figure><img src="/files/znXTZblfxCrwiszEowuH" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Implante as instâncias do pipeline

A implantação de um pipeline Multi-Instância é feita **por instância**. Embora o pipeline seja único, cada instância é implantada de forma independente (**cd1**, **cd2**, **cd3**).

Durante a [implantação](/documentation/developer-guide/pt-br/development-cycle/overview/deployment/deployments.md), selecione a instância desejada no campo **Instância** do formulário.

<figure><img src="/files/MATxJG6RERktGL2axvC9" alt=""><figcaption></figcaption></figure>

Assim, é possível escalar conforme a demanda de cada CD.

Por exemplo, se o **CD3** tiver maior volume de transações, adicione mais réplicas do pipeline apenas para ele (escala horizontal).

{% hint style="warning" %}
Cada instância implantada recebe o nome da instância como sufixo do pipeline (**cd1**, **cd2**, **cd3**). Embora compartilhem a mesma lógica, as instâncias funcionam como unidades de execução independentes.
{% endhint %}
{% endstep %}
{% endstepper %}

## **Considerações finais**

O recurso **Multi-Instância** centraliza a manutenção de pipelines e oferece flexibilidade por meio de parametrização avançada.

No cenário apresentado, cada Centro de Distribuição executa o mesmo pipeline com suas próprias configurações de fila e processamento, o que proporciona **escalabilidade**, **simplicidade operacional** e **redução de esforço de manutenção**.

Com o novo [**Modelo Baseado em Consumo**](/documentation/licensing/pt-br/licensing-models/consumption-based-model.md), o número de instâncias implantadas não impacta diretamente os custos, mantendo o modelo alinhado à demanda real de transações.

**Principais benefícios do Multi-Instância:**

* **Escalabilidade por instância:** Cada instância pode ser escalada de forma independente, horizontal ou verticalmente.
* **Manutenção centralizada:** Um único pipeline serve a todas as instâncias, simplificando a gestão.
* **Parametrização flexível:** Os campos da Multi-Instância permitem configurar variações específicas.
* **Facilidade de expansão:** Para incluir um novo CD, basta criar uma nova instância no modelo e implantá-la.
* **Implantação gradual:** Ideal para rollouts parciais e adoção progressiva.


---

# 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/resources/pt-br/use-cases/how-to-multi-instance.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.
