ホームページ >Java >&#&チュートリアル >RocketMQ は Springboot でメッセージの送受信をどのように実装しますか?
springbootrockermq は単純なメッセージの送受信を実装します
通常のメッセージの送信には、一方向送信、同期送信、非同期送信の 3 つの方法があります。
Springboot Rockermq 統合を導入して、通常のメッセージの送受信を実現しましょう
Springboot プロジェクトを作成し、rockermq の依存関係を追加します
<!--rocketMq依赖--> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.1</version> </dependency>
rocketmq の構成
# Port
server:
port: 8083# rocketmq の構成
rocketmq:
ネームサーバー: 127.0.0.1:9876
#プロデューサー
プロデューサー:
#プロデューサーグループ名、アプリケーション内で一意である必要があります
グループ: group1
#メッセージ送信のデフォルトのタイムアウトは 3000ms です。
send-message-timeout: 3000
#メッセージが 4096 バイトに達すると、メッセージは圧縮されます。デフォルト 4096
compress-message-body-threshold: 4096
#最大メッセージ制限、デフォルトは 128K
max-message-size: 4194304
#失敗した同期メッセージ送信の再試行回数
retry-times-when-send-failed: 3
#内部送信が失敗したときに他のエージェントを再試行するかどうか。このパラメータは複数のブローカーがある場合にのみ有効です
retry-next-server: true
#失敗した非同期メッセージ送信の再試行回数
retry-times-when-send-async-failed: 3
メッセージを送信する新しいコントローラーの作成:
package com.example.springbootrocketdemo.controller; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 普通信息的三种方式:同步、异步、单向 * @author qzz */ @RestController public class RocketMQCOntroller { @Autowired private RocketMQTemplate rocketMQTemplate; /** * 发送普通消息 * convertAndSend(String destination, Object payload) 发送字符串比较方便 */ @RequestMapping("/send") public void send(){ rocketMQTemplate.convertAndSend("test-topic","test-message"); } /** * 发送同步消息 */ @RequestMapping("/testSyncSend") public void testSyncSend(){ //参数一:topic 如果想添加tag,可以使用"topic:tag"的写法 //参数二:消息内容 SendResult sendResult = rocketMQTemplate.syncSend("test-topic","同步消息测试"); System.out.println(sendResult); } /** * 发送异步消息 */ @RequestMapping("/testASyncSend") public void testASyncSend(){ //参数一:topic 如果想添加tag,可以使用"topic:tag"的写法 //参数二:消息内容 //参数三:回调 rocketMQTemplate.asyncSend("test-topic", "异步消息测试", new SendCallback() { @Override public void onSuccess(SendResult sendResult) { System.out.println(sendResult); } @Override public void onException(Throwable throwable) { System.out.println("消息发送异常"); throwable.printStackTrace(); } }); } /** * 发送单向消息 */ @RequestMapping("/testOneWay") public void testOneWay(){ //参数一:topic 如果想添加tag,可以使用"topic:tag"的写法 //参数二:消息内容 rocketMQTemplate.sendOneWay("test-topic","单向消息测试"); } }
SpringBoot は、さまざまな形式でメッセージを送信するために使用できる RocketMQTemplate テンプレート クラスを提供します。
送信方法はトピックトピックtest-topicを指定します。
RocketMQConsumerListener をリッスンし、メッセージをリッスンし、メッセージを消費するための新しいメッセージ コンシューマーを作成します。
package com.example.springbootrocketdemo.config; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.stereotype.Service; /** * 消费消息 * 配置RocketMQ监听 * @author qzz */ @Service @RocketMQMessageListener(consumerGroup = "test",topic = "test-topic") public class RocketMQConsumerListener implements RocketMQListener<String> { @Override public void onMessage(String s) { System.out.println("消费消息:"+s); } }
コンシューマー クラスは ## を実装する必要があります。 #RocketMQListener インターフェイス を使用し、メッセージ タイプ String を動的に指定します。
@RocketMQMessageListener アノテーション をクラスに追加し、トピック topic test-topic とコンシューマ グループ test
## 一方向メッセージのテスト:
以上がRocketMQ は Springboot でメッセージの送受信をどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。