Crie e execute um projeto de teste com o SDK de cliente TCP para Java. O projeto de demonstração inclui exemplos funcionais de cinco tipos de mensagem — normal, ordenada, transacional, agendada e atrasada — em Java, Spring e Spring Boot.
Pré-requisitos
Antes de começar, verifique se você tem:
O IntelliJ IDEA Ultimate Edition ou o Eclipse instalado (os exemplos abaixo usam o IntelliJ IDEA)
O JDK instalado
O projeto de demonstração baixado e descompactado na máquina local (a pasta extraída chama-se
rocketmq-demo-master)Uma instância do ApsaraMQ for RocketMQ com os seguintes recursos criados no console do ApsaraMQ for RocketMQ: instância, tópico, grupo de consumidores, AccessKey ID e AccessKey secret. Para obter instruções, consulte Criar recursos
Configure o projeto de demonstração
Etapa 1: Importe o projeto
Importe os arquivos do projeto de demonstração para o IntelliJ IDEA.
Etapa 2: Atualize a versão do SDK
No arquivo pom.xml, atualize a dependência do SDK de cliente TCP para Java para a versão mais recente. Para consultar as versões disponíveis, veja as Notas de versão.
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>ons-client</artifactId>
<!--Replace with the latest version from the release notes-->
<version>1.8.8.5.Final</version>
</dependency>
Etapa 3: Configure a classe MqConfig
Defina os seguintes campos na classe MqConfig para corresponder aos recursos criados:
public static final String TOPIC = "<your-topic>";
public static final String GROUP_ID = "<your-group-id>";
public static final String ORDER_TOPIC = "<your-order-topic>";
public static final String ORDER_GROUP_ID = "<your-order-group-id>";
public static final String ACCESS_KEY = "<your-access-key>";
public static final String SECRET_KEY = "<your-secret-key>";
public static final String TAG = "<your-message-tag>";
public static final String NAMESRV_ADDR = "<your-tcp-endpoint>";
Substitua os espaços reservados pelos valores reais:
|
Espaço reservado |
Descrição |
Onde encontrar |
|
|
Tópico para mensagens normais e transacionais |
ApsaraMQ for RocketMQ console > sua instância > Topics |
|
|
ID do grupo de consumidores |
ApsaraMQ for RocketMQ console > sua instância > Groups |
|
|
Tópico para mensagens ordenadas |
Mesmo local acima (crie um tópico separado para mensagens ordenadas) |
|
|
Grupo de consumidores para mensagens ordenadas |
Mesmo local acima |
|
|
AccessKey ID da sua conta Alibaba Cloud |
Consulte Criar um par de AccessKey |
|
|
AccessKey secret da sua conta Alibaba Cloud |
Mesma referência acima |
|
|
Tag de mensagem personalizada para filtragem |
Qualquer valor de string |
|
|
Endpoint TCP da sua instância |
Página ApsaraMQ for RocketMQ console > sua instância > Instance Details > seção TCP Endpoint |
Também é possível usar o par de AccessKey de um usuário RAM com permissões no tópico. Para obter detalhes sobre os parâmetros de configuração disponíveis, consulte Métodos e parâmetros .
Etapa 4: Configure o common.xml (apenas Spring e Spring Boot)
Se pretender usar os exemplos do Spring ou Spring Boot, atualize o arquivo common.xml com as informações dos seus recursos:
<props>
<prop key="AccessKey">XXX</prop> <!--Replace with your AccessKey ID-->
<prop key="SecretKey">XXX</prop> <!--Replace with your AccessKey secret-->
<prop key="GROUP_ID">XXX</prop> <!--Replace with your consumer group ID-->
<prop key="Topic">XXX</prop> <!--Replace with your topic-->
<prop key="NAMESRV_ADDR">XXX</prop> <!--Replace with your TCP endpoint-->
</props>
Envie e receba mensagens
O projeto de demonstração executa produtores e consumidores em uma única thread. Em sistemas de produção, execute produtores e consumidores em threads ou hosts separados. Para exemplos multithread, consulte Enviar mensagens usando várias threads.
Execute cada exemplo chamando o método main da classe correspondente.
Envie mensagens
Execute a classe produtora correspondente ao tipo de mensagem e framework:
|
**Tipo de mensagem** |
**Java** |
**Spring** |
**Spring Boot** |
|
Normal |
|
|
|
|
Transacional |
|
|
|
|
Ordenada (FIFO) |
|
|
|
|
Agendada e atrasada |
|
Não suportado |
Não suportado |
Detalhes por tipo de mensagem:
Mensagens transacionais: A classe
LocalTransactionCheckerImplgerencia as verificações de status da transação local. Para conhecer o fluxo completo, consulte Enviar e receber mensagens transacionais.Mensagens ordenadas: O envio e o consumo ocorrem na ordem FIFO (first-in-first-out). Para mais detalhes, consulte Enviar e assinar mensagens ordenadas.
Mensagens agendadas e atrasadas: Por padrão, a classe
MQTimerProducerentrega mensagens após um atraso de 3 segundos. O atraso máximo configurável é de 40 dias. Para mais informações, consulte Enviar e receber mensagens agendadas.
Verifique se as mensagens foram enviadas
Após enviar as mensagens, acesse o console do ApsaraMQ for RocketMQ e consulte as mensagens por tópico. As mensagens enviadas devem aparecer nos resultados.
Receba mensagens
Execute a classe consumidora adequada ao tipo de mensagem e framework:
|
**Tipo de mensagem** |
**Java** |
**Spring** |
**Spring Boot** |
|
Normal |
|
|
|
|
Transacional |
|
|
|
|
Ordenada (FIFO) |
|
|
|
|
Agendada e atrasada |
|
Não suportado |
Não suportado |
A inicialização da classe leva alguns segundos na primeira execução. Esse comportamento é esperado e ocorre apenas uma vez — em produção, as classes são inicializadas somente durante a inicialização da aplicação.
Verifique se as mensagens foram recebidas
Uma entrada de log confirma que o consumidor recebeu a mensagem. Para validar ainda mais, visualize o status dos consumidores no console do ApsaraMQ for RocketMQ. Os consumidores iniciados devem aparecer como online e assinantes do tópico.