Avatar
1
Hồng Quân Nguyễn Beginner
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 ạ?
  • Answer
java kafka spring boot
Remain: 5
2 Answers
Avatar
monkey Beginner
monkey Beginner
Hiện tại thì anh đang thấy có 2 hướng sử dụng:

  1. Dùng json: cái này anh thấy hay dùng nhất vì nó tiện và có thư viện jackson hỗ trợ sẵn rồi. Tuy nhiên nhược điểm là json là string nên gói tin sẽ lớn.

  1. Dùng msgpack: cái này thấy ít dùng vì nó ít thư viện hỗ trợ hơn jackson, nên anh đang hỗ trợ mặc định cho ezymq để anh em đỡ phải nghĩ ngợi.

  1. Dùng protobuf hoặc Avro: cũng ít dùng phải sinh ra file proto hay file avro khá loằng ngoằng.

Với cá nhân anh thì anh dùng msgpack vừa làm nhỏ được dung lượng gói tin mà lại vừa dễ sử dụng hơn.

  • 0
  • Reply
Avatar
trong trường hợp có nhiều consumer, mỗi consumer nhận một kiểu DTO Object thì phải tạo ra nhiều KafkaListenerContainerFactory để listen dự liệu à anh?
  • 0
  • Reply
Em có thể tham khảo 2 lớp này: https://github.com/youngmonkeys/ezymq/tree/master/ezymq-kafka/src/main/java/com/tvd12/ezymq/kafka/serialization. Ở đây anh đang dùng byte[], còn việc chuyển thành đối tượng DTO như thế nào thì sẽ do lớp handler làm em ạ, như vậy thì không liên quan gì đến KafkaListenerContainerFactory cả.  –  monkey 1673825665000