標準の復興プロジェクトに春ブーツ・スターターRocketMQクライアントコンポーネントを使用します

I.背景

私たちはしばしば、ばねブートstarter-、春・ブート・スターター・ウェブのように、春・クラウド・スタータ装う、春ブート-XXX-スターターに依存して参照、春の雲の家族のバケットを用いたマイクロ・サービス・アプリケーションを構築するときテスト、MyBatisのスプリング・ブート・スターター、スターターだけのものを持っている場合、あなたは、すべての構成を含むすべてのコンポーネント、参照クラスのすべてのセットを持っていますが、使用するためにこのような素晴らしいものを持っていますどのようにそれを達成するには?私たちは、スターターを作るために、独自のツールキットを置くことができませんか?

二、春ブーツスターター部品の仕様

  • 命名規則

groupId:ラベルに名前を付けるには、サードパーティの企業は、一般的なorg.mybatis.spring.bootとして、独自のドメイン名を使用し、公式の一般的な使用org.springframework.cloudとして、基本的には会社のドメイン名+プロジェクトモードを使用して、あまりにも多くの要求をしませんでした。
たartifactId:公式の命名提案にラベルの春に名前を付け、コンポーネントは、独自の公式リリースを春、命名は春・ブート・スターター-XXXで、 xxxは、コンポーネント名を表し、春・ブート・スターター・ウェブ上で述べたようにそしてバネクラウドスタータふり;アセンブリサードパーティによって開発されたが、XXX-ばねブートスターター、MyBatisのスプリングブートスタータとして命名されます。

  • エンジニアリング仕様

例としてMavenプロジェクトのプロジェクト内、春ブートスターターマルチモジュールモードと構造を構築し、そこに自動構成モジュールとスタータモジュール。
自動設定モジュールが自動的に機能するための構成がロードされたモジュールが含まれ、すべてのコードを設定し、達成するための内部機能を担うのjarパッケージ、を参照する必要があるために、すべてのコードの開発は、このモジュールで行われます。
スタータモジュール依存自動構成モジュールは、何のコード、すべての参照モジュールを自動設定する場合にのみ、空のJARパッケージが存在しない、依存関係の集合であり、その目的は、添加スターターモジュール限り、成分の使用に依存して簡素化することができ全体スタータアセンブリを使用します。

第三に、実際のケース

私たちの共通RocketMQクライアント・コンポーネント、例えば、スターターの独自の定義を設定、RocketMQはアリババチームによって開発され、優れたメッセージングミドルウェアのapacheのチームに寄付し、デュアルXIを促進するために長年にわたって耐えるようにテストしました。

  1. Mavenプロジェクト、二つの追加のモジュールrocketmqスプリング・ブート自動構成とrocketmqスプリング・ブート・スターター、ここで使用RocketMQのバージョンは4.5.2で作成し、メインのpom.xmlの抜粋は次のとおりです。
<groupId>com.hy.demo</groupId>
<artifactId>rocketmq</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<modules>
    <module>rocketmq-spring-boot-autoconfigure</module>
    <module>rocketmq-spring-boot-starter</module>
</modules>

<dependencies>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>4.5.2</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.1.8.RELEASE</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
</dependencies>
  1. 自動構成モジュールの開発は
    、このような注釈、コンフィギュレーション・クラス、インターフェイスとして、適切なツールの下にsrcディレクトリを追加し、少し
    新しいファイルspring.factoriesで、候補による測位設定を追加META-INF /ディレクトリ:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.hy.demo.rocketmq.MQConfig

META-INF / spring.factoriesファイルの春ブーツをチェックし、自動的にクラスは、あなたのjarファイルにリリースこの方法でロードすることができます設定します

  1. スターターモジュール開発者は、
    唯一のpom.xmlファイルを変更する必要があります。
<parent>
    <artifactId>rocketmq</artifactId>
    <groupId>com.hy.demo</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>rocketmq-spring-boot-starter</artifactId>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.hy.demo</groupId>
            <artifactId>rocketmq</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>com.hy.demo</groupId>
        <artifactId>rocketmq-spring-boot-autoconfigure</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

IDEAは、コンパイルするプロジェクトで行われ、パッケージ、順序:

clean install -DskipTests=true

図4に示すように、展開パッケージが完了した後、スタータであってもよい依存のアプリケーション・モジュールに追加されます

<dependency>
   <groupId>com.hy.demo</groupId>
   <artifactId>rocketmq-spring-boot-starter</artifactId>
   <version>1.0-SNAPSHOT</version>
</dependency>

注:RocketMQより一般的な構成なので、今すぐメッセージを送受信するには、いくつかの基本的な方法を提供しています、トランザクションメッセージは、1は、送信元アドレスを伴って、記事内のコードの機能を解釈しません。

rocketmqスプリングブートスタータ例示的なソース

第四に、知識コーミング

  1. 春のいくつかの注意事項:
    @importは@Configuration注釈の設定で定義されているすべての豆を統合するために使用。
    ContextStartedEvent書かれ@EventListenerイベントリスナーは、イベントが終了した後リスニングを開始するSpringコンテキストを表し、
    豆のXMLタグの@Configuration相当;
    @Bean方法にマークされ、BeanへのXML同等。

  2. それがどのように動作するか、カスタム注釈やメモ@MQTransactionProducer @MQConsumerはありますか?
    これら2つのノートの定義におけるCom.hy.demo.rocketmq.config.RocketMQAnnotationScanクラスのプロジェクトがコメント@EventListener(ContextStartedEvent.class)を使用してスキャンされ、すべてこれでSpringコンテナから読み込まれ、その後、Springコンテキストの初期化イベントをリッスン初期における噴射TransactionListenerリスナクラスを必要とするトランザクションメッセージプロデューサorg.apache.rocketmq.client.producer.TransactionMQProducerクラス(、及びアプリケーションモジュールの特別な性質に注釈二つのクラス、RocketMQローディング設定情報を有していますこうして地図@MQTransactionProducer注釈アプリケーションセットのストレージモジュールのすべてのインスタンスの使用を増加させる)カップリング定数。
    Javaの並行性の高いフォーカス、分散アーキテクチャ、より多くの呉服共有技術と経験は、公共の数に注意してください:Javaのアーキテクチャコミュニティ
    Javaのアーキテクチャコミュニティ

おすすめ

転載: www.cnblogs.com/huangying2124/p/11696226.html