メッセージング系ミドルウェア¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. 送信元と宛先の対応関係¶
プロデュース/コンシュームパターン¶
▼ プロデュース/コンシュームパターンとは¶
▼ プルベース¶
- AWS SQS
▼ プッシュベース¶
パブリッシュ/サブスクライブパターン¶
▼ パブリッシュ/サブスクライブパターンとは¶
送信元から宛先に非同期的に一方向で通信する。
送信元と宛先で通信処理が独立して実行されるため、メッセージキューやメッセージブローカーを経由した非同期通信を実行することになる。
送信元はメッセージブローカーやメッセージキューにメッセージをパブリッシュする。
プルベースベースの場合、宛先はメッセージブローカーやメッセージキューからメッセージにポーリングを実行し、サブスクリプションする。
プッシュベースの場合、メッセージブローカーやメッセージキューは、メッセージを宛先にサブスクリプションする。
▼ プルベース¶
- RabbitMQ (プルベースだけでなく、プッシュベースも選べる)
- Apache Kafka
▼ プッシュベース¶
- RabbitMQ (プッシュベースだけでなく、プルベースも選べる)
- AWS SNS
- AWS EventBridge
ストリーミングパターン¶
▼ ストリーミングパターンとは¶
プルベースベースの場合、宛先はメッセージブローカーやメッセージキューからメッセージにポーリングを実行し、ストリーミングする。
プッシュベースの場合、メッセージブローカーやメッセージキューは、メッセージを宛先にストリーミングする。
▼ プルベース¶
- Apache Kafka
- AWS Kinesis (プルベースだけでなく、プッシュベースも選べる)
▼ プッシュベース¶
- AWS Kinesis (プッシュベースだけでなく、プルベースも選べる)
02. 宛先のメッセージ受信方式¶
プルベース¶
メッセージの宛先は、メッセージブローカーやメッセージキューにポーリングを実行し、メッセージを受信する。
宛先で障害が起こっていても、障害の回復後にメッセージを処理すればよいため、耐障害性が高い。
プッシュベース¶
メッセージブローカーやメッセージキューは、宛先にメッセージを送信する。
宛先で障害が起こっていると、メッセージが損失する可能性があるため、耐障害性が低い。
これに対処するために、メッセージブローカーやメッセージキューで、リトライやデッドレターキューが必要になる。