2025.08.11 更新中
自分が作ったプロジェクトはなるはや整理しましょう。。。記憶力が記憶力が、、
AMQPとは
AMQP(Advanced Message Queuing Protocol)は、メッセージ指向ミドルウェアで使用されるオープン標準のメッセージングプロトコルです。
RabbitMQなどのメッセージブローカーで広く採用されており、アプリケーション間で信頼性が高く非同期なメッセージ通信を可能にします。
RabbitMQとは? Message Queueサービス
내결함성(Fault tolerance)이 극도로 뛰어납니다3. 이는 RabbitMQ 의 특징이라기 보다 Erlang 언어의 특징이기도 합니다. 실제로 RabbitMQ 서버의 안정성에 대해 충분히 느끼고 있었기 때문에 신뢰가 갔습니다.
RabbitMQ 公式サイト:https://www.rabbitmq.com/
RabbitMQを採用した理由とWebSocketのみでは実装しなかった背景
RabbitMQ採用理由
- 数千件単位の注文データを短時間で並列処理する必要があった
- メッセージの永続化や再送制御など、確実な配送が必要だった
- バックエンド間通信やバッチ処理との相性が良く、負荷平準化が可能だった
WebSocketのみでは不十分だった理由
- WebSocketはリアルタイム通知には向くが、メッセージの永続化や再送保証は標準機能として備わっていない
- 接続切断時のメッセージ保持や再送処理を自前で実装する必要がある
- 大量データの順序制御やワーカー間の分散処理は、キューシステムを利用した方が効率的
- 今回はリアルタイム性よりも「確実な処理」と「スケーラビリティ」を優先し、RabbitMQを選択
2020年度開発プロジェクト概要
1. 不正注文検知・管理システム(Payguard連携)
- 不正利用者の注文を検知・キャンセル・管理する内部ツールを開発
- IPアドレス、カード情報、最近の注文履歴、大量購入情報などを組み合わせて判定
- Spring Boot ベースのコンシューマを実装し、バッチ処理で注文番号を収集
- 1回あたり最大4,000件の注文を並列処理
- RabbitMQキューを利用して注文締め切り時間ごとに注文を収集して判定を並列化し、外部API(Payguard API)へ送信
- APIクライアントをモジュール単位で開発し、JUnitによる単体テストが可能な構成
- API設定値は
propertiesで管理 - 送信結果をDBに反映
2. 不正注文レポート機能
- 1時間ごとにCS(カスタマーサポート)へ不正注文情報をメールで送信
- Linuxの
sendmailをシェルスクリプトから実行 - Cronで定期実行
3. 配送計画連携・通知機能
- 新しい配送計算システムの結果をバッチで取り込み、内部システムに反映
- 配送予定時間(例:13時〜14時着)を注文締切1.5時間前に一括メール通知
- 取込時のバリデーション(ファイル存在チェック、型・文字数・NULLチェック)
- エラーログ出力とリカバリ設計
- 取り込み済みファイルはバックアップし、1か月ごとに削除


