Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apache Camel vs Apache Kafka [duplicate]

As far as I know, Apache Kafka is asynchronous messaging platform, where as Apache Camel is a platform implementing the enterprise integration patterns.

So, what are the practical differences of Apache Camel and Apache Kafka? We planned to implement the system with Apache Camel, which is relatively easy, but our customer wanted the Apache Kafka instead without rational.

What would be the advantages of choosing Apache Kafka to implement a message queue functionality, which could be implemented with Apache Camel as well? I'm concerned Kafka would just introduce unnecessary overhead to project. Are we comparing apples and oranges?

What we need is straightforward API's to setup and use clustered message queues. Our initial plan was to use Camel to consume/produce on clustered JMS or ActiveMQ queues. How would Kafka make this task easier? The application itself would run on WebLogic server on either case.

The messaging would be point-to-point type, where there are multiple instances of same service running, but only one instance should process the message and emit the result according to load balancing policy. Message queues are also clustered, so neither failure of service instance or queue instance is SPOF.

like image 620
Tuomas Toivonen Avatar asked Jan 30 '18 11:01

Tuomas Toivonen


People also ask

What is the difference between Apache Camel and Kafka?

Kafka is messaging platform with streaming ability to process messages Apache Kafka. Camel is ETL framework it can transform messages/events/data from "any" (see endpoint list by Camel) input point and send it to "any" output Apache Camel - Enterprise Integration Patterns.

What is alternative to Apache Camel?

We have compiled a list of solutions that reviewers voted as the best overall alternatives and competitors to Apache Camel, including IBM App Connect, WSO2 Enterprise Service Bus, Azure Service Bus, and TIBCO Cloud Integration (including BusinessWorks and Scribe).

What is replacement of Kafka?

Amazon Kinesis, also known as Kinesis Streams, is a popular alternative to Kafka, for collecting, processing, and analyzing video and data streams in real-time. It offers timely and insightful information, streaming data in a cost-effective manner with complete flexibility and scalability.

Is Apache Camel A message broker?

Camel supports the Message Broker from the EIP patterns book. How can you decouple the destination of a message from the sender and maintain central control over the flow of messages?


2 Answers

Camel and Kafka are totally different things. In many use cases, camel is just used as a client of kafka/activemq/... .

Kafka and activemq are similar, but also different things, refer What is the difference between Apache kafka vs ActiveMQ. Kafka has higher throughput, and data always on disk, so a little more reliable than activemq.

Kafka is usually used as real-time data streaming, and in general activemq is mainly used for integration between applications, the book says so. But in most real world cases ,kafka and activemq can replace each other easily.

like image 139
Mobility Avatar answered Nov 03 '22 18:11

Mobility


It is very hard to compare those two. They are not covering the same areas of work, but exist some systems, where you can replace one by the other.

So very shortly.

Kafka is messaging platform with streaming ability to process messages Apache Kafka.

Camel is ETL framework it can transform messages/events/data from "any" (see endpoint list by Camel) input point and send it to "any" output Apache Camel - Enterprise Integration Patterns.

You may use Camel without Kafka at all, and vice versa. But there are of course possibilities to use succesfully both together.

  • Case 1. You process mail and store in PostgreSQL DB. Kafka is useless here.
  • Case 2. You process messages from ActiveMQ and send them to Kafka. You may use both.
like image 32
Seweryn Habdank-Wojewódzki Avatar answered Nov 03 '22 19:11

Seweryn Habdank-Wojewódzki