Agente de mensagem (AtiveMQ Artemis)
O Adobe Commerce também oferece suporte ao agente de mensagens de código aberto AtiveMQ Artemis por meio do Simple Text Oriented Messaging Protocol (STOMP). Ele oferece um sistema de mensagens confiável e escalável, oferecendo flexibilidade para integrações baseadas em STOMP.
As filas de mensagens fornecem um mecanismo de comunicação assíncrono no qual o remetente e o destinatário de uma mensagem não entram em contato entre si. Eles também não precisam se comunicar com a fila de mensagens ao mesmo tempo. Quando um remetente coloca uma mensagem em uma fila, ela é armazenada até que o destinatário a receba.
O sistema de fila de mensagens deve ser estabelecido antes da instalação do Adobe Commerce. A sequência básica é:
- Instale o Apache AtiveMQ Artemis e todos os pré-requisitos.
- Conecte o AtiveMQ ao Adobe Commerce.
Instalar o Apache AtiveMQ Artemis
Você pode instalar o AtiveMQ Artemis usando Docker (recomendado para desenvolvimento) ou instalação manual (recomendado para produção).
Opção 1: Instalação do Docker (recomendada para desenvolvimento)
Pré-requisitos
Verifique se o Docker está instalado e em execução no sistema.
Etapas de instalação
-
Execute o AtiveMQ Artemis usando a imagem oficial do Docker:
code language-bash # Run with default configuration docker run --detach \ --name artemis \ --publish 8161:8161 \ --publish 61613:61613 \ --publish 5672:5672 \ apache/activemq-artemis:2.42.0
-
Executar com credenciais personalizadas:
code language-bash # Run with custom username/password docker run --detach \ --name artemis \ --publish 8161:8161 \ --publish 61613:61613 \ --publish 5672:5672 \ --env ARTEMIS_USER=magento \ --env ARTEMIS_PASSWORD=magento \ apache/activemq-artemis:2.42.0
Comandos de gerenciamento do Docker
# Check container status
docker ps | grep artemis
# View logs
docker logs artemis
# Stop the container
docker stop artemis
# Start the container
docker start artemis
# Remove the container
docker rm artemis
Acesso aos serviços
Depois que o container do Docker estiver em execução, você poderá acessar:
- Console da Web: http://localhost:8161/console (credenciais padrão: artemis/artemis)
- Porta STOMP: localhost:61613 (para conexão com o Adobe Commerce)
Opção 2: instalação manual no Ubuntu/CentOS
Pré-requisitos
Verifique se o Java 17 ou superior está instalado (necessário para o AtiveMQ Artemis 2.42.0+).
Etapas de instalação
-
Baixe e instale a versão mais recente do site Apache AtiveMQ Artemis. A partir de setembro de 2025, a versão estável mais recente é a 2.42.0:
code language-bash sudo mkdir -p /opt/artemis cd /opt/artemis sudo curl -O https://downloads.apache.org/activemq/activemq-artemis/2.42.0/apache-artemis-2.42.0-bin.tar.gz sudo tar -xzf apache-artemis-2.42.0-bin.tar.gz --strip-components=1 sudo rm apache-artemis-2.42.0-bin.tar.gz
-
Criar o usuário
artemis
e definir a propriedade:code language-bash # Create artemis user and set ownership sudo useradd -r -s /bin/false artemis 2>/dev/null || true sudo chown -R artemis:artemis /opt/artemis
-
Criar uma instância de agente:
code language-bash sudo /opt/artemis/bin/artemis create /var/lib/artemis-instance --user artemis --password artemis --allow-anonymous sudo chown -R artemis:artemis /var/lib/artemis-instance
-
Inicie o broker:
code language-bash # Start in foreground (for testing) sudo /var/lib/artemis-instance/bin/artemis run # Start as background service sudo /var/lib/artemis-instance/bin/artemis-service start # Stop the broker sudo /var/lib/artemis-instance/bin/artemis-service stop # Restart the broker sudo /var/lib/artemis-instance/bin/artemis-service restart # Force stop the broker sudo /var/lib/artemis-instance/bin/artemis-service force-stop # Check broker status sudo /var/lib/artemis-instance/bin/artemis-service status
Configurar AtiveMQ Artemis
Consulte a documentação oficial do AtiveMQ Artemis para configurar e gerenciar o broker. Preste atenção aos seguintes itens:
- Variáveis de ambiente
- Acesso à porta (protocolo STOMP)
- Contas e credenciais de usuário padrão
- Iniciando e interrompendo o agente
- Limites do sistema e ajuste de recursos
Arquivos de configuração de chave
/var/lib/artemis-instance/etc/broker.xml
- Configuração do agente principal/var/lib/artemis-instance/etc/artemis-users.properties
- Autenticação de usuário/var/lib/artemis-instance/etc/artemis-roles.properties
- Funções do usuário/var/lib/artemis-instance/etc/bootstrap.xml
- Configuração do Bootstrap
Habilitar o protocolo STOMP
Verifique /var/lib/artemis-instance/etc/broker.xml
para garantir que o aceitador de STOMP esteja configurado:
<acceptors>
<acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpDuplicateDetection=true</acceptor>
<acceptor name="stomp">tcp://0.0.0.0:61613?protocols=STOMP</acceptor>
<acceptor name="stomp-ssl">tcp://0.0.0.0:61617?protocols=STOMP;sslEnabled=true;keyStorePath=/path/to/keystore.jks;keyStorePassword=password</acceptor>
</acceptors>
Para habilitar SSL no STOMP, você deve adicionar explicitamente o aceitador stomp-ssl
.
Instale com o AtiveMQ Artemis e conecte
Se você instalar o Adobe Commerce depois de instalar o AtiveMQ Artemis, adicione os seguintes parâmetros de linha de comando durante a instalação:
--stomp-host="<hostname>" --stomp-port="61613" --stomp-user="<user_name>" --stomp-password="<password>"
Onde:
--stomp-host
--stomp-port
61613
.--stomp-user
artemis
.--stomp-password
artemis
.--stomp-ssl
false
. Se você definir o valor como true, consulte Configurar SSL para obter mais informações.Conectar AtiveMQ Artemis
Se você já tiver uma instância do Adobe Commerce com configuração RabbitMQ (AMQP) no arquivo <install_directory>/app/etc/env.php
e quiser conectá-la ao AtiveMQ, substitua a seção queue
pelo STOMP para que seja semelhante ao seguinte:
'queue' =>
array (
'stomp' =>
array (
'host' => 'activemq.example.com',
'port' => '61613', // SSL STOMP port (default 61617, non-SSL is 61613)
'user' => 'magento',
'password' => 'magento',
// Performance tuning options
'heartbeat_send' => 10000, // 10 seconds // Optional
'heartbeat_receive' => 10000, // 10 seconds // Optional
'read_timeout' => 250000 // 250ms // Optional
),
),
Você também pode definir valores de configuração do AtiveMQ usando o comando bin/magento setup:config:set
(remova a configuração AMQP se ela existir no arquivo app/etc/env.php
):
bin/magento setup:config:set --stomp-host="activemq.example.com" --stomp-port="61613" --stomp-user="magento" --stomp-password="magento"
Após executar o comando ou atualizar o arquivo <install_directory>/app/etc/env.php
com valores de configuração STOMP, execute bin/magento setup:upgrade
para aplicar as alterações e criar as filas necessárias no AtiveMQ.
Configurar SSL
Para configurar o suporte para SSL, edite os parâmetros ssl
e ssl_options
no arquivo <install_directory>/app/etc/env.php
para que sejam semelhantes ao seguinte:
'queue' =>
array (
'stomp' =>
array (
'host' => 'activemq.example.com',
'port' => '61617', // SSL STOMP port (default 61617, non-SSL is 61613)
'user' => 'magento',
'password' => 'magento',
'ssl' => 'true',
'ssl_options' => [
'cafile' => '/etc/pki/tls/certs/DigiCertCA.crt',
'local_cert' => '/path/to/magento/app/etc/ssl/test-activemq.crt', // Optional: Client certificate for mutual SSL
'local_pk' => '/path/to/magento/app/etc/ssl/test-activemq.key', // Optional: Client private key for mutual SSL
'passphrase' => 'client_key_password', // Optional: Passphrase for client private key
'verify_peer' => true,
'verify_peer_name' => true,
'allow_self_signed' => false
],
// Performance tuning options
'heartbeat_send' => 10000, // 10 seconds // Optional
'heartbeat_receive' => 10000, // 10 seconds // Optional
'read_timeout' => 250000 // 250ms // Optional
),
),
Opções de configuração do SSL
verify_peer
true
verify_peer_name
true
allow_self_signed
false
cafile
certfile
keyfile
passphrase
Configuração do SSL de desenvolvimento
Para ambientes de desenvolvimento, é possível usar configurações SSL relaxadas:
'ssl_options' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
Ajuste de desempenho
O AtiveMQ Artemis oferece várias opções de ajuste de desempenho:
'queue' =>
array (
'stomp' =>
array (
'host' => 'activemq.example.com',
'port' => '61613',
'user' => 'artemis',
'password' => 'artemis',
// Performance options
'heartbeat_send' => 10000, // Send heartbeat every 10 seconds
'heartbeat_receive' => 10000, // Expect heartbeat every 10 seconds
'read_timeout' => 250000, // 250ms read timeout
),
),
Monitoramento e gerenciamento
Console da Web
O AtiveMQ Artemis fornece um console de gerenciamento baseado na Web acessível em:
- URL:
http://localhost:8161/console
- Credenciais padrão:
artemis/artemis
Solução de problemas
Problemas comuns
- Conexão recusada: verifique se a AtiveMQ Artemis está em execução e se o aceitador STOMP está configurado.
- Falha de autenticação: verifique o nome de usuário/senha tanto na configuração do agente quanto no arquivo
env.php
. - Falha no handshake de SSL: verifique a configuração e os certificados SSL.
Verificar conexão STOMP
Testar conexão STOMP usando telnet:
telnet localhost 61613
Você deve ver uma conexão estabelecida. Para testar com um comando STOMP:
# Test basic STOMP connection
echo -e "CONNECT\nhost:localhost\n\n\x00" | telnet localhost 61613
A saída esperada deve mostrar a conexão estabelecida e a resposta do protocolo STOMP.
Iniciar os consumidores da fila de mensagens
Depois de conectar o Adobe Commerce e o AtiveMQ Artemis, você deve iniciar os consumidores da fila de mensagens. Consulte Configurar filas de mensagens para obter detalhes.