prefácio
Acredito que muitos amigos foram torturados por vários relatórios de erro ao ler este artigo. Este artigo irá ajudá-lo com essas armadilhas!
O ambiente de instalação exigido pelo RocketMQ
1) JDK1.8+= , se for inferior a 1.8, haverá um aviso sobre a versão inferior do JDK (através do comando java -version version)
2) Maven3.2+= ( verifique a versão pelo comando mvn -v )
3) Sistema operacional Linux de 64 bits ( visualize através de uname-a ou uname -r ou cat /proc/version , etc.)
4) Fortemente recomendado: recomenda-se que o caminho de instalação seja um caminho sem espaços , como /usr/src ou /opt/local, etc.
Este ambiente de instalação é muito importante, caso contrário, você pisará em alguns buracos desnecessários! ! !
1. Solução de relatórios de erros
Como o site oficial possui as etapas de instalação do RocketMQ , este artigo foca nas soluções para vários relatórios de erros , com etapas detalhadas para download e instalação!
Lembrete: Se você não se importa com esses erros , pode pular diretamente e ir para as etapas de instalação!
1.1 Erro [ERROR] mvn <args> -rf :rocketmq-store/broker , etc. ao compilar
O comando de compilação oficial dado é:
mvn -Prelease-all -DskipTests clean install -U #Sempre relatar erros do rocketmq-store ou do rocketmq-broker
Adicione o parâmetro -Dcheckstyle.skip para ignorar a verificação no comando :
mvn -Prelease-all -DskipTests -Dcheckstyle.skip clean install -U
Lembrete: este erro não é causado pela versão do jdk ou da versão do maven . O motivo específico é desconhecido no momento. Para solucionar esse erro, clique para ver os detalhes .
1.2 Erro: Não foi possível localizar ou carregar a classe principal org.apache.rocketmq.namesrv.NamesrvStartup ao iniciar mqnamesrv
O motivo do erro: a posição onde você executa o comando rocketmq está errada, a versão rocketmq5.0 é usada como exemplo
Caminho de descompactação /usr/src/rocketmq-all-5.0.0-source-release
caminho de execução do comando, deve ser
/usr/src/rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/
E o caminho de erro do seu comando de execução atual pode ser
/usr/src/rocketmq-all-5.0.0-source-release
ou /usr/src/rocketmq-all-5.0.0-source-release/distribution
Nota: Depois de executar o script de acordo com este esquema, este erro ainda é relatado. É altamente recomendável que o comando rm -rf limpe completamente o diretório de descompactação, descompacte-o novamente e recompile-o!
Erro 3: Um monte de dicas sobre memória ou OutOfMemory, erro = 'Não é possível alocar memória' (errno = 12)
Motivo do erro: A configuração padrão no pacote de instalação precisa consumir muita memória. Geralmente rodamos em uma máquina virtual local, então precisamos modificar manualmente esses poucos arquivos sobre configuração de memória!
runserver.sh, runbroker.sh, ferramentas.sh
Onde estão localizados esses arquivos:
cd /usr/src/rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/bin
Nota: O processo de modificação específico é descrito em detalhes em 2.5 das etapas de instalação a seguir (para evitar que o artigo fique muito pesado)!
lembrete especial:
Se os três erros acima forem tratados de acordo com a solução fornecida neste artigo, o erro ainda será relatado. É altamente recomendável excluir o diretório de descompactação, descompactá-lo novamente e reconfigurar! !
Comando de exclusão em cascata: rm -rf /usr/src/rocketmq-all-5.0.0-source-release/
¥¥ Evite esses três buracos e você pode basicamente instalar e executar a versão autônoma do RocketMQ sem problemas. As etapas de instalação e configuração são apresentadas em detalhes abaixo. ¥¥
2. Baixe e instale as etapas
2.1 Entre no site oficial e baixe o pacote de instalação do RocketMQ5.0
Download da versão histórica, clique para entrar
Como mostrado na figura acima, clique aqui para entrar na interface de download
Conforme mostra a figura acima, após clicar no link de download , entrará automaticamente no download.
Endereço de download: https://dlcdn.apache.org/rocketmq/5.0.0/rocketmq-all-5.0.0-source-release.zip
2.2 Carregar o diretório especificado do ambiente Linux
dicas amáveis:
Primeiro, use o comando cd para alternar para o local de armazenamento do pacote de instalação do software, como mypacket no diretório raiz para gerenciamento unificado
2.2.1) Se você estiver usando o xshell, conforme mostrado abaixo
2.2.2) Se você estiver usando o FinalShell, conforme mostrado abaixo
2.3 Descompacte no diretório especificado e compile
Veja a descompactação e compilação de documentos oficiais
De acordo com o prompt oficial, o comando otimizado é o seguinte:
cd # mude para o diretório raiz
cd mypackage # Mude para o diretório de upload do pacote de instalação
descompacte rocketmq-all-5.0.0-source-release.zip -d /usr/src # Descompacte para o local especificado
cd rocketmq-all-5.0.0-source-release # Mude para o diretório de descompactação
mvn -Prelease-all - DskipTests - Dcheckstyle.skip clean install -U #A execução deste comando requer que o maven seja previamente configurado. Após a execução do comando, a pasta de destino será gerada automaticamente no diretório atual (a execução deste comando levará pelo menos 5 minutos, aguarde pacientemente)
$ cd Distribution/target/rocketmq-5.0.0/rocketmq-5.0.0 #Após a compilação bem-sucedida do mvn, você pode ver o diretório
dicas amáveis:
1) Ao compilar com o comando mvn, você precisa instalar e configurar a variável de ambiente JAVA e a variável de ambiente Maven com antecedência , caso contrário, o comando mvn não pode ser usado.
2) O comando oficial de compilação mvn pode relatar um erro, e o parâmetro -Dcheckstyle.skip precisa ser adicionado nesta base para ignorar a verificação.
A interface que você vê após a compilação bem-sucedida:
Interface de sucesso de compilação do CentOS6.5
Interface de sucesso da compilação do CentOS7.9
Conforme mostrado na figura abaixo, após a compilação ser bem-sucedida, você pode ver o diretório de destino no diretório de distribuição
2.4 Configurando as variáveis de ambiente do RocketMQ
Copie o caminho pwd na figura (o /bin no final do caminho é opcional)
vim /etc/profile
export ROCKETMQ_HOME= /usr/src/rocketmq-all-5.0.0-source-release/distribution /target/rocketmq-5.0.0/rocketmq-5.0.0
export PATH=$PATH:$ROCKETMQ_HOME/bin
Observação: ROCKETMQ_HOME é o diretório descompactado + compilado, não o diretório raiz descompactado! !
source /etc/profile # 使配置文件重新生效
2.5 Entre no diretório deep bin compilado e modifique runserver.sh e runbroker.sh respectivamente
Aviso: Modifique estas configurações, pois caso não as modifique, será reportado um erro de memória, e será difícil iniciar o RocketMQ normalmente, o erro é mostrado na figura abaixo.
Vamos modificar essas configurações juntos!
cd /usr/src/rocketmq-all-5.0.0-source-release/ && ls
cd distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/ && ls
cd bin && ls
dicas amáveis:
O teste da máquina virtual local precisa ser modificado (caso contrário, pode aparecer uma mensagem de erro Out of Memory Error ), se for um ambiente de produção, não apenas não ajuste o tamanho para baixo, mas também precisa aumentar o tamanho de acordo com a demanda ! ! !
2.5.1 ) Modifique o uso de memória de runserver.sh
Dica: Pressione Esc, o foco é bloqueado na linha a ser editada, pressione 1yy para copiar uma linha, pressione p para colar e pressione i para entrar na edição.
vim runserver.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
2.5.2 ) Modifique o uso de memória de runbroker.sh
vim runbroker.sh
#JAVA_OPT="${JAVA_OPT} -servidor -Xms8g -Xmx8g"
JAVA_OPT="${JAVA_OPT} -servidor -Xms256m -Xmx256m"
Modifique esta parte primeiro, conforme mostrado na figura abaixo, se você continuar relatando problemas de estouro de memória, continue a modificar
#JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=1g"
2.5.3 ) Modifique o uso de memória de tools.sh ( Entenda, não modificado ainda )
Observação: se você modificar os dois primeiros, nenhuma exceção de estouro de memória será relatada e não será necessário modificar o uso de memória em tools.sh.
vim tools.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
Nota: O acima é o parâmetro de memória padrão 1g , que pode ser ajustado para 256m conforme necessário
3. Inicie e feche o serviço RocketMQ
Perceber:
O comando de inicialização usa o comando sh no diretório bin compilado, não o comando /distribution/bin sh descompactado.
/usr/src/rocketmq-all-5.0.0-source-release/ Distribution/target /rocketmq-5.0.0/rocketmq-5.0.0/ bin
3.1 iniciar NameServer
3.1.1) Método 1: Iniciar o serviço em primeiro plano
jps #查看已启动的java服务
cd /usr/src/rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/ && ls
sh bin/mqnamesrv # 前台运行,便于查看报错
CentOS6.5 inicia interface com sucesso
CentOS7.9 inicia a interface com sucesso
Depois que a inicialização for bem-sucedida, você pode tentar Ctrl+c para interromper o serviço e, em seguida, iniciá-lo em segundo plano
3.1.2) Método 2: Iniciar o serviço em segundo plano
nohup sh bin/mqnamesrv & #官网提供的启动方式
3.1.3) Verifique o log de inicialização do NameServer
tail -f ~/logs/rocketmqlogs/namesrv.log
conectar host remoto[192.168.31.128:9876] com sucesso, AbstractBootstrap$PendingRegistrationPromise@73e937cf(success)
3.2 Corretora Inicial
1) Inicie o corretor em segundo plano
sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &
2) Veja o log de inicialização do corretor
tail -f ~/logs/rocketmqlogs/broker.log
Se a inicialização for bem-sucedida, o log conterá os seguintes logs:
O corretor [%s, 192.168.31.128:10911] inicializou com sucesso...
3.3 Teste de envio/recebimento de mensagens
3.3.1) Usar tools.sh para enviar mensagens
export NAMESRV_ADDR=localhost:9876 #NAMESRV_ADDR环境变量配置
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
Você verá muitos: SendResult [sendStatus=SEND_OK, msgId= ...
As figuras a seguir são os resultados da execução do CentOS6.5 e do CentOS7.9, respectivamente
3.3.2) Usar tools.sh para receber mensagens
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
Você verá muitos: ConsumeMessageThread_%d Receber novas mensagens: [MessageExt...
Se o log acima puder ser impresso corretamente, isso significa que a implantação do RocketMQ com um clique foi bem-sucedida!
3.4 O aplicativo Java acessa o servidor RocketMQ e a porta 9876 do firewall precisa ser aberta
firewall-cmd --zone=public --add-port=9876/tcp --permanent #Abrir porta 9876
firewall-cmd --reload #Reiniciar firewall
firewall-cmd --zone=public --list-ports #Ver porta aberta
3.5 Fechar NameServer e Broker
Encerre o broker e o namesrv por meio do comando sh bin/mqshutdown, respectivamente
> sh bin/mqshutdown broker
O mqbroker(36695) está em execução...
Envie a solicitação de desligamento para mqbroker(36695) OK> sh bin/mqshutdown namesrv
O mqnamesrv(36664) está em execução...
Envie a solicitação de desligamento para mqnamesrv(36664) OK
4. Expansão
Comandos Comuns do RocketMQ
Visualize o status do cluster./bin//mqadmin clusterList -n 127.0.0.1:9876
Visualize o status do broker./bin/mqadmin brokerStatus -n 127.0.0.1:9876 -b 172.20.1.138:10911
Visualize a lista de tópicos./bin/mqadmin topicList - n 127.0.0.1:9876
Exibir status do tópico./bin/mqadmin topicStatus -n 127.0.0.1:9876 -t MyTopic (mude para o tópico que deseja consultar)
Exibir roteamento do tópico./bin/mqadmin topicRoute -n 127.0.0.1: 9876 - t MyTopic
Resumir
Este artigo apresenta principalmente a instalação e configuração do RocketMQ5.0, concentra-se nos erros encontrados durante o processo de instalação e suas soluções e fornece alguma referência ou inspiração para os retardatários.
Resumindo, se o serviço ainda não puder ser iniciado normalmente de acordo com as etapas acima, exclua-o completamente com rm -rf , descompacte-o, compile-o e configure-o novamente.
Epílogo
Cada link neste artigo foi testado repetidamente e testes pessoais estão disponíveis. No entanto, o RocketMQ é um grande ponto de conhecimento e algumas soluções anormais podem não ser cobertas. Se encontradas posteriormente, serão atualizadas uma após a outra.
Se você acha que não é ruim, seja bem-vindo para curtir e coletar ou deixar uma mensagem!