This is an automated email from the ASF dual-hosted git repository.
aaronai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
The following commit(s) were added to refs/heads/master by this push:
new c934401 Java: add more code example (#33)
c934401 is described below
commit c93440150f98d47d08ed4be4af980cafc9798a1a
Author: Aaron Ai <[email protected]>
AuthorDate: Thu Jul 7 14:43:40 2022 +0800
Java: add more code example (#33)
---
.../client/java/impl/producer/ProducerImpl.java | 3 +
java/example.md | 76 ++++++++++++++++++++--
2 files changed, 75 insertions(+), 4 deletions(-)
diff --git
a/java/client/src/main/java/org/apache/rocketmq/client/java/impl/producer/ProducerImpl.java
b/java/client/src/main/java/org/apache/rocketmq/client/java/impl/producer/ProducerImpl.java
index 427d318..461c9b8 100644
---
a/java/client/src/main/java/org/apache/rocketmq/client/java/impl/producer/ProducerImpl.java
+++
b/java/client/src/main/java/org/apache/rocketmq/client/java/impl/producer/ProducerImpl.java
@@ -17,6 +17,8 @@
package org.apache.rocketmq.client.java.impl.producer;
+import static com.google.common.base.Preconditions.checkNotNull;
+
import apache.rocketmq.v2.Code;
import apache.rocketmq.v2.EndTransactionRequest;
import apache.rocketmq.v2.EndTransactionResponse;
@@ -240,6 +242,7 @@ class ProducerImpl extends ClientImpl implements Producer {
*/
@Override
public Transaction beginTransaction() {
+ checkNotNull(checker, "Transaction checker should not be null");
if (!this.isRunning()) {
LOGGER.error("Unable to begin a transaction because producer is
not running, state={}, clientId={}",
this.state(), clientId);
diff --git a/java/example.md b/java/example.md
index ad48d70..9f0683a 100644
--- a/java/example.md
+++ b/java/example.md
@@ -14,12 +14,17 @@ ClientConfiguration clientConfiguration =
ClientConfiguration.newBuilder()
.setCredentialProvider(staticSessionCredentialsProvider)
.build();
```
+
## Producer
+There are examples for 4 types of message.
+
+### Publish NORMAL Message
+
```java
// Build your message.
final Message message = provider.newMessageBuilder()
- .setTopic(topic)
+ .setTopic(normalTopic)
.setBody(body)
.setTag(tag)
.build();
@@ -28,9 +33,72 @@ Producer producer = provider.newProducerBuilder()
.setClientConfiguration(clientConfiguration)
.setTopics(topic)
.build();
-for (int i = 0; i < 1024; i++) {
- final SendReceipt sendReceipt = producer.send(message);
-}
+final SendReceipt sendReceipt = producer.send(message);
+// Close it when you don't need the producer anymore.
+producer.close();
+```
+
+### Publish FIFO Message
+
+```java
+// Build your message.
+final Message message = provider.newMessageBuilder()
+ .setTopic(fifoTopic)
+ .setBody(body)
+ // Set the message group for FIFO message.
+ .setMessageGroup(messageGroup)
+ .setTag(tag)
+ .build();
+// Build your producer.
+Producer producer = provider.newProducerBuilder()
+ .setClientConfiguration(clientConfiguration)
+ .setTopics(topic)
+ .build();
+final SendReceipt sendReceipt = producer.send(message);
+// Close it when you don't need the producer anymore.
+producer.close();
+```
+
+### Publish DELAY Message
+
+```java
+// Build your message.
+final Message message = provider.newMessageBuilder()
+ .setTopic(delayTopic)
+ .setBody(body)
+ // Set the delivery timestamp to 3 seconds later (Time unit: milliseconds).
+ .setDeliveryTimestamp(System.currentTimeMillis() + 3 * 1000)
+ .setTag(tag)
+ .build();
+// Build your producer.
+Producer producer = provider.newProducerBuilder()
+ .setClientConfiguration(clientConfiguration)
+ .setTopics(topic)
+ .build();
+final SendReceipt sendReceipt = producer.send(message);
+// Close it when you don't need the producer anymore.
+producer.close();
+```
+
+### Publish TRANSACTIONAL Message
+
+```java
+// Build your message.
+final Message message = provider.newMessageBuilder()
+ .setTopic(transactionalTopic)
+ .setBody(body)
+ .setTag(tag)
+ .build();
+// Build your producer.
+Producer producer = provider.newProducerBuilder()
+ .setClientConfiguration(clientConfiguration)
+ .setTopics(transactionalTopic)
+ // Set transactional checker.
+ .setTransactionChecker(messageView -> TransactionResolution.COMMIT)
+ .build();
+Transaction transaction = producer.beginTransaction();
+SendReceipt receipt = producer.send(message, transaction);
+transaction.commit();
// Close it when you don't need the producer anymore.
producer.close();
```