[Somente PaaS]{class="badge informative" title="Aplica-se somente a projetos do Adobe Commerce na nuvem (infraestrutura do PaaS gerenciada pela Adobe) e a projetos locais."}

Configurar o serviço ActiveMQ

O MQF (Estrutura da Fila de Mensagens) é um sistema do Adobe Commerce que permite que um módulo publique mensagens em filas. Também define os consumidores que recebem as mensagens de forma assíncrona.

O MQF pode usar AtiveMQ Artemis como agente de mensagens, o que fornece uma plataforma escalável para enviar e receber mensagens. Também inclui um mecanismo para armazenar mensagens não entregues. ActiveMQ Artemis dá suporte ao protocolo STOMP (Streaming Text Oriented Messaging Protocol) para mensagens.

ActiveMQ Artemis está disponível como uma alternativa ao RabbitMQ para gerenciar filas de mensagens. É particularmente útil quando você precisa de recursos específicos para AtiveMQ ou quer usar o protocolo STOMP.

IMPORTANT
Se preferir usar um serviço existente de agente de mensagens, como o ActiveMQ, em vez de depender da Adobe Commerce na infraestrutura de nuvem para criá-lo para você, use a variável de ambiente QUEUE_CONFIGURATION para conectá-lo ao seu site.

Use as instruções a seguir para a configuração do serviço em ambientes Pro Integration e Starter, incluindo a ramificação master.

NOTE
Envie um tíquete de Suporte da Adobe Commerce para alterar a configuração do serviço em ambientes de Produção e Preparo Profissionais.

Para habilitar AtiveMQ Artemis:

  1. Adicione o nome, o tipo e o valor de disco necessários (em MB) ao arquivo .magento/services.yaml junto com a versão do AtiveMQ instalada.

    code language-yaml
    activemq-artemis:
        type: activemq-artemis:<version>
        disk: 1024
    
  2. Configure as relações no arquivo .magento.app.yaml.

    code language-yaml
    relationships:
        activemq-artemis: "activemq-artemis:activemq-artemis"
    
  3. Adicionar, confirmar e enviar por push as alterações de código.

    code language-bash
    git add .magento/services.yaml .magento.app.yaml
    
    code language-bash
    git commit -m "Enable ActiveMQ Artemis service"
    
    code language-bash
    git push origin <branch-name>
    
  4. Verifique as relações de serviço.

TIP
Após a configuração inicial do serviço, você pode alterar a versão do software de um serviço instalado atualizando os arquivos de configuração services.yaml e .magento.app.yaml. Consulte Alterar versão de serviço para obter orientação sobre como atualizar ou rebaixar um serviço.

Conectar ao AtiveMQ para depuração

Para fins de depuração, você pode se conectar diretamente a uma instância de serviço de uma das seguintes maneiras:

  • Conectar-se a partir do ambiente de desenvolvimento local
  • Conectar a partir do aplicativo
  • Conectar a partir do aplicativo PHP

Conectar-se a partir do ambiente de desenvolvimento local

  1. Faça logon na CLI do magento-cloud e no projeto:

    code language-bash
    magento-cloud login
    
  2. Confira o ambiente com o AtiveMQ Artemis instalado e configurado.

    code language-bash
    magento-cloud environment:checkout <environment-id>
    
  3. Usar SSH para se conectar ao ambiente de nuvem:

    code language-bash
    magento-cloud ssh
    
  4. Recupere os detalhes da conexão do AtiveMQ e as credenciais de logon da variável $MAGENTO_CLOUD_RELATIONSHIPS:

    code language-bash
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    

    ou

    code language-bash
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
    

    Na resposta, localize as informações do AtiveMQ. O nome da relação depende de como você a configurou no arquivo .magento.app.yaml. Por exemplo, se você usou activemq-artemis como o nome da relação:

    code language-json
    {
       "activemq-artemis" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "stomp",
             "port" : 61616,
             "host" : "activemq-artemis.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. Habilite o encaminhamento de porta local para AtiveMQ (se o projeto estiver localizado em uma região diferente, como US-3, EU-5 ou AP-3, substitua us-3/eu-5/ap-3 por us)

    code language-bash
    ssh -L <port-number>:activemq-artemis.internal:<port-number> <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    

    Um exemplo para acessar o console Web AtiveMQ Artemis em http://localhost:8161 é:

    code language-bash
    ssh -L 8161:activemq-artemis.internal:8161 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
    note note
    NOTE
    O AtiveMQ Artemis usa a porta 61616 para mensagens STOMP e a porta 8161 para o console da web.
  6. Enquanto a sessão estiver aberta, você poderá acessar o console da Web do AtiveMQ Artemis em http://localhost:8161 usando o nome de usuário e a senha da variável MAGENTO_CLOUD_RELATIONSHIPS.

Conectar a partir do aplicativo

Para se conectar ao AtiveMQ executado em um aplicativo, instale uma biblioteca de cliente STOMP em seu aplicativo PHP.

Conectar a partir do aplicativo PHP

Para conectar-se ao AtiveMQ usando seu aplicativo PHP, adicione uma biblioteca STOMP PHP à árvore de origem. O Adobe Commerce usa o protocolo STOMP para comunicação AtiveMQ e a configuração é automaticamente definida durante a implantação quando o AtiveMQ Artemis é detectado como um serviço configurado.

Suporte a protocolo

O AtiveMQ Artemis no Adobe Commerce na infraestrutura em nuvem usa o protocolo STOMP (Streaming Text Oriented Messaging Protocol):

  • STOMP: o protocolo de mensagens usado para operações de fila (porta 61616)
  • Console da Web: interface de gerenciamento acessível via HTTP (porta 8161)

Diferenças de RabbitMQ

Embora ActiveMQ Artemis e RabbitMQ sirvam como agente de mensagens para o Adobe Commerce, há algumas diferenças:

  • Protocolo: AtiveMQ Artemis usa o protocolo STOMP, enquanto RabbitMQ usa AMQP
  • Configuração: quando o AtiveMQ Artemis é configurado, o Adobe Commerce usa automaticamente o protocolo STOMP
  • Prioridade: se AtiveMQ e RabbitMQ estiverem configurados, AtiveMQ terá prioridade para operações baseadas em STOMP, enquanto operações AMQP usarão RabbitMQ
  • Console da Web: o AtiveMQ fornece um console de gerenciamento baseado na Web para monitoramento de filas e mensagens

Configuração da fila

Quando o AtiveMQ Artemis é configurado como um serviço, o Adobe Commerce configura automaticamente o sistema de fila para usar o protocolo STOMP. A configuração é gravada no arquivo app/etc/env.php durante a implantação:

'queue' => [
    'stomp' => [
        'host' => 'activemq-artemis.internal',
        'port' => '61616',
        'user' => 'guest',
        'password' => 'guest'
    ],
    'default_connection' => 'stomp'
]

Você pode substituir essa configuração usando a variável de ambiente QUEUE_CONFIGURATION, se necessário.

recommendation-more-help
7c2b03ac-000c-497d-aba3-2c6dc720a938