apache / rocketmq-spring

Apache RocketMQ Spring Integration
https://rocketmq.apache.org/
Apache License 2.0
2.09k stars 894 forks source link

About in spring-boot:3.2.3 and rocketmq-spring-boot-starter:2.3.0 at integration use `messageModel = MessageModel.CLUSTERING` experiment result. #643

Closed anigkus closed 4 months ago

anigkus commented 6 months ago

rocketmq: name-server: 127.0.0.1:9876 producer: group: PRODUCER_GROUP_MANAGER # Default: none send-message-timeout: 10000 # Default: 3000s

import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.apache.rocketmq.spring.core.RocketMQPushConsumerLifecycleListener; import org.springframework.stereotype.Component;

@Component @Slf4j @RocketMQMessageListener(topic = "TOPIC_TEST", consumerGroup = "SPRING_TOPIC_CONSUMER", messageModel = MessageModel.CLUSTERING) public class StringConsumer1 implements RocketMQListener, RocketMQPushConsumerLifecycleListener {

@Override
public void onMessage(String message) {
    log.info("------- StringConsumer1 received: {}", message);
}

@Override
public void prepareStart(DefaultMQPushConsumer defaultMQPushConsumer) {
    defaultMQPushConsumer.setInstanceName("consumer1");
}

}

import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.messaging.support.GenericMessage; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController @Slf4j public class TestController { @Resource //@Autowired private RocketMQTemplate rocketMQTemplate;

@GetMapping("/msg")
public void msg() {
    rocketMQTemplate.send("TOPIC_TEST", new GenericMessage<String>(
            "Hello async msg!")); //async send string
    SendResult sendResult = rocketMQTemplate.syncSend("TOPIC_TEST", "Hello sync msg!");   //sync send
    // string
    log.info("syncSend to topic {} sendResult={}", "TOPIC_TEST", sendResult);
}

}


# pom.xml
```xml
<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter -->
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.3.0</version>
    <exclusions>
                  <!--although have vulnerability, but must not exclusion this `commons-collections`,  otherwise confused. -->
                   <!-- <exclusion>
                        <groupId>commons-collections</groupId>
                        <artifactId>commons-collections</artifactId>
                    </exclusion>-->
                   <!-- <exclusion>
                        <groupId>com.alibaba</groupId>
                        <artifactId>fastjson</artifactId>
                    </exclusion>-->
                </exclusions>
</dependency>