現代のビジネスがさまざまな異種アプリケーションやシステムにますます依存するようになるにつれて、エンタープライズ統合の重要性がますます高まっています。 Enterprise Service Bus (ESB) は、さまざまなシステムとアプリケーションを接続して共通のデータ交換サービスとメッセージ ルーティング サービスを提供し、エンタープライズ レベルのアプリケーション統合を実現する統合アーキテクチャ モデルです。 Spring BootとApache ServiceMixを利用することで簡単にESBシステムを構築できるので、その実装方法を紹介します。
Spring Boot は、Spring フレームワークに基づいてスタンドアロンの実稼働レベルの Java ベース アプリケーションを作成するためのフレームワークです。すぐに使える共通の構成とプリセットを提供することで、Spring アプリケーションの構築と構成のプロセスを簡素化します。 Spring Boot は、自動構成、組み込み Web サーバー、さまざまな外部サービスのサポートなど、他の多くの機能も提供します。これらの機能は、Web アプリケーション、バッチ アプリケーション、マイクロサービスなど、さまざまな種類のアプリケーションの作成に使用できます。
Apache ServiceMix は、オープン ソース Java に基づくエンタープライズ サービス バス (ESB) であり、メッセージ ルーティング、メッセージ変換、トランザクション伝播、およびメッセージ ルーティングなどの一連の基本サービスを提供します。安全 。 ServiceMix は、Web サービスや Java Message Service (JMS) など、さまざまなサービス バス標準もサポートしています。 ServiceMix とその外部コンポーネントを使用すると、開発者は異種のシステムとアプリケーションを簡単に統合して、効率的なメッセージ ルーティングとデータ交換を行うことができます。
Spring Boot と ServiceMix を使用して ESB システムを構築するには、最初に次の手順を完了する必要があります。
次に、ESB システムのさまざまな部分を段階的に実装します。
ESB システムの中核となる部分はメッセージ形式です。この例では、メッセージ形式として単純な JSON 形式を使用します。これには次のフィールドが含まれます。
次に、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 エンドポイントを作成する必要があります。この記事では、次の 2 つのエンドポイントを実装します。
これらのエンドポイントを実装するには、「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 システムのインフラストラクチャが構築されました。ローカルで実行してテストするには、次の手順を実行する必要があります。
Spring Boot と Apache ServiceMix を使用すると、複数のシステムやアプリケーションを接続し、データ交換やメッセージング ルーティングを実現する効率的な ESB システムを簡単に構築できます。この記事では、基本的な ESB システムをセットアップし、ビジネス システムとの通信を容易にするために REST エンドポイントを追加する方法を説明しました。この記事は単純な例にすぎませんが、より複雑な ESB システムを構築するための良い出発点となります。
以上がSpring Boot と Apache ServiceMix を使用した ESB システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。