kafka serializer và deserializer
hi mn, em đang sử dụng kafka cho sản phẩm của mình. Về việc ser/des thì trong dự án thực tế thì mn hay dùng cách nào để ser/des vậy ạ? em tính sử dụng avro nhưng lại phải cài thêm schema registry vậy nên dùng Json/Protobuf/Avro sẽ tốt hơn ạ?
Đa luồng với Kafka Consumer
Tks a vì câu trả lời !
<p>
</p>
<p>
Em có dùng <strong>@KafkaListener</strong> để nhận tin nhắn sau đó gửi gmail (tốn nhiều thời gian) cho user.Em dùng đa luồng cho chức năng này để giải quyết vấn đề treo thread khi xử lý trong listener (do listener mặc định có 1 thread )
</p>
<p>
</p>
<p>
Em có 2 lựa chọn :
</p>
<ol>
<li>Như em nói ở trên dùng <strong>@Async</strong> và <strong>ThreadPool</strong></li>
<li>Cấu hình số luồng của listener thông qua <strong><em>setConcurrency</em></strong> <em>(như bên dưới)</em></li>
</ol>
<pre><span>@Bean</span>
public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<<span>String</span>, <span>String</span>>> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<<span>String</span>, <span>String</span>> <span>factory</span> = <span>new</span> ConcurrentKafkaListenerContainerFactory<>();
<span>factory</span>.setConsumerFactory(consumerFactory());
<span>factory</span>.setConcurrency(<span>5</span>);
......
}
</pre>
<p>
</p>
<p>
Anh cho em hỏi 2 cách này có em nên dùng cách nào hiệu quả hơn và vì sao ạ hoặc n ếu anh có cách nào hay hơn thì mong anh recommend cho em với ạ.
</p>
Hỏi về việc gửi tin nhắn qua Message Queue (RabbitMQ,Kafka)
<em>Xin chào mọi người,</em>
<p>
</p>
<p>
Theo em được biết thì trong 1 hệ thống <em><strong>Microservices</strong> </em>thì các chức năng như gửi Mail, SMS cho khách hàng thì sẽ được tách thành 1 service mới.Khi cần gửi mail thì sẽ gửi 1 message đến MQ trung gian (Kafka,RabbitMQ,..) chứ không gửi theo kiểu request như thông thường.
</p>
<p>
</p>
<p>
Em có tìm hiểu nhưng cách giải thích của mọi người trên mạng vẫn làm em mơ hồ chưa hiểu rõ cho lắm.Em chỉ hiểu đơn giản là gửi message qua 1 MQ trung gian như vậy thì đỡ tốn thời gian hơn so với bình thường vì sẽ gửi 1 cách<em><strong> bất đồng bộ</strong></em> và không cần phản hồi từ service đã gửi.Theo em nghĩ thì việc áp dụng 1 MQ trung gian như vậy chắc chắn sẽ có rất nhiều lợi ích.Nên em đặt câu hỏi ở đây và mong được anh chị có kinh nghiệm giải đáp giúp em ạ.
</p>
<p>
</p>
<p>
Em có câu hỏi là :
</p>
<ol>
<li>Ngoài service như gửi Mail, SMS thì trong thực tế các service có chức năng kiểu như thế nào thì nên áp dùng kiểu gửi message thông qua MQ như trên vậy ạ? Cho em xin 1 số ví dụ cụ thể với ạ.</li>
<li>Vì sao trong thức tế người lại dùng đến các MQ như Kafka, RabbitMQ vậy ạ ?</li>
<li><strong>Tất cả ưu điểm/khuyết điểm (nếu có)</strong> của mẫu thiết kế gửi message 1 cách bất đồng bộ qua MQ trung gian là gì ạ ?</li>
</ol>
<p>
Em cảm ơn mọi người rất nhiều ạ !
</p>
Thự tự tin nhắn trong Kafka
Chào mọi người,
<p>
</p>
<p>
Ví dụ trong Kafka e tạo <strong>1 topic</strong> gồm có <strong>5 partition.</strong>Theo em hiểu thì khi 1 Consumer nhận message từ topic thì sẽ nhận được từ message từ tất cả partition của topic đó.
</p>
<ol>
<li>Em muốn hỏi là <strong>Consumer</strong> khi nhận các message từ Kafka (<em>nhiều</em> <em>partition</em>) thì có <strong><em>đảm bảo đúng với với thứ tự được gửi</em></strong> không ạ ?</li>
<li>Nếu câu 1 câu tra lời là <strong>không</strong> đảm bảo thì có cách nào để <strong>đảm bảo</strong> nhận được các message <strong>theo thứ tự</strong> được gửi không ạ ? ( ví dụ 1 chức năng cần xử lý theo 1 tuần tự nhất định)</li>
</ol>
<p>
</p>
EzyKafka khác gì thư viện kafka official?
Hi anh, anh có thể brief qua ezykafka của monkeys có điểm gì nổi bật hơn thư viện official k ạ. Em muốn hiểu rõ hơn về ưu điểm/nhược điểm của ezykafka mà k thấy docs có ghi?
Start kafka localhost
Start kafka localhost
Hỏi về đa luồng khi làm việc với Kafka Consumer
Chào mọi người,
<p>
</p>
<p>
Hiện tại thì em mới tìm hiểu về Kafka gần đây nên kiến thức về Kafka và cả kiến thức đa luồng trong Java của em chỉ ở mức cơ bản thôi ạ.
</p>
<p>
</p>
<p>
Em có một câu hỏi muốn hỏi anh Dũng và mọi người là:
</p>
<ol>
<li>Em dùng @KafkaListener để nhận message từ 1 topic.</li>
<li>Sau khi nhận message từ Kafka thì sẽ xử lý 1 tác vụ rất <strong>lâu</strong> mà em muốn cải thiện hiệu năng em mới quyết định config đa luồng cho hàm listener này bằng thuộc tính <em><strong>concurrency = 2</strong></em> (tương ứng với 2 luồng xử lí => mỗi luồng sẽ đc giao 1 partition , topic ví dụ của em có 2 partition )</li>
</ol>
<p>
Việc config như vậy sẽ cải thiện đc vấn đề hiệu năng một tí , vì có thể xử lý 2 message cùng 1 lúc không cần đợi nhau.
</p>
<p>
</p>
<p>
Câu hỏi <strong>chính</strong> của em là việc cấu hình đa luồng như vậy thì em thấy ưu điểm trước mắt là như trên thì bênh cạnh đó thì nó có <strong>nhược điểm</strong> gì không ạ ?( Vì kiến thức em còn hạn hẹp quá nên chưa thể nhìn ra )
</p>
<p>
</p>
<p>
Và ví dụ topic có nhiều partition hơn thì mình set <em><strong>concurrency </strong></em>bằng 1 số tương ứng thì có ảnh hưởng gì đến hiệu năng ko và có chuyện gì sẽ xảy ra khi mình set số lượng luồng quá <strong>lớn</strong> ạ ?
</p>
<p>
</p>
<p>
Cảm ơn mọi người !
</p>
<p>
</p>
<p>
</p>