This is an automated email from the ASF dual-hosted git repository.
jinrongtong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-spring.git
The following commit(s) were added to refs/heads/master by this push:
new 1eb3bed Add default v5 client tag (#771)
1eb3bed is described below
commit 1eb3beddce51abdecd0c3b8cc1c21364b7480860
Author: zhaohai <[email protected]>
AuthorDate: Tue Mar 17 09:55:08 2026 +0800
Add default v5 client tag (#771)
* tag add default
* add SQL92 demo
* delete md
* delete md
* delete md
---
.../springboot/consumer/SQL92FilterConsumer.java | 68 +++++++++
.../producer/SQL92ProducerApplication.java | 162 +++++++++++++++++++++
.../annotation/ExtConsumerResetConfiguration.java | 4 +-
.../client/annotation/RocketMQMessageListener.java | 2 +-
.../client/autoconfigure/RocketMQProperties.java | 2 +-
5 files changed, 234 insertions(+), 4 deletions(-)
diff --git
a/rocketmq-v5-client-spring-boot-samples/rocketmq-v5-client-consume-demo/src/main/java/org/apache/rocketmq/samples/springboot/consumer/SQL92FilterConsumer.java
b/rocketmq-v5-client-spring-boot-samples/rocketmq-v5-client-consume-demo/src/main/java/org/apache/rocketmq/samples/springboot/consumer/SQL92FilterConsumer.java
new file mode 100644
index 0000000..4dceb65
--- /dev/null
+++
b/rocketmq-v5-client-spring-boot-samples/rocketmq-v5-client-consume-demo/src/main/java/org/apache/rocketmq/samples/springboot/consumer/SQL92FilterConsumer.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.rocketmq.samples.springboot.consumer;
+
+import org.apache.rocketmq.client.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.client.api.consumer.ConsumeResult;
+import org.apache.rocketmq.client.api.message.MessageView;
+import org.apache.rocketmq.client.support.RocketMQListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+/**
+ * SQL92 Message Filter Consumer Example
+ *
+ * This consumer uses SQL92 expression to filter messages, consuming only
messages that meet specific conditions:
+ * - type = 'vip': VIP type messages
+ * - amount > 500: Amount greater than 500
+ *
+ * Configuration properties that need to be set in application.properties:
+ * demo.sql92.rocketmq.endpoints=localhost:8081
+ * demo.sql92.rocketmq.topic=orderTopic
+ * demo.sql92.rocketmq.consumer-group=sql92VipConsumerGroup
+ * demo.sql92.rocketmq.tag=(type = 'vip' AND amount > 500)
+ * demo.sql92.rocketmq.filter-expression-type=sql92
+ */
+@Service
+@RocketMQMessageListener(
+ endpoints = "${demo.sql92.rocketmq.endpoints:}",
+ topic = "${demo.sql92.rocketmq.topic:}",
+ consumerGroup = "${demo.sql92.rocketmq.consumer-group:}",
+ tag = "${demo.sql92.rocketmq.tag:}",
+ filterExpressionType =
"${demo.sql92.rocketmq.filter-expression-type:sql92}"
+)
+public class SQL92FilterConsumer implements RocketMQListener {
+
+ private static final Logger log =
LoggerFactory.getLogger(SQL92FilterConsumer.class);
+
+ @Override
+ public ConsumeResult consume(MessageView messageView) {
+ log.info("Received SQL92 filtered message - ID: {}, Topic: {}, Tag:
{}",
+ messageView.getMessageId(),
+ messageView.getTopic(),
+ messageView.getTag().orElse(""));
+
+ // Print message properties
+ log.info("Message properties: {}", messageView.getProperties());
+
+ // Business logic can be added here
+ // For example: parse message content, process orders, etc.
+
+ return ConsumeResult.SUCCESS;
+ }
+}
diff --git
a/rocketmq-v5-client-spring-boot-samples/rocketmq-v5-client-producer-demo/src/main/java/org/apache/rocketmq/samples/springboot/producer/SQL92ProducerApplication.java
b/rocketmq-v5-client-spring-boot-samples/rocketmq-v5-client-producer-demo/src/main/java/org/apache/rocketmq/samples/springboot/producer/SQL92ProducerApplication.java
new file mode 100644
index 0000000..40692cd
--- /dev/null
+++
b/rocketmq-v5-client-spring-boot-samples/rocketmq-v5-client-producer-demo/src/main/java/org/apache/rocketmq/samples/springboot/producer/SQL92ProducerApplication.java
@@ -0,0 +1,162 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.rocketmq.samples.springboot.producer;
+
+import org.apache.rocketmq.client.apis.ClientException;
+import org.apache.rocketmq.client.core.RocketMQClientTemplate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.support.MessageBuilder;
+
+import javax.annotation.Resource;
+
+/**
+ * SQL92 Message Producer Example
+ *
+ * Demonstrates how to send messages with attributes so consumers can use
SQL92 for filtering
+ *
+ * Configuration properties that need to be set in application.properties:
+ * rocketmq.producer.endpoints=localhost:8081
+ * rocketmq.producer.topic=orderTopic
+ * demo.rocketmq.order-topic=orderTopic
+ */
+@SpringBootApplication
+public class SQL92ProducerApplication implements CommandLineRunner {
+
+ private static final Logger log =
LoggerFactory.getLogger(SQL92ProducerApplication.class);
+
+ @Resource
+ private RocketMQClientTemplate rocketMQClientTemplate;
+
+ public static void main(String[] args) {
+ SpringApplication.run(SQL92ProducerApplication.class, args);
+ }
+
+ @Override
+ public void run(String... args) throws ClientException {
+ log.info("Starting to send SQL92 test messages...");
+
+ // Send VIP high-value orders (will be matched by SQL92 filter)
+ sendVipOrder(1L, 600.0, "Beijing");
+ sendVipOrder(2L, 800.0, "Shanghai");
+
+ // Send normal orders (will not be matched by SQL92 filter)
+ sendNormalOrder(3L, 200.0, "Guangzhou");
+ sendNormalOrder(4L, 300.0, "Shenzhen");
+
+ // Send VIP low-value orders (will not be matched by SQL92 filter)
+ sendVipOrder(5L, 100.0, "Hangzhou");
+
+ log.info("All messages have been sent");
+ }
+
+ /**
+ * Send VIP order
+ */
+ private void sendVipOrder(Long orderId, Double amount, String region)
throws ClientException {
+ Order order = new Order();
+ order.setId(orderId);
+ order.setAmount(amount);
+ order.setType("vip");
+ order.setRegion(region);
+
+ Message<?> message = MessageBuilder.withPayload(order)
+ .setHeader("type", "vip")
+ .setHeader("amount", amount)
+ .setHeader("region", region)
+ .build();
+
+ rocketMQClientTemplate.syncSendNormalMessage("orderTopic", message);
+ log.info("VIP order sent - ID: {}, Amount: {}, Region: {}", orderId,
amount, region);
+ }
+
+ /**
+ * Send normal order
+ */
+ private void sendNormalOrder(Long orderId, Double amount, String region)
throws ClientException {
+ Order order = new Order();
+ order.setId(orderId);
+ order.setAmount(amount);
+ order.setType("normal");
+ order.setRegion(region);
+
+ Message<?> message = MessageBuilder.withPayload(order)
+ .setHeader("type", "normal")
+ .setHeader("amount", amount)
+ .setHeader("region", region)
+ .build();
+
+ rocketMQClientTemplate.syncSendNormalMessage("orderTopic", message);
+ log.info("Normal order sent - ID: {}, Amount: {}, Region: {}",
orderId, amount, region);
+ }
+
+ /**
+ * Order entity class
+ */
+ public static class Order {
+ private Long id;
+ private Double amount;
+ private String type;
+ private String region;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Double getAmount() {
+ return amount;
+ }
+
+ public void setAmount(Double amount) {
+ this.amount = amount;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getRegion() {
+ return region;
+ }
+
+ public void setRegion(String region) {
+ this.region = region;
+ }
+
+ @Override
+ public String toString() {
+ return "Order{" +
+ "id=" + id +
+ ", amount=" + amount +
+ ", type='" + type + '\'' +
+ ", region='" + region + '\'' +
+ '}';
+ }
+ }
+}
diff --git
a/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/annotation/ExtConsumerResetConfiguration.java
b/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/annotation/ExtConsumerResetConfiguration.java
index f0b942f..4f7dd2f 100644
---
a/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/annotation/ExtConsumerResetConfiguration.java
+++
b/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/annotation/ExtConsumerResetConfiguration.java
@@ -31,11 +31,11 @@ public @interface ExtConsumerResetConfiguration {
String ACCESS_KEY_PLACEHOLDER = "${rocketmq.simple-consumer.accessKey:}";
String SECRET_KEY_PLACEHOLDER = "${rocketmq.simple-consumer.secretKey:}";
- String TAG_PLACEHOLDER = "${rocketmq.simple-consumer.tag:}";
+ String TAG_PLACEHOLDER = "${rocketmq.simple-consumer.tag:*}";
String TOPIC_PLACEHOLDER = "${rocketmq.simple-consumer.topic:}";
String ENDPOINTS_PLACEHOLDER = "${rocketmq.simple-consumer.endpoints:}";
String CONSUMER_GROUP_PLACEHOLDER =
"${rocketmq.simple-consumer.consumerGroup:}";
- String FILTER_EXPRESSION_TYPE_PLACEHOLDER =
"${rocketmq.simple-consumer.filterExpressionType:}";
+ String FILTER_EXPRESSION_TYPE_PLACEHOLDER =
"${rocketmq.simple-consumer.filterExpressionType:tag}";
/**
* The component name of the Consumer configuration.
diff --git
a/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/annotation/RocketMQMessageListener.java
b/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/annotation/RocketMQMessageListener.java
index 6f0f836..2c9588e 100644
---
a/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/annotation/RocketMQMessageListener.java
+++
b/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/annotation/RocketMQMessageListener.java
@@ -31,7 +31,7 @@ public @interface RocketMQMessageListener {
String SECRET_KEY_PLACEHOLDER = "${rocketmq.push-consumer.secret-key:}";
String ENDPOINTS_PLACEHOLDER = "${rocketmq.push-consumer.endpoints:}";
String TOPIC_PLACEHOLDER = "${rocketmq.push-consumer.topic:}";
- String TAG_PLACEHOLDER = "${rocketmq.push-consumer.tag:}";
+ String TAG_PLACEHOLDER = "${rocketmq.push-consumer.tag:*}";
/**
* The property of "access-key".
diff --git
a/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/autoconfigure/RocketMQProperties.java
b/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/autoconfigure/RocketMQProperties.java
index 8f3d494..38df932 100644
---
a/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/autoconfigure/RocketMQProperties.java
+++
b/rocketmq-v5-client-spring-boot/src/main/java/org/apache/rocketmq/client/autoconfigure/RocketMQProperties.java
@@ -187,7 +187,7 @@ public class RocketMQProperties {
/**
* Tag of consumer.
*/
- private String tag;
+ private String tag = "*";
/**
* Topic name of consumer.