すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RocketMQ:グレースフルシャットダウン

最終更新日:Oct 09, 2026

グレースフルシャットダウンは、サーバー側の操作中にメッセージ損失やクライアントエラーを防ぐための ApsaraMQ for RocketMQ の組み込み機能です。サーバーがバージョンのリリース、再起動、またはメンテナンスを行う際に、ApsaraMQ for RocketMQ は保護メカニズムを有効化し、クライアントの突然の切断を防ぎ、ビジネスの継続性を確保します。

保護メカニズム

サーバー側の書き込み中断

ストレージノードが再起動する前に、サーバーはそのノードへの書き込み操作を一時的に中断します。ノードに新しいメッセージが書き込まれなくなった後にのみ、再起動が続行されます。これにより、クライアントによって既に送信されたすべてのメッセージが正常に保存されることが保証されます。

GOAWAY によるコネクションドレイニング

ApsaraMQ for RocketMQ サーバーは、HTTP/2 プロトコルで定義されたGOAWAYフレームを使用して、コネクションを正常にクローズするか、コネクションが間もなくクローズされることをクライアントに通知します。このメカニズムは、サーバーとクライアント間のコネクション終了を調整し、進行中のリクエストが中断されるのを防ぎ、システムの安定性を確保します。

影響

  • プロデューサー:すべてのメッセージ送信リクエストは正常に処理されます。グレースフルシャットダウンのプロセス中に送信の失敗は発生しません。

  • コンシューマー:ほとんどのメッセージは正常に消費されます。まれに、移行中にコンシューマーオフセットのコミットが失敗するため、再起動中のストレージノードに滞留している少数のメッセージが再配信される可能性があります。

SDK バージョンの要件

グレースフルシャットダウンを使用するには、クライアント SDK が以下の最小バージョン要件を満たしている必要があります。

Java 用 SDKJava 用 SDKGo 用 SDKPython 用 SDKC++ 用 SDKC# 用 SDK

言語最小バージョンリファレンス
Java (gRPC プロトコル)5.0.7SDK for Java
Java (Remoting プロトコル)5.3.1SDK for Java
Go5.1.0-rc.1SDK for Go
Python5.0.4SDK for Python
C++5.0.2SDK for C++
C#5.1.0SDK for C#
Node.js1.0.1SDK for Node.js

注意事項

  • クライアント側の設定は不要:グレースフルシャットダウンはサーバー側の機能です。クライアント SDK を対応バージョンにアップグレードするだけで済みます。

  • べき等性を考慮したコンシューマーの設計:短い移行期間中にコンシューマーオフセットのコミットが失敗すると、少数のメッセージが再配信される可能性があります。コンシューマーのロジックが同じメッセージを複数回安全に処理できるように設計してください。

  • SDK バージョンの積極的な監視:新しいサービスを追加したり、依存関係を更新したりする際は、お使いの ApsaraMQ for RocketMQ クライアント SDK が、グレースフルシャットダウンの最小バージョン要件を引き続き満たしていることを確認してください。