キューとメッセージブローカーで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
- [S1] AWS, SQS at-least-once delivery. https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues-at-least-once-delivery.html (2026-10-20確認、製品仕様)
- [S2] AWS, SQS visibility 処理待ち時間の上限. https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html (同日確認、製品仕様)
- [S3] Apache Kafka 4.2, Design / Message Delivery Semantics. https://kafka.apache.org/42/design/design/ (同日確認、OSS開発主体による設計説明)
- 旧記録: R1R-004-EA0232、退避Doc 1Vd0BP7G2UyPDRQs_-8dPvTgQ78Tk6kcVGuMJjqNdr84 tab t.0:6543–7028。先行成果未発見という所在記録であり、完成調査として使用していません。旧candidate 1GqJI_GN42oCiWfC7AwTksmGO2vUPSd41は2026-10-20の実取得でmanifestなし・空payloadと確認。旧内容を推測せず、新主体の識別で本記事を作成しました。
確認できていること
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の冪等性、障害時の再配信率、組織固有の容量は未確認事項です。上の制御表は設計案であり、そのまま配置すれば一回性を保証する共通実装ではありません。原本の停止・取消と、すでに外部へ到達した作用の取消も分けます。
根拠資料
- 研究資料研究資料
[S1] AWS, SQS at-least-once delivery.
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
[S2] AWS, SQS visibility 処理待ち時間の上限.
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
[S3] Apache Kafka 4.2, Design / Message Delivery Semantics.
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
更新履歴
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
- [S1] AWS, SQS at-least-once delivery. https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues-at-least-once-delivery.html (2026-10-20確認、製品仕様)
- [S2] AWS, SQS visibility timeout. https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html (同日確認、製品仕様)
- [S3] Apache Kafka 4.2, Design / Message Delivery Semantics. https://kafka.apache.org/42/design/design/ (同日確認、OSS開発主体による設計説明)
- 旧記録: R1R-004-EA0232、退避Doc 1Vd0BP7G2UyPDRQs_-8dPvTgQ78Tk6kcVGuMJjqNdr84 tab t.0:6543–7028。先行成果未発見という所在記録であり、完成調査として使用していません。旧candidate 1GqJI_GN42oCiWfC7AwTksmGO2vUPSd41は2026-10-20の実取得でmanifestなし・空payloadと確認。旧内容を推測せず、新identityで本記事を作成しました。
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の機械可読データです。