創造を続け、成長を加速させましょう!「ナゲッツデイリーニュープラン・6月アップデートチャレンジ」に参加して8日目です。クリックしてイベントの詳細をご覧ください。
SpringCloudStreamの概要
Spring Cloud Streamは、共有メッセージングシステムに接続された高度にスケーラブルなイベント駆動型マイクロサービスを構築するためのフレームワークです。このフレームワークは、確立された使い慣れたSpringのイディオムとベストプラクティスに基づいた柔軟なプログラミングモデルを提供します。これには、永続的なpub / subセマンティクス、コンシューマーグループ、ステートフルパーティショニングのサポートが含まれます。
SpringCloudStreamがサポートするメッセージミドルウェア
SpringCloudStreamでサポートされているメッセージミドルウェアを次の図に示します。
すぐに使える
依存関係の設定(pom)
依存関係については、spring-boot``spring-cloud``spring-cloud-alibaba
バージョンます。
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.0.RELEASE</spring.cloud.alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
</dependency>
</dependencies>
复制代码
構成の設定(yml)
構成いくつかの基本的な構成情報rocketmq
が必要です。
spring:
cloud:
stream:
bindings:
input:
destination: TestTopic
group: TestGroup
output:
destination: TestTopic
rocketmq:
binder:
name-server: 127.0.0.1:9876
server:
port: 18080
复制代码
スタートアップクラスを設定する
@EnableBinding({Source.class, Sink.class})
@SpringBootApplication
public class RocketMQApplication {
public static void main(String[] args) {
SpringApplication.run(RocketMQApplication.class, args);
}
}
复制代码
メッセージプロデューサー
主にメッセージを送信するため
@Component
public class RocketMQProducer {
@Resource
private Source source;
public void sendMessage(String msg) {
Map<String, Object> headers = new HashMap<>();
headers.put(MessageConst.PROPERTY_TAGS, "testTag");
MessageHeaders messageHeaders = new MessageHeaders(headers);
Message<String> message = MessageBuilder.createMessage(msg,
messageHeaders);
this.source.output().send(message);
}
}
复制代码
メッセージ消費者
これは主に、メッセージを受け入れ、メッセージの内容を印刷するために使用されます。
@Component
public class TestTopicConsumer {
@StreamListener(Sink.INPUT)
public void onMessage(String messsage) {
System.out.println("received message:" + messsage + " from binding:" + Sink.INPUT);
}
}
复制代码
テスト
私たちは、メッセージを外の世界に送信するためのインターフェースを提供するTestController
クラスし、メッセージを呼び出して送信し、メッセージの送信を実現します。
@RestController
@RequestMapping("/MQTest")
public class TestController {
@Resource
private RocketMQProducer producer;
@RequestMapping("/sendMessage")
public String sendMessage(String message) {
producer.sendMessage(message);
return "send message success";
}
}
复制代码
テストはメッセージを送信し、コマンドを実行して、curl http://127.0.0.1:18080/MQTest/sendMessage\?message\=hahha
次のような結果を返します。サーバーコンソールの出力は次のとおりです。
要約する
この記事では、RockectMQをSpring Cloud Streamと統合する方法について簡単に説明しますが、実際の開発プロセスでは、これで十分とは言えません。これは単なる事例であり、プロジェクトで実際に使用されるソリューションについては後で共有します。