SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

AMQP Architecture

AMQPプロトコルは、さまざまなアプリケーション間の堅牢で非同期のメッセージングをサポートするために確立されました。ABAPプラットフォームは、ABAPアプリケーション用のAMQPクライアントを実装するためのAPIを提供します。このようなAMQPクライアントを使用すると、ABAPアプリケーションは他のAMQPクライアントとポイントツーポイントまたはブローカーを介してメッセージを交換することができます。以下に、ブローカーを介したAMQPプロトコルを使用したアプリケーション間のメッセージ交換の概略例を示します。

  • 交換は、さまざまなABAPアプリケーション間、およびABAPアプリケーションと非ABAPアプリケーション間で行うことができます。

  • 各AMQPクライアントを使用して、1つの専用ブローカーへの接続を確立できます。この接続は、さまざまなブローカートピックのコンテンツを交換するために使用できます。同じアプリケーション内に実装された複数のAMQPクライアントがブローカーに接続されている場合があります。
  • アプリケーションが1つ以上の追加のブローカーに接続する必要がある場合は、1つ以上の追加の対応するクライアントオブジェクトを作成する必要があります。各ブローカー接続は、アプリケーション内で少なくとも1つの対応するAMQPクライアントを要求します。

接続タイプ

次のAPC接続タイプが各AMQP接続でサポートされています。

  • WebSockets:AMQP接続は、IETF標準RFC6455に従ってWebSocket接続の上に確立されます。
  • TCPソケット:AMQP接続は、ネイティブTCP/IP接続を介して確立されます。

アプリケーションプログラマーの観点からは、使用されるAPC接続タイプは接続セットアップ中にのみ異なります。したがって、AMQPクライアントABAP APIでは、AMQPクライアントオブジェクトを作成するためのファクトリメソッドの対応する使用法によって、異なる接続タイプが決定されます。AMQP接続が確立されるとすぐに、APIは基盤となるAPC接続タイプに依存しません。

サービスの質

AMQPプロトコルは、AMQPメッセージを送信するための3つのサービス品質(QoS)レベルを定義します。
  • せいぜい1回の配信:メッセージは最も手頃な価格で送信されます。
  • 少なくとも1回の配信:送信されたメッセージには確認が必要です。
  • 正確に1回の配信:送信されたメッセージには確認が必要です。受信者で保存されたメッセージの状態を破棄するには、重複を避けるために個別の確認応答が必要です。
AMQPメッセージが転送されるとき、AMQPプロトコルは、 settledおよびreceiversettlemodeと呼ばれる2つの属性を使用してQoSレベルを指定しますこれらは、次のようにQoSレベルとして解釈できます。
QoS 落ち着いた レシーバーセトルモード
せいぜい1回の配達 true 最初
少なくとも1回の配信 false 最初
正確に1回の配信 false 2番目

メッセージが送信者によって決済されて送信されている場合、受信者の決済モードの値は無視されます。

ABAPアプリケーションサーバーは、QoSを最大1回および少なくとも1回のみサポートします。

イベント駆動型プログラミングモデル

AMQPクライアントの場合、APCクライアントの場合と同様のイベント駆動型プログラミングモデルが提供されます。アプリケーションは次のイベントを処理できます。

イベント 説明
ON_OPEN AMQP接続が確立されました。
ON_CLOSE 接続が終了しました。
ON_BEGIN AMQPセッションが確立されました。
ON_END AMQPセッションが終了しました。
ON_ATTACH AMQPリンクが接続されています。
ON_DETACH AMQPリンクが切断されました。
ON_FLOW_CHANGE AMQP送信者のリンククレジットが変更されました。
ON_SEND AMQPメッセージが送信され、少なくとも1回のQoSの場合、メッセージは確認応答されています。
ON_MESSAGE AMQPメッセージを受信しました。

すべての通信ステップは同期点です。より正確には、AMQPフレーム(たとえば、、、、)を送信する各アクションと、OPENBEGINイベントの処理の終了(たとえばATTACH、、、)は同期です。これの意味は:SENDON_MESSAGEON_SENDON_FLOW_CHANGE

  • DBコミットがトリガーされます。
  • 実行が中断され、後で再開される可能性があります(ABAPセッションのデタッチ/アタッチを含む)。

次の図は、AMQPクライアントの単純な相互作用モデルを示しています。接続設定は、WebSocket/TCPソケット接続設定とAMQP接続ハンドシェイクの2つのステップで構成されます。接続が正常にセットアップされると、イベントハンドラーON_OPENが実行されます。クライアントはAMQPセッションを開き、メッセージの送信用と受信用の2つのリンクを接続します。次に、クライアントはメッセージを送受信し、最後に接続を閉じます。、、、、、およびメソッド確認応答は、関連OPENするイベントハンドラー、、、、、、およびによって処理れます受信したメッセージは、BEGINATTACHSENDCLOSEON_OPENON_BEGINON_ATTACHON_SENDON_CLOSEON_MESSAGEハンドラ。一部のアクションにより、追加のアクションとイベントが発生する場合があります。たとえば、送信者リンクが接続された後、受信者は通常、送信者にクレジットを付与します。これにより、ON_FLOW_CHANGEイベントが発生します。接続のACLOSEは、すべてのAMQPリンクも切り離し、すべてのAMQPセッションを終了します。したがって、対応するイベントON_DETACHON_ENDイベントが発生します。

QoSを使用してメッセージを送信する場合、最大1回、イベントハンドラーON_SENDがローカルで実行され、sendメソッドの処理が成功した直後に実行されます。

QoSが少なくとも1回の着信メッセージの場合、ABAPアプリケーションサーバは確認応答(AMQPディスポジションフレーム)をピアに送信する必要があります。これは、ON_MESSAGEハンドラーメソッドが正常に実行された後、サーバーインフラストラクチャによって自動的に実行されます。

着信メッセージと確認応答を処理するには、ABAPセッションがアイドル/待機状態である必要があります。この状態は、UIインタラクション(PBO / PAI)などの暗黙的に開始することも、ABAPWAITステートメントを使用して明示的に開始することもできます。イベントハンドラメソッドは、それぞれのABAPセッションがアイドル状態または待機中になるとすぐに実行されます。

上記のAMQPフレームの処理とは対照的に、接続キープアライブ用の空のAMQP転送フレームは、ABAPサーバインフラストラクチャによって完全に処理され、ABAPAMQPAPIに公開されません。ABAPサーバは、ABAPセッションを使用せずにこれらのフレームを送受信します。代わりに、それらはInternet Communication Manager(ICM)によってのみ処理されます。接続の維持の時間間隔は、接続が確立されたときにAMQP接続ごとに構成できます。

AMQPクライアント接続のライフサイクルは、AMQPクライアントオブジェクトにバインドされます。アプリケーションが到達不能になった場合(最後の参照がクリアされたため)、ABAPガベージコレクタはオブジェクトを破棄し、接続を閉じる可能性があります。さらに、他のABAPリソースと同様に、AMQPクライアント接続は埋め込みABAPセッションのライフサイクルにバインドされます。したがって、エラーやダンプなど、ABAPセッションの終了につながるアクションは、AMQP接続をすぐに閉じます。

タイトルとURLをコピーしました