Todos os produtos
Search
Central de documentação

:Notas de versão do SDK para Java

Última atualização: Jul 04, 2026

Este tópico descreve as notas de versão do SDK de cliente TCP para Java 2.x.x.Final, incluindo observações de uso, informações de versão, requisitos de ambiente e alterações de recursos.

Observações de uso

  • Atualize o SDK de cliente TCP para Java para a versão V2.x.x.Final apenas nas seguintes regiões: China (Hangzhou), China (Qingdao), China (Pequim), China (Zhangjiakou), China (Hohhot), China (Shenzhen), China (Chengdu), China (Hong Kong), Alemanha (Frankfurt) e Indonésia (Jacarta). Não atualize o SDK de cliente TCP para Java para a versão V2.x.x.Final em outras regiões. Caso contrário, você não conseguirá usar o SDK para se conectar ao ApsaraMQ for RocketMQ.

  • Use o SDK de cliente TCP para Java 2.x.x.Final para acessar o ApsaraMQ for RocketMQ exclusivamente em virtual private clouds (VPCs).

    Se você usa uma instância existente do ApsaraMQ for RocketMQ com acesso pela rede clássica, não atualize o SDK de cliente TCP para Java para a versão 2.x.x.Final. A atualização impede o acesso à instância do ApsaraMQ for RocketMQ.

  • Use o SDK de cliente TCP para Java 2.x.x.Final para acessar apenas instâncias que contêm namespaces. Se a sua instância não tiver um namespace, não atualize o SDK de cliente TCP para Java para a versão 2.x.x.Final.

    Todas as instâncias do ApsaraMQ for RocketMQ 5.x incluem namespaces por padrão. Para instâncias do ApsaraMQ for RocketMQ 4.x, verifique a existência de um namespace na seção Basic Information da página Instance Details no console do ApsaraMQ for RocketMQ.

Informações da versão

Data de lançamento

Versão

Link para baixe

23/02/2023

2.0.5.Final

ons-client-2.0.5.Final

17/08/2022

2.0.3.Final

ons-client-2.0.3.Final

16/06/2022

2.0.2.Final

ons-client-2.0.2.Final

29/11/2021

2.0.1.Final

ons-client-2.0.1.Final

18/10/2021

2.0.0.Final

ons-client-2.0.0.Final

Requisitos de ambiente

Para usar o SDK para Java V2.x.x, utilize um Java Development Kit (JDK) compatível com Java 8 ou superior.

Alterações de recursos na V2.0.5

Recurso otimizado

Adicionado suporte a logs assíncronos.

Problemas corrigidos

  • Corrigida a impossibilidade de especificar o tempo de espera para consumo em lote.

  • Corrigidas vulnerabilidades de segurança específicas.

Alterações de recursos na V2.0.3

Fixed issue

Corrigida a limitação que impedia o aumento do número de threads em um pool de threads para valores superiores a 32 em versões mais recentes do JDK.

Alterações de recursos na V2.0.2

Fixed issue

Corrigido um possível deadlock durante o envio de mensagens.

Alterações de recursos na V2.0.1

Message trace

Os resultados da consulta de rastreamento agora retornam mais dados.

Alterações de recursos na V2.0.0

Ordered message

O valor padrão do parâmetro MaxReconsumeTimes mudou de Integer.MAX para 16. Esse parâmetro define o número máximo de tentativas para mensagens ordenadas. Se o consumidor ainda falhar após atingir esse limite, a mensagem será enviada para a fila de mensagens mortas (dead-letter queue). Altere o valor de MaxReconsumeTimes para modificar o limite de retentativas.

Transactional message

Quando o produtor envia mensagens, o sistema lança uma exceção se a classe LocalTransactionExecutor for nula. Versões anteriores não geravam exceção nesse cenário.

Broadcasting consumption

No modo de consumo broadcasting, chame a operação offsetStore para definir o offset inicial do consumidor. Sem essa especificação, o consumo começa a partir do offset mais recente, mantendo a compatibilidade com versões anteriores.

Código de exemplo:

public class BroadcastingConsumerExample {
    public static void main(String[] args) throws InterruptedException {
        Properties properties = new Properties();

        properties.put(PropertyKeyConst.GROUP_ID, "MyGroupId");
        properties.put(PropertyKeyConst.AccessKey, "MyAccessKey");
        properties.put(PropertyKeyConst.SecretKey, "MySecretKey");
        // The TCP endpoint. You can obtain the endpoint in the TCP Endpoint section of the Instance Details page in the ApsaraMQ for RocketMQ console. 
        properties.put(PropertyKeyConst.NAMESRV_ADDR, "XXXX");
        // You can obtain the consumer offset by calling the offsetStore operations only in broadcasting consumption mode. 
        properties.put(PropertyKeyConst.MessageModel, MessageModel.BROADCASTING);

        Consumer consumer = ONSFactory.createConsumer(properties);
        // The frequency of calls for the AbstractOffsetStore method. The value 1 specifies that the system calls the AbstractOffsetStore method every second to set a persistent offset. 
        OffsetStore offsetStore = new AbstractOffsetStore(1) {
            @Override
            public Map<TopicPartition, Long> loadOffset() {
            // The logic that is used to obtain the offset from an external storage system. 
            }

            @Override
            public void persistOffset(Map<TopicPartition, Long> offsetTable) {
            // The logic that is used to persist the offset to an external storage system. 
            }
        };
        offsetStore.start();
        consumer.setOffsetStore(offsetStore);

        consumer.subscribe("testBroadcastingTopic", "TagA", new MessageListener() {
            @Override
            public Action consume(Message message, ConsumeContext context) {
                // The logic that is used to consume messages. 
                return Action.CommitMessage;
            }
        });

        consumer.start();
        Thread.sleep(100000);
        consumer.shutdown();
        offsetStore.shutdown();
    }
}

Consumption in Push mode

  • Não há suporte para consumo em lote de mensagens normais.

  • O sistema lança uma exceção durante a criação do consumidor se o número de threads de consumo estiver fora do intervalo válido de 1 a 1.000.

  • Adicionado recurso de limitação de consumo. Configure essa funcionalidade para restringir as taxas de consumo de mensagens e evitar exceções na aplicação causadas por picos repentinos nos clientes consumidores. O código abaixo demonstra como definir uma taxa personalizada.

    Nota

    A limitação de consumo não se aplica às retentativas de mensagens ordenadas.

    public class RateLimitConsumerExample {
        public static void main(String[] args) throws InterruptedException {
            Properties properties = new Properties();
    
            properties.put(PropertyKeyConst.GROUP_ID, "MyGroupId");
            properties.put(PropertyKeyConst.AccessKey, "MyAccessKey");
            properties.put(PropertyKeyConst.SecretKey, "MySecretKey");
            // The TCP endpoint. You can obtain the endpoint in the TCP Endpoint section of the Instance Details page in the ApsaraMQ for RocketMQ console. 
            properties.put(PropertyKeyConst.NAMESRV_ADDR, "XXX");
    
            Consumer consumer = ONSFactory.createConsumer(properties);
    
            // Specify the message consumption rate in testTopicA. In this example, the consumer client can consume only 10 messages per second. 
            consumer.rateLimit("testTopicA", 10);
            consumer.subscribe("testTopic", "TagA", new MessageListener() {
                @Override
                public Action consume(Message message, ConsumeContext context) {
                    // The logic that is used to consume messages. 
                    return Action.CommitMessage;
                }
            });
    
            consumer.start();
            Thread.sleep(100000);
            consumer.shutdown();
        }
    }

Consumption in Pull mode

Não há suporte para consumo no modo Pull.

Log configuration

  • O caminho padrão de log mudou de ~/logs/ons.log para ~/logs/ons/ons-client.log.

  • Os níveis de log agora seguem o padrão do framework logback, com a adição dos níveis OFF, TRACE e ALL. As versões anteriores suportavam apenas ERROR, WARN, INFO e DEBUG.

  • Variáveis de ambiente agora são aceitas para configurar parâmetros de log, expandindo o suporte anterior limitado a -D.

Client creation

Especificar um endpoint inválido gera uma exceção ao criar um produtor ou consumidor.

Message trace

Ao enviar e receber mensagens com a versão mais recente do SDK, os seguintes parâmetros passam a constar no resultado da consulta de rastreamento.

Parâmetro

Descrição

AccessKey

AccessKey ID da sua conta Alibaba Cloud ou usuário RAM. Usado para verificação de identidade ao acessar recursos do ApsaraMQ for RocketMQ via SDK ou chamada de API.

Arrival at server

Momento em que a mensagem chegou ao servidor do ApsaraMQ for RocketMQ.

Preset DeliverAt

Horário previsto para entrega de uma mensagem agendada.

Actual AvailableAt

Término do temporizador de uma mensagem agendada, indicando quando ela ficou disponível para consumo.

Available Time

Instante em que a mensagem tornou-se disponível para consumo.

Commit/Rollback time

Horário de confirmação (commit) ou reversão (rollback) da mensagem transacional.

Arrive at Consumer At

Momento de chegada da mensagem ao cliente consumidor.

Wait Duration before Processing

Tempo decorrido entre a chegada da mensagem no consumidor e a alocação de thread e recursos pelo pool para processamento.

Problemas corrigidos na V2.0.0

Corrigido o seguinte problema: chamadas múltiplas à operação updateCredential em curto período causavam falha na autorização entre contas para funções RAM via Security Token Service (STS). Isso ocorria devido à falta de atomicidade na atualização simultânea de AccessKey ID, AccessKey secret e STS token.

Para exemplos de código SDK sobre autorização STS, consulte Etapa 2: Acessar recursos entre contas Alibaba Cloud.