Message Queue for Apache RocketMQ released an upgraded version for the TCP client SDK for Java and the TCP client SDK for C++ on October 18, 2021. In this release, the major versions of the TCP client SDKs are upgraded. This topic describes the SDK version information, the regions that support the upgrade, and the feature changes.

SDK version information

The following table lists the version information about the upgraded SDKs.
Protocol Programming language Version
TCP Java V2.x.x.Final
C++ V3.x.x

Regions

You can upgrade your TCP client SDK for Java to V2.x.x.Final or your TCP client SDK for C ++ to V3.x.x only in the following regions. The upgraded SDKs are not supported in other regions.
  • China (Chengdu)
  • China (Qingdao)
  • China (Shenzhen)
Notice To ensure that you can connect to Message Queue for Apache RocketMQ in other regions, do not upgrade your TCP client SDK for Java to V2.x.x.Final or your TCP client SDK for C ++ to V3.x.x. If you need to upgrade the major version of your SDK in these regions, submit a ticket to contact Alibaba Cloud Technical Support.

Feature changes

The following table describes the differences between the supported features before and after you upgrade the major version of your TCP client SDK.

Feature Version

SDK for Java: V1.x.x.Final

SDK for C++: V2.x.x or V1.x.x

Version

SDK for Java: V2.x.x.Final

SDK for C++: V3.x.x

Load balancing policy

Load balancing is performed based on queues.

If this policy is used, the following issues may occur:
  • If the number of consumers is greater than the number of queues, some consumers cannot receive messages.
  • Some consumers become abnormal or respond slowly, and other consumers remain idle but cannot consume messages. This may cause messages to be accumulated.

Load balancing is performed based on messages. This makes the message loads more balanced.

This helps prevent idle consumers or message accumulation that may occur due to the queue-based load balancing policy.

Public endpoint Instances can be accessed by using public TCP endpoints only in the Internet region. In other regions, instances can be accessed only by using private endpoints. An instance supports multiple endpoints. You can connect to an instance by using a public TCP endpoint or a private endpoint.
Dashboard Only a small number of metrics are supported, such as the number of received messages, the number of sent messages, and the number of accumulated messages.
  • Metrics related to message accumulation are added. This can help you identify issues in a more efficient manner.
  • Metrics such as durations and success rates are added to monitor the entire process from message production to message consumption.
The following metrics are added:
  • Producer
    • Send RT: the amount of time that is used to send a message to a topic.
    • Send API call success rate: the success rate of message production for a topic.
  • Consumer
    • Avg consumption success rate: the success rate of message consumption in a specified instance.
    • Inflight messages: the number of messages that are being processed on the consumer client and for which no success response is returned.
    • Ready messages: the number of messages that are ready on the Message Queue for Apache RocketMQ broker and can be consumed by consumers. This metric reflects the number of messages that are not processed by consumers.
    • Ready message queue time: the time offset between the current point in time and the point in time when the earliest message is ready. This metric reflects the delay period for ready messages before they are processed. This metric is important for time-sensitive workloads.
    • Message processing time: the amount of time that is used to consume a message in a group.
    • Wait to process time: the duration between the time when a consumer in a group receives a message and the time when the consumer starts to consume the message.
    • Consumption messages each protocol: the proportion of all messages that are consumed over each type of protocol.
  • Instance top 20 info
    • Ready message queue time per GroupID: the top 20 groups with the longest queuing duration for ready messages.
    • Consumer lag per GroupID: the top 20 groups for which the largest number of messages are accumulated.
    • Inflight messages per GroupID: the top 20 groups with the largest number of messages that are being processed.
    • Message processing time per GroupID: the top 20 groups for which the longest period of time is required to consume messages.
    • Message wait time per GroupID: the top 20 groups with the longest duration between the time when a consumer in a group receives a message and the time when the consumer starts to consume the message.
    • Send API call failure rate per Topic: the top 20 topics with the highest failure rate during message production.
    • Consumption failure rate per GroupID: the top 20 groups with the highest failure rate during message consumption.
Message tracing Traces of non-normal messages cannot be queried. Data related to message accumulation is not included in trace query results.
  • Data related to message consumption is included in trace query results. Message traces can be queried by using filter conditions such as exceptions, failures, and durations.
  • Traces of scheduled messages, delayed messages, and transactional messages can be queried.
  • OpenTelemetry is used throughout the entire process of a message trace query.
The following parameters are added in trace query results:
Parameter Description
AccessKey The AccessKey ID of your Alibaba Cloud account or Resource Access Management (RAM) user. AccessKey IDs are used to verify user identities. When you use an SDK or call API operations to call Message Queue for Apache RocketMQ resources, the AccessKey ID is required for identity verification.
Arrive at Server At The time when a message arrived at a Message Queue for Apache RocketMQ broker.
Scheduled to Be Delivered At The scheduled point in time when a scheduled message can be delivered to consumers.
Delivered At The time when a scheduled message can be delivered to consumers. This value indicates the time when the scheduled message becomes ready for consumption.
Available Time The time when a message becomes ready for consumption.
Committed/Rolled back At The time when a transactional message is committed or rolled back.
Arrive at Consumer At The time when a message arrived at a consumer client.
Wait Duration before Processing The wait duration between the time when a message arrived at a consumer client and the time when the thread pool allocated threads and processing resources for the message.