Trong xử lý tin nhắn truyền thống, bạn áp dụng tính toán đơn giản trên thư - trong hầu hết các trường hợp riêng lẻ cho mỗi thư.
Trong quá trình xử lý luồng, bạn áp dụng các thao tác phức tạp trên nhiều luồng đầu vào và nhiều bản ghi (ví dụ, thư) cùng một lúc (như tổng hợp và kết nối).
Hơn nữa, hệ thống nhắn tin truyền thống không thể "quay ngược thời gian" - tức là, tự động xóa thư sau khi chúng được gửi tới tất cả người tiêu dùng đã đăng ký. Ngược lại, Kafka giữ các thông điệp vì nó sử dụng một mô hình dựa trên kéo (ví dụ, dữ liệu kéo người tiêu dùng ra khỏi Kafka) trong một khoảng thời gian có thể cấu hình được. Điều này cho phép người tiêu dùng "tua lại" và tiêu thụ tin nhắn nhiều lần - hoặc nếu bạn thêm người tiêu dùng mới, nó có thể đọc toàn bộ lịch sử. Điều này làm cho quá trình xử lý luồng có thể, bởi vì nó cho phép các ứng dụng phức tạp hơn. Hơn nữa, xử lý luồng không nhất thiết phải xử lý theo thời gian thực - đó là về xử lý luồng đầu vào vô hạn (trái ngược với xử lý hàng loạt được áp dụng cho các đầu vào hữu hạn).
Và Kafka cung cấp Kafka Connect và Streams API - vì vậy nó là một nền tảng xử lý luồng và không chỉ là một hệ thống nhắn tin/pub-sub (ngay cả khi nó sử dụng trong lõi của nó).
Nguồn
2017-01-19 18:44:58
Tôi nghĩ bạn có thể tìm thấy https://www.quora.com/What-are-the-differences-between-Apache-Kafka-and-RabbitMQ thú vị –