ここでは、以下のトピックについて重点的に説明します。
オーサーサーバーとパブリッシュサーバーの使用を開始する前に、以下に関する事前の知識が必要です。
この AEM Screens 機能は、AEM 6.4 Screens 機能パック 2 がインストールされている場合にのみ使用できます。この機能パックにアクセスするには、アドビサポートに連絡してアクセス権をリクエストする必要があります。アクセス権が付与されると、パッケージ共有から機能パックをダウンロードできるようになります。
AEM Screens のアーキテクチャは、従来の AEM Sites のアーキテクチャに似ています。コンテンツは AEM オーサーインスタンスで作成された後、複数のパブリッシュインスタンスにフォワードレプリケートされます。AEM Screens デバイスは、ロードバランサーで AEM パブリッシュファームに接続できるようになりました。複数の AEM パブリッシュンスタンスを追加して、パブリッシュファームの拡大/縮小を続行できます。
例えば、AEM Screens コンテンツ作成者は、パブリッシュファームとやり取りするように設定されている特定のデバイスのオーサリングシステム上でコマンドを発行するか、パブリッシュファームとやり取りするように設定されているデバイスに関する情報を取得します。
オーサー環境とパブリッシュ環境を次の図に示します。
このソリューションを促進するアーキテクチャコンポーネントが 5 つあります。
デバイス別にオーサーからパブリッシュにディスプレイのコンテンツをレプリケート
(デバイスから受信した)パブリッシュのバイナリコンテンツをオーサーにリバースレプリケート
特定の REST API を介してオーサーからパブリッシュにコマンドを送信
デバイス情報の更新とコマンドを同期させるためのパブリッシュインスタンス間のメッセージング
特定の REST API を介してデバイス情報を取得するためにパブリッシュインスタンスの作成者によっておこなわれるポーリング
標準レプリケーションエージェントは、Screens チャネルコンテンツ、場所設定、デバイス設定のレプリケーションに使用します。これにより、作成者は、チャネルのコンテンツを更新し、必要に応じて何らかの承認ワークフローを経てから、チャネルの更新内容を公開できます。レプリケーションエージェントは、パブリッシュファームのパブリッシュインスタンスごとに作成する必要があります。
レプリケーションプロセスの例を次の図に示します。
レプリケーションエージェントは、パブリッシュファームのパブリッシュインスタンスごとに作成する必要があります。
オーサーインスタンスから AEM Screens デバイスにコマンドを送信するには、Screens 固有のカスタムレプリケーションエージェントを作成します。AEM パブリッシュインスタンスは、これらのコマンドをデバイスに転送する仲介役となります。
これにより、作成者はオーサー環境からデバイスの管理(デバイス更新の送信やスクリーンショットの取得など)を続けることができます。AEM Screens レプリケーションエージェントには、標準レプリケーションエージェントなどのカスタムトランスポート設定があります。
多くの場合、コマンドは 1 回だけデバイスに送信するために使用されます。ただし、負荷分散型のパブリッシュアーキテクチャでは、デバイスの接続先がどのパブリッシュインスタンスであるかは不明です。
したがって、オーサーインスタンスはすべてのパブリッシュインスタンスにメッセージを送信します。ただし、デバイスに転送されるメッセージは 1 つだけです。適切なメッセージングを確実におこなうために、パブリッシュインスタンス間で何らかの通信が必要になります。それには、Apache ActiveMQ Artemis が使用されます。各パブリッシュインスタンスは、Oak ベースの Sling Discovery Service を使用して疎結合トポロジで配置され、各パブリッシュインスタンスが通信し単一のメッセージキューを作成できるように ActiveMQ が設定されます。Screens デバイスは、ロードバランサーを介してパブリッシュファームをポーリングし、キューの先頭からコマンドを取得します。
多くの場合、コマンドに従って、Screens デバイスから何らかの応答がオーサーインスタンスに転送されます。これを実現するために、AEM リバースレプリケーションが使用されます。
オーサーインスタンスは、デバイスをポーリングしてハートビートを取得し、接続されたデバイスのヘルスステータスを把握する必要があります。
デバイスはロードバランサーに ping を送信し、パブリッシュインスタンスにルーティングされます。次に、提供されるパブリッシュ API(すべてのアクティブデバイスの場合は api/screens-dcc/devices/static、単一デバイスの場合は api/screens-dcc/devices/<device_id>/status.json)を通じて、パブリッシュインスタンスがデバイスのステータスを公開します。
オーサーインスタンスは、すべてのパブリッシュインスタンスをポーリングし、デバイスのステータス応答を 1 つのステータスに結合します。オーサー上でポーリングするスケジュール済みは com.adobe.cq.screens.impl.jobs.DistributedDevicesStatiUpdateJob
で、Cron 形式に基づいて設定できます。
登録は AEM オーサーインスタンスで継続的に開始されます。AEM Screens デバイスがこのオーサーインスタンスを指すように設定され、登録が完了します。
デバイスがオーサー環境に登録されると、デバイス設定とチャネル/スケジュールの割り当てが AEM パブリッシュインスタンスにレプリケートされます。次に、AEM Screens デバイス設定が、AEM パブリッシュファームの前面にあるロードバランサーを指すように更新されます。このセットアップは 1 回おこなえばよく、いったんパブリッシュ環境に正常に接続された Screens デバイスは、オーサー環境から送信されるコマンドを受信し続けることができ、それ以降、Screens デバイスをオーサー環境に直接接続する必要がなくなります。
AEM Screens におけるオーサーとパブリッシュのセットアップについて詳しくは、AEM Screens でのオーサーとパブリッシュの設定を参照してください。