A.1.2 トラブルシューティングのステップ
-
Javaコードは
TravelAgencyController
クラスの@LRA
注釈付きメソッドbooking()
に入ります。TravelAgency
のPDB (Travel PDB
)のDBA_SAGAS
に対する問合せは、次の状態を示します:Travel PDB:
SELECT id, initiator, coordinator, status FROM dba_sagas;
ID イニシエータ コーディネータ ステータス abc123
TravelAgency
TACoordinator
Initiated
この時点で、参加者は登録されていません。新しく作成されたSagaには、Saga識別子'abc123'が割り当てられています。
-
このステップは、参加者
Airline
がSagaコーディネータにACKを送信することによって、Sagaに正式に参加することに対応しています。これはSagaフレームワークによって処理され、Sagaイニシエータからの結合メッセージによって開始されます。Sagaイニシエータは、次のコード・セグメントに示すようにsendRequest()
コールを呼び出します:saga.sendRequest ("Airline", bookingPayload);
ACKはコーディネータPDBと参加者PDBの両方に記録されます。次のステップ3と4は、各PDBのSagaディクショナリ・ビューに示されているように、操作の時系列を表しています。
Airline PDB (ACK開始)
SELECT id, participant, initiator, status FROM dba_sagas WHERE id='abc123';
ID 参加者 イニシエータ ステータス abc123
Airline
TravelAgency
Joining
-
トラベル・コーディネータ(
TACoordinator
)は非同期ACKメッセージを受信し、指定されたSagaの参加者セットに参加者(Airline
)を追加して、応答メッセージを送信することで応答します。Travel Coordinator PDB (ACK受信):
SELECT id, participant, status FROM dba_saga_participant_set WHERE id='abc123';
ID 参加者 ステータス abc123
TravelAgency
Joined
-
Airline
はSagaコーディネータからACKメッセージを受信し、@Request
注釈付きメソッド:handleTravelAgencyRequest()
を使用して、Sagaペイロードの処理を開始します。Airline PDB (ACK完了):
SELECT id, participant, initiator, status FROM dba_sagas WHERE id='abc123';
ID 参加者 イニシエータ ステータス abc123
Airline
TravelAgency
Joined
参加確認のプロセスは、AQメッセージング、伝播および通知を使用して実行されます。参加メッセージはソースOUTキュー(この例では
SAGA$_AIRLINE_OUT_Q1
)でエンキューされ、メッセージ・ブローカを経由して、SagaコーディネータのINキュー(SAGA$_TACOORDINATOR_IN_Q1
)に伝播されます。 -
Airline
から応答を受信すると、イニシエータ(TravelAgency
)はSagaをファイナライズ(コミット)します。ファイナライズ・プロセスには、次の状態遷移が含まれます。Travel PDB:
SELECT id, initiator, coordinator, status FROM dba_sagas WHERE id='abc123';
ID イニシエータ コーディネータ ステータス abc123
TravelAgency
TACoordinator
Committed
-
Airline
はコミット・メッセージを受信して、独自のコミット・アクションを開始します。これにより、参加者のPDBでSagaがJoined
からCommitted
に遷移します。Airline
はコミットのステータスを示すメッセージを、コーディネータに送信します。Airline PDB:
SELECT id, participant, initiator, status FROM dba_sagas WHERE id='abc123';
ID 参加者 イニシエータ ステータス abc123
Airline
TravelAgency
Committed
-
最後のステップは、
TACoordinator
がAirline
の最終ステータスを登録することに対応します。これは、dba_saga_participant_set
ビューに反映されます。Travel Coordinator PDB:
SELECT id, participant, status FROM dba_saga_participant_set WHERE id='abc123';
ID 参加者 ステータス abc123
TravelAgency
Committed