ABAPメッセージングチャネル(AMC)は、WebSocketプロトコルを使用して、アプリケーションサーバABAP(AS ABAP)またはASABAPとブラウザの異なるセッション間でメッセージを交換するためのパブリッシュ/サブスクライブメカニズムを提供します。
AMC相互作用モデル
ABAPメッセージングチャネル(AMC)は、参加者が指定された通信チャネルを参照して非同期でメッセージを送受信することによって通信する、単純な形式のパブリッシュ/サブスクライブメッセージングを可能にします。このようなプリミティブの上に複雑な相互作用スキームを構築できます。
次の図は、単純なAMC相互作用モデルの概要を示しています。これは、異なるユーザーセッション間のメッセージの交換を示しています。
ユーザーセッションP1は、AMCフレームワークによって提供される指定されたチャネル(チャネルX )にメッセージを公開します。その後、他のユーザーセッションは、チャネルのサブスクライブとサブスクライブ解除によってメッセージの受信を開始または停止できます。
メッセージ交換は、異なるユーザセッションで実行され、AMCを使用するABAPプログラム間で有効にできます。また、APC WebSocket接続を使用したAPCとAMCのコラボレーションにより、Webブラウザとの通信も可能です。
コラボレーションシナリオの詳細については、「APCとAMC間のコラボレーション」を参照してください。
ABAPメッセージングチャネルアプリケーション
メッセージングチャネルは常にAMCアプリケーションに割り当てられます。したがって、チャネルを使用するには、SAPGUIまたはABAP開発ツールを使用してAMCアプリケーションを作成する必要があります。AMCアプリケーションは、1つ以上のメッセージングチャネルで構成できます。
AMCアプリケーションを作成し、チャネルの属性を指定したら、許可されたプログラムをそのアプリケーションに追加できます。これらのプログラムは、このチャネルを介してメッセージを送受信できます。
ABAPメッセージングチャネルを介して送信されるメッセージは、現在、テキスト、バイト文字列、またはプッシュチャネルプロトコル(PCP)を使用したシリアル化されたコンテンツである可能性があります。AMCアプリケーションを作成するとき、または既存のAMCアプリケーションに新しいメッセージングチャネルを追加するときに、チャネルのメッセージタイプを指定します。
詳細については、ABAPメッセージングチャネルアプリケーションの登録を参照してください。
AMCメッセージの送受信
-
コミュニケーションのパブリッシュ/サブスクライブ
パブリッシュ/サブスクライブシナリオでメッセージ交換を有効にするには、送信者オブジェクトと受信者オブジェクトを作成する必要があります。これらのオブジェクトは、システムクラスCL_AMC_CHANNEL_MANAGERのファクトリメソッドCREATE_MESSAGE_PRODUCERまたはCREATE_MESSAGE_CONSUMERを使用して、ローカルクラスまたはグローバルクラスからインスタンス化できます。メッセージングチャネルを指定するには、次の情報をこれらのメソッドに渡す必要があります。
-
AMCアプリケーションID
-
チャンネルID
メッセージングチャネルのこれらの属性は、チャネル自体と同様に、AMC設計時に作成される開発オブジェクトです。
次のようなオプションのパラメータをファクトリメソッドに提供することもできます。
-
実行時に作成されるチャネル拡張ID。これにより、メッセージングチャネルを特定の数のプロデューサーとコンシューマーに制限できます。
-
チャネルフィルター。ディスパッチする必要のあるメッセージをフィルター処理するために使用され、送信側プログラムと受信側プログラムの両方に設定できます。
送信者オブジェクトをインスタンス化するには、通信タイプも定義する必要があります。これは、パブリッシュ/サブスクライブシナリオでのみ非同期にできます。また、メッセージを独自のセッション/WebSocket接続で受信するかどうかを決定することもできます。デフォルトでは、そうではありません。
-
-
ポイントツーポイント通信
CL_AMC_CHANNEL_MANAGERのファクトリメソッドCREATE_MESSAGE_PRODUCER_BY_IDにより、送信側プログラムと受信側プログラム間のポイントツーポイント通信が可能になります。これは、送信者プログラムが特定の受信者プログラムにのみメッセージを送信することを意味します。この場合、送信側オブジェクトには受信側のセッションIDが必要です。これは、メソッドGET_CONSUMER_SESSION_IDを呼び出すことで取得できます。ポイントツーポイント通信のシナリオでは、通信タイプは非同期(デフォルト)または同期のいずれかになります。
詳細については、次のセクションを参照してください。