tencent cloud

Use of Java SDK
Last updated: 2025-07-15 18:32:06
Use of Java SDK
Last updated: 2025-07-15 18:32:06

Overview

TDMQ for RocketMQ supports multiple language SDKs to send and receive different types of messages. This document uses Java SDK calls as an example to introduce the operation process of sending and receiving ordinary messages by connecting to TDMQ for RocketMQ server implementation through the 5.x SDK.

Prerequisites

You have created and prepared the required resources.

Directions:

Step 1: Installing the Java Dependency Library

Incorporate the relevant dependencies in the Java project. A Maven project is used as an example. Add the following dependencies to pom.xml:
<dependencies>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client-java</artifactId>
<version>5.0.5</version>
</dependency>
</dependencies>
Notes:
Note: If you are using Spring Boot, you may encounter a Java dependency conflict with annotations-api. In this case, you can just add an exclusion.
<dependencies>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client-java</artifactId>
<version>5.0.6</version>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>annotations-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

Step 2: Producing Messages

In the created Java project, create a message sending program and run it.
public class NormalMessageSyncProducer {
private static final Logger log = LoggerFactory.getLogger(NormalMessageSyncProducer.class);

private NormalMessageSyncProducer() {
}

public static void main(String[] args) throws ClientException, IOException {
final ClientServiceProvider provider = ClientServiceProvider.loadService();

//Adding ak and sk in the configuration
String accessKey = "yourAccessKey"; //ak
String secretKey = "yourSecretKey"; //sk
SessionCredentialsProvider sessionCredentialsProvider =
new StaticSessionCredentialsProvider(accessKey, secretKey);

// Fill in the access location provided by Tencent Cloud
String endpoints = "rmq-xxx.rocketmq.xxxtencenttdmq.com:8080";
ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
.setEndpoints(endpoints)
.enableSsl(false)
.setCredentialProvider(sessionCredentialsProvider)
.build();
String topic = "yourNormalTopic";
// In most case, you don't need to create too many producers, singleton pattern is recommended.
final Producer producer = provider.newProducerBuilder()
.setClientConfiguration(clientConfiguration)
// Set the topic name(s), which is optional but recommended. It makes producer could prefetch the topic
// route before message publishing.
.setTopics(topic)
// May throw {@link ClientException} if the producer is not initialized.
.build();
// Define your message body.
byte[] body = "This is a normal message for Apache RocketMQ".getBytes(StandardCharsets.UTF_8);
String tag = "yourMessageTagA";
final Message message = provider.newMessageBuilder()
// Set topic for the current message.
.setTopic(topic)
// Message secondary classifier of message besides topic.
.setTag(tag)
// Key(s) of the message, another way to mark message besides message id.
.setKeys("yourMessageKey-1c151062f96e")
.setBody(body)
.build();
try {
final SendReceipt sendReceipt = producer.send(message);
log.info("Send message successfully, messageId={}", sendReceipt.getMessageId());
} catch (Throwable t) {
log.error("Failed to send message", t);
}
// Close the producer when you don't need it anymore.
producer.close();
}
}
Parameter
Description
accessKey
Role key, copied from the AccessKey column on the Cluster Permission page in the console.

secretKey
Role name, copied from the SecretKey column on the Cluster Permission page in the console.
endpoints
Obtain the cluster access address from the access information module on the console cluster basic information page.

topic
Copy the Topic name from the Topic management page in the console.


Step 3: Consuming Messages

In the created Java project, create a subscription standard message program and run it.
Tencent Cloud Message Queue TDMQ RocketMQ 5.x series supports two types of consumer clients: Push Consumer and Simple Consumer. The following example code uses Push Consumer as an example:
public class NormalPushConsumer {
private static final Logger log = LoggerFactory.getLogger(NormalPushConsumer.class);

private NormalPushConsumer() {
}

public static void main(String[] args) throws ClientException, IOException, InterruptedException {
final ClientServiceProvider provider = ClientServiceProvider.loadService();

//Adding ak and sk in the configuration
String accessKey = "yourAccessKey"; //ak
String secretKey = "yourSecretKey"; //sk
SessionCredentialsProvider sessionCredentialsProvider =
new StaticSessionCredentialsProvider(accessKey, secretKey);

// Fill in the access location provided by Tencent Cloud
String endpoints = "rmq-xxx.rocketmq.xxxtencenttdmq.com:8080";
ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
.setEndpoints(endpoints)
.enableSsl(false)
.setCredentialProvider(sessionCredentialsProvider)
.build();
String tag = "*";
FilterExpression filterExpression = new FilterExpression(tag, FilterExpressionType.TAG);
String consumerGroup = "yourConsumerGroup";
String topic = "yourTopic";
// In most case, you don't need to create too many consumers, singleton pattern is recommended.
PushConsumer pushConsumer = provider.newPushConsumerBuilder()
.setClientConfiguration(clientConfiguration)
// Set the consumer group name.
.setConsumerGroup(consumerGroup)
// Set the subscription for the consumer.
.setSubscriptionExpressions(Collections.singletonMap(topic, filterExpression))
.setMessageListener(messageView -> {
// Handle the received message and return consume result.
log.info("Consume message={}", messageView);
return ConsumeResult.SUCCESS;
})
.build();
// Block the main thread, no need for production environment.
Thread.sleep(Long.MAX_VALUE);
// Close the push consumer when you don't need it anymore.
pushConsumer.close();
}
}
Parameter
Description
accessKey
Role key, copied from the AccessKey column on the Cluster Permission page in the console.

secretKey
Role name, copied from the SecretKey column on the Cluster Permission page in the console.
endpoints
Obtain the cluster access address from the access information module on the console cluster basic information page.

consumerGroup
Copy the consumer group name from the Group Management page in the console.

topic
Copy the Topic name from the Topic management page in the console.


Step 4: Viewing Message Details

After sending the completion message, you will get a message ID. You can query the just-sent message, as well as its details and path, in the console under Message Query > Comprehensive Query.


Was this page helpful?
You can also Contact Sales or Submit a Ticket for help.
Yes
No

Feedback