サービスの設定
RocketMQの基本設定を参照してください。
サンプルコード
Maven依存関係の追加
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
完全な依存関係は以下の通りです:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.9</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>rocketMqDemoApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>RocketMqDemoApp</name>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.propertiesファイルの修正
rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=my-group
rocketmq.consumer.topic=test-topic
すべての設定はRocketMQPropertiesのソースコードを参照してください。
プロデューサーの定義
@Component
public class MessageProducer {
@Resource
private RocketMQTemplate template;
public void sendSync(String msg) {
template.convertAndSend("topic-one", msg);
}
public void sendSpringMsg(String msg) {
template.send("topic-one", MessageBuilder.withPayload(msg).build());
}
public void sendAsync(String msg) {
template.asyncSend("topic-one", new PayloadBean(msg), new SendCallback() {
@Override
public void onSuccess(SendResult result) {
System.out.printf("Async Success: %s%n", result);
}
@Override
public void onException(Throwable e) {
System.out.printf("Async Error: %s%n", e);
}
});
}
public void sendOrderly(String msg) {
template.syncSendOrderly("topic-one", MessageBuilder.withPayload(msg).build(), "key");
}
}
コンシューマーの定義
@RocketMQMessageListener(topic = "topic-one", consumerGroup = "my-group")
@Component
public class MessageConsumer implements RocketMQListener<String> {
public void onMessage(String message) {
System.out.println("Received: " + JSON.toJSONString(message));
}
}
コントローラーによる呼び出し
@RestController
public class MessageController {
@Autowired
MessageProducer producer;
@GetMapping("/sendSync")
@ResponseBody
public String sendMessage() {
producer.sendSync("Hello World");
return "OK";
}
}