Kafkaとどう使い分ける?
RabbitMQはメッセージの「確実な配信」に強い。複雑なルーティング(Exchange Type)で宛先を柔軟に振り分けられる。Kafkaは「大量データのストリーミング」に強い。RabbitMQは注文処理やタスクキュー(1回だけ確実に処理)、Kafkaはログ収集やイベントストリーミング(大量データの並列処理)が得意分野だよ
Exchange って何?
ProducerはExchangeにメッセージを送り、ExchangeがルーティングルールでQueueに振り分ける。①Direct(ルーティングキー完全一致)、②Fanout(全Queueにブロードキャスト)、③Topic(ワイルドカードマッチ)、④Headers(ヘッダーベース)の4種類。この柔軟なルーティングがRabbitMQの大きな強みだよ
メッセージは消えない?
設定次第。①メッセージの永続化(durable queue + persistent message)でディスクに書き込み、②Consumer からの確認応答(ack)でメッセージの処理完了を保証、③nackやrejectで処理失敗を通知してリキューまたはデッドレターキューに送れる。「最低1回配信」の保証が得られるよ
性能のボトルネックは?
RabbitMQの弱点はスループット。Kafkaが毎秒数百万メッセージ捌ける一方、RabbitMQは数万〜数十万が目安。キューの長さが数百万を超えるとメモリ不足やパフォーマンス劣化が起きる。対策はLazy Queue(メッセージをディスクに格納)やQuorum Queue(高可用性)の活用。大量ストリーミングにはKafka、確実配信にはRabbitMQだよ