コンテンツにスキップ

メッセージング系ミドルウェア

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. 送信元と宛先の対応関係

プロデューサー/コンシューマーパターン

▼ プロデューサー/コンシューマーパターンとは

▼ プルベース

  • AWS SQS

▼ プッシュベース


パブリッシュ/サブスクライブパターン

▼ パブリッシュ/サブスクライブパターンとは

送信元から宛先に非同期的に一方向で通信する。

送信元と宛先で通信処理が独立して実行されるため、メッセージキューやメッセージブローカーを経由した非同期通信を実行することになる。

送信元はメッセージブローカーやメッセージキューにメッセージをパブリッシュする。

プルベースベースの場合、宛先はメッセージブローカーやメッセージキューからメッセージにポーリングを実行し、サブスクリプションする。

プッシュベースの場合、メッセージブローカーやメッセージキューは、メッセージを宛先にサブスクリプションする。

▼ プルベース

  • RabbitMQ (プルベースだけでなく、プッシュベースも選べる)
  • Apache Kafka

▼ プッシュベース

  • RabbitMQ (プッシュベースだけでなく、プルベースも選べる)
  • AWS SNS
  • AWS EventBridge


ストリーミングパターン

▼ ストリーミングパターンとは

プルベースベースの場合、宛先はメッセージブローカーやメッセージキューからメッセージにポーリングを実行し、ストリーミングする。

プッシュベースの場合、メッセージブローカーやメッセージキューは、メッセージを宛先にストリーミングする。

▼ プルベース

  • Apache Kafka
  • AWS Kinesis (プルベースだけでなく、プッシュベースも選べる)

▼ プッシュベース

  • AWS Kinesis (プッシュベースだけでなく、プルベースも選べる)


02. 宛先のメッセージ受信方式

プルベース

メッセージの宛先は、メッセージブローカーやメッセージキューにポーリングを実行し、メッセージを受信する。

宛先で障害が起こっていても、障害の回復後にメッセージを処理すればよいため、耐障害性が高い。


プッシュベース

メッセージブローカーやメッセージキューは、宛先にメッセージを送信する。

宛先で障害が起こっていると、メッセージが損失する可能性があるため、耐障害性が低い。

これに対処するために、メッセージブローカーやメッセージキューで、リトライやデッドレターキューが必要になる。