Instalação do RocketMQ no Windows para Agendamento Personalizado de Mensagens

Ambiente do Sistema

Sistema Operacional: Windows 10
JDK: versão 11.0.21
RocketMQ: rocketmq-all-5.1.4-bin-release

Passos de Instalação

  1. Baixe o RocketMQ a partir do site oficial: http://rocketmq.apache.org/dowloading/releases/
  2. Extraia o arquivo e crie a variável de ambiente ROCKETMQ_HOME, apontando para o diretório de extração do RocketMQ.
  3. Para o JDK 11, é necessário ajustar as configurações de inicialização. Modifique o arquivo %ROCKETMQ_HOME%\bin\runserver.cmd conforme abaixo:
@echo off
rem Script modificado para compatibilidade com JDK 11
if not exist "%JAVA_HOME%\bin\java.exe" echo Defina a variável JAVA_HOME no ambiente. & EXIT /B 1
set "EXEC_JAVA=%JAVA_HOME%\bin\java.exe"

setlocal

set DIRETORIO_BASE=%~dp0
set DIRETORIO_BASE=%DIRETORIO_BASE:~0,-1%
for %%d in (%DIRETORIO_BASE%) do set DIRETORIO_BASE=%%~dpd

set CAMINHO_CLASSES=.;%DIRETORIO_BASE%conf;%DIRETORIO_BASE%lib\*;%CLASSPATH%

set "OPCOES_JAVA=%OPCOES_JAVA% -server -Xms512m -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
set "OPCOES_JAVA=%OPCOES_JAVA% -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0"
set "OPCOES_JAVA=%OPCOES_JAVA% -verbose:gc -Xloggc:"%USERPROFILE%\rmq_servidor_gc.log" -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
set "OPCOES_JAVA=%OPCOES_JAVA% -XX:-OmitStackTraceInFastThrow"
set "OPCOES_JAVA=%OPCOES_JAVA% -XX:-UseLargePages"
set "OPCOES_JAVA=%OPCOES_JAVA% %OPCOES_EXT% -cp "%CAMINHO_CLASSES%""

"%EXEC_JAVA%" %OPCOES_JAVA% %*

Mdoifique também o arquivo %ROCKETMQ_HOME%\bin\runbroker.cmd:

@echo off
rem Script do broker adaptado para JDK 11
if not exist "%JAVA_HOME%\bin\java.exe" echo Defina a variável JAVA_HOME no ambiente. & EXIT /B 1
set "EXEC_JAVA=%JAVA_HOME%\bin\java.exe"

setlocal

set DIRETORIO_BASE=%~dp0
set DIRETORIO_BASE=%DIRETORIO_BASE:~0,-1%
for %%d in (%DIRETORIO_BASE%) do set DIRETORIO_BASE=%%~dpd

set CAMINHO_CLASSES=.;%DIRETORIO_BASE%conf;%DIRETORIO_BASE%lib\*;%CLASSPATH%

rem Configuração da JVM para o broker
set "OPCOES_JAVA=%OPCOES_JAVA% -server -Xms1g -Xmx1g"
set "OPCOES_JAVA=%OPCOES_JAVA% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
set "OPCOES_JAVA=%OPCOES_JAVA% -verbose:gc -Xlog:gc*:file=%USERPROFILE%/broker_gc.log:time,tags:filecount=5,filesize=30M"
set "OPCOES_JAVA=%OPCOES_JAVA% -XX:-OmitStackTraceInFastThrow"
set "OPCOES_JAVA=%OPCOES_JAVA% -XX:+AlwaysPreTouch"
set "OPCOES_JAVA=%OPCOES_JAVA% -XX:MaxDirectMemorySize=8g"
set "OPCOES_JAVA=%OPCOES_JAVA% -XX:-UseLargePages -XX:-UseBiasedLocking"
set "OPCOES_JAVA=%OPCOES_JAVA% -Drocketmq.client.logUseSlf4j=true"
set "OPCOES_JAVA=%OPCOES_JAVA% %OPCOES_EXT% -cp "%CAMINHO_CLASSES%""

"%EXEC_JAVA%" %OPCOES_JAVA% %*
  1. Inicie os serviços do RocketMQ com os comandos:
start mqnamesrv.cmd
start mqbroker.cmd

Integração com Código

Para usar o RocketMQ em um projeto Spring Boot, adicione a dependência abaixo no seu arquivo pom.xml:

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.3</version>
</dependency>

Configure o arquivo application.yml conforme exemplo:

rocketmq:
  name-server: 127.0.0.1:9876
  producer:
    group: ProdutorPrincipal
    send-message-timeout: 5000
    max-message-size: 8192
    retry-times-when-send-failed: 2
    retry-times-when-send-async-failed: 1
  consumer:
    group: ConsumidorPrincipal
    pull-batch-size: 10

Implementação do Produtor e Consumidor
Para enviar mensagens com agendamento, customize o produtor. No exemplo abaixo, a variável atrasoMilissegundos define o tempo de atraso:

// Exemplo de envio de mensagem agendada
Message msg = new Message("TopicoTeste", "TagExemplo", "Conteúdo da mensagem".getBytes());
long atrasoMilissegundos = 60000; // 60 segundos
msg.setDeliverTimeMs(System.currentTimeMillis() + atrasoMilissegundos);
DefaultMQProducer produtor = new DefaultMQProducer("ProdutorAgendado");
produtor.setNamesrvAddr("127.0.0.1:9876");
produtor.start();
produtor.send(msg);
produtor.shutdown();

No consumidor, implemente um listener para processar as mensagens recebidas. A configuração pode ser fieta via anotações Spring.

Extensão - Console de Gerenicamento

Baixe e instale o console do RocketMQ a partir de: https://rocketmq.apache.org/download para monitorar e analisar o trajeto das mensagens.

Tags: RocketMQ Windows java Spring Boot Apache RocketMQ

Publicado em 7-13 13:03