Я использую kafka для своего API. Я использую Spring с микросервисом. Я опубликую свой код kafka ниже:
Команда:
private static final Logger logger =
LoggerFactory.getLogger(UserCommandServiceImpl.class);
@Autowired
private KafkaTemplate<String, Object> kafkaTemplate;
public void sendMessage(User objeto)
{
logger.info(String.format("Message sent -> %s", objeto.toString()));
this.kafkaTemplate.send("quickstart-events", objeto);
}
Запрос:
private final Logger logger = LoggerFactory.getLogger(UserQueryServiceImpl.class);
@Autowired
private MongoTemplate mongoTemplate;
@KafkaListener(topics = "quickstart-events" , groupId = "group-id")
public void consume(String message)
{
logger.info(String.format("Message recieved -> %s", message));
mongoTemplate.insert(message, "user");
}
Я установил kafka с этого сайта: Я использую шаблон CQRS, поэтому каждый запрос представляет собой микросервис и командует другим. Мой вопрос прост: для каждого микросервиса я создаю тему кафки? Спасибо!
Я пытался использовать JsonSerializer и JsonDeserializer в своих «application.properties», но это дает ошибку
Я обновил свой ответ новым кодом




Представьте тему Kafka в виде таблицы базы данных, используйте одну тему для каждого типа данных.
Если вам интересно, как вы можете масштабировать свое приложение, вы можете спросить, сколько разделов должно быть в вашей теме. Тема — это набор разделов, которые будут обрабатывать все данные.
Взгляните на изображение ниже, тема будет получать значения от более чем одного производителя, и у нее будет только один тип сообщения. Сообщение может храниться в любом разделе, и это определяется ключом сообщения.
Не сериализуйте свои данные с помощью Jackson JSON. Взгляните на сериализатор ключей/значений для Kafka. Я считаю, что у Spring есть один для JSON.