本文へスキップ

AI運用の判断と根拠を引く

トップへ戻る

キューとメッセージブローカーでAI Agentを非同期に動かす

用語・参照用語・参照公式仕様のみ公式仕様のみ現行現行として扱う

記事状態: 公開 · 最終確認: 2026-10-20

要点

キューは、依頼を受け付ける処理と、AIや外部ツールで実行する処理を時間的に分離します。待ち行列に入れたことは、業務が完了したことではありません。また、再配信や再試行は通常の故障回復経路です。Agentがメール送信や発注を行う場合は、メッセージの配送保証と、業務上の作用を一度に抑える制御を分けて設計します。

現在の判断

Amazon SQSのstandard queueは、保存したメッセージのコピーが再び配信される可能性を説明し、アプリケーションの冪等性を求めています[S1]。visibility 処理待ち時間の上限は、受信済みメッセージを一時的に見えなくする期間です。期限内に削除しなければ再配信され得ます。絶対的な重複排除や外部処理のロックを保証するものではありません[S2: Handling failures / Understanding visibility 処理待ち時間の上限]。

どこまで当てはまるか

キューとメッセージブローカーでAI Agentを非同期に動かす

詳しく理解する

仕組みと設計

SQSのような作業キューでは、処理が終わったメッセージをacknowledge・削除する設計が中心になります。Kafkaのようなログでは、保存された記録と利用側 groupの読取位置を管理し、再読込が可能です。これらは概念の違いであり、製品を二つの箱へ完全に分類するものではありません。Pub/Sub、Service Bus、NATS等を選ぶ場合も、採用する配信方式と構成ごとに同じ確認を行います。

確認する契約Agent運用で必要になる理由
配送・保持再配信、保持期限、障害時の依頼消失を扱う
順序同じ顧客・案件の変更順を守る範囲を決める
同時実行worker数だけでなく外部APIと人の承認容量を守る
再試行再試行可能な失敗と結果不明・永続失敗を分ける
隔離不正形式や権限不足の案件をDLQ等へ分ける
再生修正後に何を再実行し、何を照合だけにするか決める

製品名から保証を推定せず、queue種別、partition・message group、保持期間、ack条件、利用側設定、DLQ設定を固定します。順序を保証する単位を大きくすると、先頭の一件が後続を止める可能性があります。並列化のために単位を小さくすると、関連する操作が競合し得ます。

MESSAGE AND EFFECT CONTRACT

以下は辞典が提案する最小契約です。メッセージには業務操作内容 ID、メッセージID、試行ID、組織の利用環境、依頼者、対象資源、対象版、入力資料内の該当箇所/hash、期限、必要な権限・承認の参照を持たせます。モデルが作ったJSONを、そのまま権限のある命令として受け取りません。workerは実行時に依頼の有効性と認可を再確認します。

業務操作内容 IDは、同じ意図の再試行で維持します。試行IDは変えます。外部APIが冪等性keyを提供するなら、その有効範囲・保存期間・入力不一致時の動作を確認します。アプリの「処理済み」記録と外部作用の間には障害の隙間があるため、記録しただけで作用の一回性を保証しません。

たとえば発注APIが成功した直後にworkerが停止し、ackできなかった場合、メッセージは再配信される可能性があります。次のworkerは再発注を先に行わず、操作内容 IDで外部の成立結果を照合します。既に成立なら記録を補って完了にし、不成立が確認できた場合だけ再試行します。照合できなければ結果不明のまま担当者へ渡します。処理待ち時間の上限を失敗と決めつけた再送が、二重発注を起こします。

BACKPRESSURE AND OBSERVABILITY

キュー長だけでなく、最古の待機時間、到着率、実処理時間、再配信率、DLQ滞留、結果不明件数、外部APIの残り容量を観測します。高価な長文依頼と短い依頼を同じ一件として数えると容量を誤ります。token量、添付サイズ、必要なツール回数等を補助情報にし、受付と同時実行を制限します。

モデル・prompt・ツール定義が変わった後の再生では、旧メッセージの入力と新しい実装が同じ意味で処理できるかを確認します。過去の承認を無条件に使い回しません。payloadに秘密情報を大量に入れず、権限と保存期間を管理できる原本参照を利用します。ログにもtokenや機密本文を無制限に複製しません。

SOURCES AND PROVENANCE

確認できていること

  • Amazon SQSのstandard queueは、保存したメッセージのコピーが再び配信される可能性を説明し、アプリケーションの冪等性を求めています[S1]。visibility 処理待ち時間の上限は、受信済みメッセージを一時的に見えなくする期間です。期限内に削除しなければ再配信され得ます。絶対的な重複排除や外部処理のロックを保証するものではありません[S2: Handling failures / Understanding visibility 処理待ち時間の上限]。

    Apache Kafkaの設計文書は、トランザクションで入力offsetと出力topicを対応させる方法を説明する一方、外部システムへの書込みでは、その出力と利用側位置を協調させる必要があると区別しています[S3: Message Delivery Semantics]。Kafka内のexactly-once処理という性質を、任意のHTTP APIや銀行・メール等の副作用へ延長しません。

よくある失敗・反証

  • 失敗制御読み戻す証拠
    worker停止で再配信操作内容単位の冪等性と結果照合外部結果と処理記録の対応
    長い推論中にvisibility失効作業単位を短くし、必要時に期限更新更新失敗と二重workerの有無
    古いworkerが遅れて書込む対象版・世代を使う条件付き更新新しい結果が上書きされないこと
    再試行が外部障害を増幅上限、backoff、jitter、受付制御試行回数、429、待ち時間
    認可失敗を反復永続失敗として隔離し責任者へ期限・権限の失敗原因
    DLQへ移して放置担当者、修正条件、再投入手順を定義受領・解決・再投入結果

    ackは、どの状態まで永続化したら行うかを明示します。AIの文章が得られた時点、承認された時点、外部作用が確認された時点は異なります。実行前の計画作成と実行を別メッセージに分ける場合も、承認された計画hashと実際の入力が一致することを確認します。

まだ確認できていないこと

  • EA-232-UNKNOWN-01

    今回、実ブローカーへの負荷試験や外部APIの副作用試験は実施していません。製品別の配信モード・保持・利用枠・順序・トランザクション構成、実APIの冪等性、障害時の再配信率、組織固有の容量は未確認事項です。上の制御表は設計案であり、そのまま配置すれば一回性を保証する共通実装ではありません。原本の停止・取消と、すでに外部へ到達した作用の取消も分けます。

根拠資料

更新履歴

  1. EA-232-RESEARCH-20261020-R1: 正式な 監査/publication 対応付け

出典ID・検証情報・機械可読データ

根拠の種類と情報の鮮度は、ラベルとアイコンで確認できます。

記事ID
EA-232
最終確認日
2026-10-20
提供元・モデル・プラン・利用環境
—
対象地域
—
元資料の全文と収録照合記録
PUBLIC_CLAIM

キューは、依頼を受け付ける処理と、AIや外部ツールで実行する処理を時間的に分離します。待ち行列に入れたことは、業務が完了したことではありません。また、再配信や再試行は通常の故障回復経路です。Agentがメール送信や発注を行う場合は、メッセージの配送保証と、業務上の作用を一度に抑える制御を分けて設計します。

ESTABLISHED

Amazon SQSのstandard queueは、保存したメッセージのコピーが再び配信される可能性を説明し、アプリケーションの冪等性を求めています[S1]。visibility timeoutは、受信済みメッセージを一時的に見えなくする期間です。期限内に削除しなければ再配信され得ます。絶対的な重複排除や外部処理のロックを保証するものではありません[S2: Handling failures / Understanding visibility timeout]。

Apache Kafkaの設計文書は、トランザクションで入力offsetと出力topicを対応させる方法を説明する一方、外部システムへの書込みでは、その出力とconsumer位置を協調させる必要があると区別しています[S3: Message Delivery Semantics]。Kafka内のexactly-once処理という性質を、任意のHTTP APIや銀行・メール等の副作用へ延長しません。

DESIGN_BOUNDARY

SQSのような作業キューでは、処理が終わったメッセージをacknowledge・削除する設計が中心になります。Kafkaのようなログでは、保存された記録とconsumer groupの読取位置を管理し、再読込が可能です。これらは概念の違いであり、製品を二つの箱へ完全に分類するものではありません。Pub/Sub、Service Bus、NATS等を選ぶ場合も、採用する配信方式と構成ごとに同じ確認を行います。

確認する契約Agent運用で必要になる理由
配送・保持再配信、保持期限、障害時の依頼消失を扱う
順序同じ顧客・案件の変更順を守る範囲を決める
同時実行worker数だけでなく外部APIと人の承認容量を守る
再試行retry可能な失敗と結果不明・永続失敗を分ける
隔離不正形式や権限不足の案件をDLQ等へ分ける
再生修正後に何を再実行し、何を照合だけにするか決める

製品名から保証を推定せず、queue種別、partition・message group、保持期間、ack条件、consumer設定、DLQ設定を固定します。順序を保証する単位を大きくすると、先頭の一件が後続を止める可能性があります。並列化のために単位を小さくすると、関連する操作が競合し得ます。

MESSAGE_AND_EFFECT_CONTRACT

以下は辞典が提案する最小契約です。メッセージには業務operation ID、メッセージID、試行ID、tenant、依頼者、対象資源、対象版、入力locator/hash、期限、必要な権限・承認の参照を持たせます。モデルが作ったJSONを、そのまま権限のある命令として受け取りません。workerは実行時に依頼の有効性と認可を再確認します。

業務operation IDは、同じ意図の再試行で維持します。試行IDは変えます。外部APIが冪等性keyを提供するなら、その有効範囲・保存期間・入力不一致時の動作を確認します。アプリの「処理済み」記録と外部作用の間には障害の隙間があるため、記録しただけで作用の一回性を保証しません。

たとえば発注APIが成功した直後にworkerが停止し、ackできなかった場合、メッセージは再配信される可能性があります。次のworkerは再発注を先に行わず、operation IDで外部の成立結果を照合します。既に成立なら記録を補って完了にし、不成立が確認できた場合だけ再試行します。照合できなければ結果不明のまま担当者へ渡します。timeoutを失敗と決めつけた再送が、二重発注を起こします。

FAILURE_AND_CONTROL
失敗制御読み戻す証拠
worker停止で再配信operation単位の冪等性と結果照合外部結果と処理記録の対応
長い推論中にvisibility失効作業単位を短くし、必要時に期限更新更新失敗と二重workerの有無
古いworkerが遅れて書込む対象版・世代を使う条件付き更新新しい結果が上書きされないこと
retryが外部障害を増幅上限、backoff、jitter、受付制御試行回数、429、待ち時間
認可失敗を反復永続失敗として隔離し責任者へ期限・権限の失敗原因
DLQへ移して放置owner、修正条件、再投入手順を定義受領・解決・再投入結果

ackは、どの状態まで永続化したら行うかを明示します。AIの文章が得られた時点、承認された時点、外部作用が確認された時点は異なります。実行前の計画作成と実行を別メッセージに分ける場合も、承認された計画hashと実際の入力が一致することを確認します。

BACKPRESSURE_AND_OBSERVABILITY

キュー長だけでなく、最古の待機時間、到着率、実処理時間、再配信率、DLQ滞留、結果不明件数、外部APIの残り容量を観測します。高価な長文依頼と短い依頼を同じ一件として数えると容量を誤ります。token量、添付サイズ、必要なtool回数等を補助情報にし、受付と同時実行を制限します。

モデル・prompt・tool定義が変わった後の再生では、旧メッセージの入力と新しい実装が同じ意味で処理できるかを確認します。過去の承認を無条件に使い回しません。payloadに秘密情報を大量に入れず、権限と保存期間を管理できる原本参照を利用します。ログにもtokenや機密本文を無制限に複製しません。

LIMITATIONS_AND_OPEN_UNKNOWN

今回、実ブローカーへの負荷試験や外部APIの副作用試験は実施していません。製品別の配信モード・保持・quota・順序・トランザクション構成、実APIの冪等性、障害時の再配信率、組織固有の容量はUNKNOWNです。上の制御表は設計案であり、そのまま配置すれば一回性を保証する共通実装ではありません。原本の停止・取消と、すでに外部へ到達した作用の取消も分けます。

SAFE_WORDING

「非同期受付と再配信を前提に、対象構成で結果照合を実装・検証した」と表現します。「キューへ入ったので完了」「exactly-onceなので二重作用はない」とは記しません。Agentの成功報告を信用せず、業務側の結果をreadbackします。

SOURCES_AND_PROVENANCE
  • EVD-EA-232-URL-55784620EADE研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    [S1] AWS, SQS at-least-once delivery.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-232-URL-55784620EADE
    検証箇所
    SOURCES_AND_PROVENANCE · S1 · - [S1] AWS, SQS at-least-once delivery. https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues-at-least-once-delivery.html
    適用範囲
    SOURCES_AND_PROVENANCE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-232-URL-610FBD2EE3C2研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    [S2] AWS, SQS visibility timeout.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-232-URL-610FBD2EE3C2
    検証箇所
    SOURCES_AND_PROVENANCE · S2 · - [S2] AWS, SQS visibility timeout. https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html
    適用範囲
    SOURCES_AND_PROVENANCE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EVD-EA-232-URL-9E493C29EF9B研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCE

    [S3] Apache Kafka 4.2, Design / Message Delivery Semantics.

    裏付ける内容
    —
    確認日
    —
    出典・実験ID
    SRC-EA-232-URL-9E493C29EF9B
    検証箇所
    SOURCES_AND_PROVENANCE · S3 · - [S3] Apache Kafka 4.2, Design / Message Delivery Semantics. https://kafka.apache.org/42/design/design/
    適用範囲
    SOURCES_AND_PROVENANCE
    出典・来歴
    SOURCE_PACKET_REFERENCE_PROJECTED
    限界
    元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
  • EA-232-CURRENT-APPROVAL研究資料研究資料根拠の出所: AUDITED_CANONICAL_RESEARCH_PACKET

    現行本文の監査・revision対応

    裏付ける内容
    現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。
    確認日
    —
    出典・実験ID
    MANUAL-EA232-DRAIN-20261020-C1
    検証箇所
    1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ/EA_REVISION_LEDGER#ea_id=EA-232&revision_id=EA-232-RESEARCH-20261020-R1&candidate_id=MANUAL-EA232-DRAIN-20261020-C1 · EA-232-RESEARCH-20261020-R1
    適用範囲
    —
    出典・来歴
    CURRENT_CANONICAL_APPROVAL_READBACK
    限界
    監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。
  • EA-232-CURRENT-BODY-READBACK実装資料実装資料根拠の出所: IMPLEMENTATION_READBACK

    現行本文の収録照合

    裏付ける内容
    公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。
    確認日
    2026-10-21
    出典・実験ID
    BODY-SHA256:b88396fb56bbf8b953d25e79140d9ca71144bfbe72f7f4a2c56fc61dec0c0d68
    検証箇所
    content/staging/EA-232.md · b88396fb56bbf8b953d25e79140d9ca71144bfbe72f7f4a2c56fc61dec0c0d68 · EA-232-RESEARCH-20261020-R1
    適用範囲
    —
    出典・来歴
    CURRENT_APPROVED_BODY_HASH_MATCH
    限界
    本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。
出典ID
MANUAL-EA232-DRAIN-20261020-C1, SRC-EA-232-URL-55784620EADE, SRC-EA-232-URL-610FBD2EE3C2, SRC-EA-232-URL-9E493C29EF9B, BODY-SHA256:b88396fb56bbf8b953d25e79140d9ca71144bfbe72f7f4a2c56fc61dec0c0d68
追跡中のUNKNOWN ID
EA-232-UNKNOWN-01
再確認のきっかけ
正式な 改訂版/publication 状態 change · 本文 成果物 hash change · 出典 現行性 change · new contradiction or 実装 結果の照合

機械検査: 通過 — 機械検査の結果です。情報の正確性や実行の承認を保証するものではありません。

    同じ記事IDの機械可読データです。