ホームページ  >  記事  >  Java  >  Spring Boot と Apache ServiceMix を使用した ESB システムの構築

Spring Boot と Apache ServiceMix を使用した ESB システムの構築

WBOY
WBOYオリジナル
2023-06-22 12:30:102457ブラウズ

現代のビジネスがさまざまな異種アプリケーションやシステムにますます依存するようになるにつれて、エンタープライズ統合の重要性がますます高まっています。 Enterprise Service Bus (ESB) は、さまざまなシステムとアプリケーションを接続して共通のデータ交換サービスとメッセージ ルーティング サービスを提供し、エンタープライズ レベルのアプリケーション統合を実現する統合アーキテクチャ モデルです。 Spring BootとApache ServiceMixを利用することで簡単にESBシステムを構築できるので、その実装方法を紹介します。

Spring Boot と Apache ServiceMix の概要

Spring Boot

Spring Boot は、Spring フレームワークに基づいてスタンドアロンの実稼働レベルの Java ベース アプリケーションを作成するためのフレームワークです。すぐに使える共通の構成とプリセットを提供することで、Spring アプリケーションの構築と構成のプロセスを簡素化します。 Spring Boot は、自動構成、組み込み Web サーバー、さまざまな外部サービスのサポートなど、他の多くの機能も提供します。これらの機能は、Web アプリケーション、バッチ アプリケーション、マイクロサービスなど、さまざまな種類のアプリケーションの作成に使用できます。

Apache ServiceMix

Apache ServiceMix は、オープン ソース Java に基づくエンタープライズ サービス バス (ESB) であり、メッセージ ルーティング、メッセージ変換、トランザクション伝播、およびメッセージ ルーティングなどの一連の基本サービスを提供します。安全 。 ServiceMix は、Web サービスや Java Message Service (JMS) など、さまざまなサービス バス標準もサポートしています。 ServiceMix とその外部コンポーネントを使用すると、開発者は異種のシステムとアプリケーションを簡単に統合して、効率的なメッセージ ルーティングとデータ交換を行うことができます。

Spring Boot と ServiceMix を使用して ESB システムを構築する

Spring Boot と ServiceMix を使用して ESB システムを構築するには、最初に次の手順を完了する必要があります。

  1. Java 環境をインストールして構成します。
  2. Apache Maven と Apache ServiceMix をダウンロードしてインストールします。
  3. 「esb-demo」という名前の Spring Boot プロジェクトを作成します。

次に、ESB システムのさまざまな部分を段階的に実装します。

ESB システムのメッセージ形式を定義する

ESB システムの中核となる部分はメッセージ形式です。この例では、メッセージ形式として単純な JSON 形式を使用します。これには次のフィールドが含まれます。

  • id: メッセージの一意の識別子。
  • ソース: ソース。
  • destination: メッセージの宛先。
  • content: メッセージの内容。

ServiceMix の基本構成を作成する

次に、ServiceMix の基本構成を定義する必要があります。これを行うには、「esb.xml」というファイルを作成し、次の内容を追加します。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint
        xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.osgi.org/xmlns/blueprint/v1.0.0
            http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/blueprint">
        <route>
            <from uri="jms:queue:incoming"/>
            <to uri="jms:queue:outgoing"/>
        </route>
    </camelContext>

    <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616"/>
    </bean>

    <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
        <property name="maxConnections" value="8"/>
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
    </bean>

    <bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
        <property name="connectionFactory" ref="pooledConnectionFactory"/>
    </bean>

    <bean id="jms" class="org.apache.camel.component.jms.JmsComponent" lazy-init="true">
        <property name="configuration" ref="jmsConfig"/>
    </bean>

</blueprint>

この構成ファイルは、「incoming」という名前の JMS キューからメッセージを受信し、JMS に送信する Camel ルートを定義します。 「送信」という名前のキュー。この構成ファイルでは、ActiveMQ に接続するための JMS 接続ファクトリ、JMS 接続を最大限に活用できるプールされた接続ファクトリ、および Camel と JMS を統合するための JMS コンポーネントも定義します。

ESB システムの REST エンドポイントを追加する

ESB メッセージを送受信するには、ビジネス システムの REST エンドポイントを作成する必要があります。この記事では、次の 2 つのエンドポイントを実装します。

  • POST /esb/incoming: ビジネス システムから ESB メッセージを受信します。
  • GET /esb/outcoming: 処理された ESB メッセージを返します。

これらのエンドポイントを実装するには、「EsbController.java」という名前の Spring Boot コントローラーを作成し、そのソース コードに次のコンテンツを追加します。

@RestController
public class EsbController {

    private final JmsTemplate jmsTemplate;

    public EsbController(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    @PostMapping("/esb/incoming")
    public ResponseEntity<?> sendIncomingMessage(@RequestBody EsbMessage message) {
        jmsTemplate.convertAndSend("incoming", message.toMessage());
        return ResponseEntity.ok().build();
    }

    @GetMapping("/esb/outgoing")
    public ResponseEntity<List<EsbMessage>> getOutgoingMessages() {
        List<EsbMessage> messages = jmsTemplate.browse("outgoing", session -> {
            List<EsbMessage> result = new ArrayList<>();
            Enumeration<?> enumeration = session.getEnumeration();
            while (enumeration.hasMoreElements()) {
                Message message = (Message) enumeration.nextElement();
                result.add(EsbMessage.fromMessage(message));
            }
            return result;
        });
        return ResponseEntity.ok(messages);
    }

}

このコントロール コンテナ クラスは JmsTemplate を使用して、ビジネス システムからの JSON メッセージを JMS メッセージに変換し、ESB キューに送信します。また、JmsTemplate を使用して、処理された JSON メッセージを ESB キューから取得します。

ESB システムの開始

上記の手順を完了すると、ESB システムのインフラストラクチャが構築されました。ローカルで実行してテストするには、次の手順を実行する必要があります。

  1. プロジェクトのルート ディレクトリに切り替えます。
  2. ターミナルで「mvn clean install」コマンドを実行して、プロジェクトの JAR ファイルを生成します。
  3. Apache ServiceMix を起動し、「bin/servicemix」を実行します。
  4. ServiceMix コマンド ライン コンソールに ESB 構成ファイルをインストールし、「install esb.xml」と入力します。
  5. ServiceMix コマンド ライン コンソールで ESB プロジェクトをインストールし、「install -s mvn:com.example/esb-demo/0.0.1-SNAPSHOT」と入力します。
  6. POST リクエストを使用して ESB メッセージを送信します。例: "curl -X POST -H "Content-Type:application/json" -d '{"id":1,"source":"SystemA" ," 宛先":"SystemB","コンテンツ":"テスト メッセージ"}' http://localhost:8080/esb/incoming"。
  7. GET リクエストを使用して、処理された ESB メッセージを取得します (例: "curl http://localhost:8080/esb/outcoming")。

概要

Spring Boot と Apache ServiceMix を使用すると、複数のシステムやアプリケーションを接続し、データ交換やメッセージング ルーティングを実現する効率的な ESB システムを簡単に構築できます。この記事では、基本的な ESB システムをセットアップし、ビジネス システムとの通信を容易にするために REST エンドポイントを追加する方法を説明しました。この記事は単純な例にすぎませんが、より複雑な ESB システムを構築するための良い出発点となります。

以上がSpring Boot と Apache ServiceMix を使用した ESB システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。