SpringCloudStreamを介したRoctetMQメッセージ操作

創造を続け、成長を加速させましょう!「ナゲッツデイリーニュープラン・6月アップデートチャレンジ」に参加して8日目です。クリックしてイベントの詳細をご覧ください。

SpringCloudStreamの概要

Spring Cloud Streamは、共有メッセージングシステムに接続された高度にスケーラブルなイベント駆動型マイクロサービスを構築するためのフレームワークです。このフレームワークは、確立された使い慣れたSpringのイディオムとベストプラクティスに基づいた柔軟なプログラミングモデルを提供します。これには、永続的なpub / subセマンティクス、コンシューマーグループ、ステートフルパーティショニングのサポートが含まれます。

SpringCloudStreamがサポートするメッセージミドルウェア

SpringCloudStreamでサポートされているメッセージミドルウェアを次の図に示します。image.png

すぐに使える

依存関係の設定(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次のような結果を返します。image.pngサーバーコンソールの出力は次のとおりです。image.png

要約する

この記事では、RockectMQをSpring Cloud Streamと統合する方法について簡単に説明しますが、実際の開発プロセスでは、これで十分とは言えません。これは単なる事例であり、プロジェクトで実際に使用されるソリューションについては後で共有します。

おすすめ

転載: juejin.im/post/7104282113075068965