イベント駆動アーキテクチャ (AOE) は、イベントにリアルタイムで反応するシステムを開発するために使用される設計モデルです。このタイプのアーキテクチャは、電子商取引や銀行アプリケーションなど、情報を迅速に処理する必要があるシナリオで非常に役立ちます。
イベントとは何ですか?
イベントとは、システム内で発生するアクションまたは変更です。たとえば、顧客が Web サイトで購入を行う場合、これはイベントと見なすことができます。他の例には、ボタンのクリックやデータの更新などがあります。
AOE はどのように機能しますか?
このアーキテクチャは、次の 3 つの主要コンポーネントに基づいて動作します。
イベントプロデューサー: これらは、イベントを生成するシステムの部分です。
イベント コンシューマ: イベントの受信とイベントへの反応を担当します。
イベント ブローカー: プロデューサーからコンシューマーにイベントを配布する仲介者。
イベントが発生すると、それがキャプチャされてブローカーに送信され、ブローカーはそのイベントの種類に関係するサービスまたはシステムにイベントを配信します。
AOE の利点
スケーラビリティ: イベントを非同期で処理できるため、システムを効率的に拡張できます。
デカップリング: 生産者と消費者はお互いの詳細を知る必要がなくなり、システムがより柔軟になります。
リアルタイム応答: 変更に迅速に対応する必要があるアプリケーションに最適です。
Java OOP の 非常に単純な 例 ☕:
// Definição do evento class PedidoCriadoEvent { private String idPedido; public PedidoCriadoEvent(String idPedido) { this.idPedido = idPedido; } public String getIdPedido() { return idPedido; } } // Interface para o consumidor (listener) interface PedidoCriadoListener { void onPedidoCriado(PedidoCriadoEvent event); } // Produtor do evento class SistemaDePedidos { private PedidoCriadoListener listener; public void registrarListener(PedidoCriadoListener listener) { this.listener = listener; } public void criarPedido(String idPedido) { System.out.println("Pedido criado com ID: " + idPedido); if (listener != null) { listener.onPedidoCriado(new PedidoCriadoEvent(idPedido)); } } } // Consumidor do evento class EnvioDeEmail implements PedidoCriadoListener { @Override public void onPedidoCriado(PedidoCriadoEvent event) { System.out.println("Enviando e-mail para o pedido: " + event.getIdPedido()); } } // Simulação public class Main { public static void main(String[] args) { SistemaDePedidos sistema = new SistemaDePedidos(); EnvioDeEmail envioDeEmail = new EnvioDeEmail(); sistema.registrarListener(envioDeEmail); sistema.criarPedido("12345"); } }
この例では何が起こりますか?
プロデューサー: OrderSystem クラスは注文を作成し、関係者に通知します。
コンシューマ: EmailSend クラスはイベントに反応し、作成された注文に電子メールを送信します。
デカップリング: TheOrderSystem は、コンシューマーがイベントに対して何を行うかを知りません。イベントを発行するだけです。
はい、先ほども言いましたが、これはリスナーを使用してクラス間の通信をシミュレートする非常に単純な例でした。
ありがとう
以上がイベント駆動型アーキテクチャの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。