ではありません Apache Kafka
JMS
の別の実装?
私は使っている JMS+AMQ
私のアプリケーションで、Apache Kafka
。すべてのJMS
コードを変更する必要がありますか?
いいえ、KafkaはActiveMQなどのJMSシステムとは異なります。 ActiveMQ vs Apollo vs Kafka を参照してください。
Kafkaは、パフォーマンスに重点が置かれているため、ActiveMQよりも機能が少なくなっています。そのため、移行する前に、AMQで使用する機能がKafkaにあることを確認してください。
ただし、JMSとKafkaの間のブリッジについては、必要なものを正確に提供するためのオープンな提案があります。提供されているリンクが役立つ場合があります https://issues.Apache.org/jira/browse/KAFKA-1995
いいえ、Kafkaは独自の非標準プロトコルとクライアントを使用します。
ただし、サードパーティがあります Kafka= ConfluentからのJMSクライアント 。
実際、この2つは同じではありません。そして、2つの共存を見る時間をもう少し取り、フィールドでそれぞれを展開している人々からの問題や幸福な点を聞いて、それぞれについてもう少し言います。
まず、[〜#〜] jms [〜#〜]は両方point-to-pointメッセージング(メッセージは単一のコンシューマに送信され、コンシューマ自体がメッセージキューを維持します)およびpublish-and-subscribe( pub/sub)モデル(メッセージは単一のトピックに書き込まれ、消費者は独立して消費するメッセージを決定します)。
ポイントツーポイントメッセージングアーキテクチャでは、メッセージのプロデューサーとコンシューマーはお互いを知っていますが、pub/subモデルではそうではありません。 Apache Kafkaはpub/subモデルに焦点を当て、個別のログを維持します消費者がオフセットから読み取る/ topic。 Kafkaは、 クラウド用に構築 、、高スループットのコア検討事項です。
私たちのコミュニティとミートアップの多くは、JMSのようなMOM(メッセージ指向ミドルウェア)に不満を抱き、Kafkaに切り替えます。 Kafkaはパーティション化されたトピックログを保持するため、Kafkaは他のMOMよりもスケールに適していると主張します。そうすることで、Kafkaは、パーティションごとにメッセージフローをコンシューマのグループに分割し、メッセージをバッチ送信できます。
この概念により、KafkaがKafka消費者へのACL(アクセス制御)をよりきめ細かく制御できるようになりますが、Apache Pulsarが取り組んでいるいくつかの問題があります。
最後に、Kafkaでは、クライアント/コンシューマが消費するメッセージを(トピックのオフセットによって)決定するため、JMSなどのMOMに組み込まれたルーティングルールのプロデューサ側の複雑さの一部が取り除かれます。
それよりも多くの違いがありますが、これは今後も続くもののいくつかの蒸留です!お役に立てれば。