-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
📚 Mensageria e Kafka #62
Comments
KafkaProdutoresO local onde as informações do Kafka ficam armazenadas se chama ZooKepper, logo eu tenho que baixar o Kafka e também o ZooKeeper ComandosDescrever os tópicos: Subir o zooKeeper Listar os tópicos Subir o Kafka Cadastrar um tópico (documentação) Consumir um tópico Send é assÃncrono! Logo eu preiso adicionar o .get() para esperar! A medida que eu envio eu preciso indicar se recebi ou não, por isso eu uso a interface CallBack() Eu preciso de um Listener! Código: public static void main(String[] args) throws ExecutionException, InterruptedException {
// Tem dois parâmetros: tipo da chave e tipo da mensagem
var producer = new KafkaProducer<String, String>(properties());
var value = "132123,675223,91238419";
// Agora que eu tenho um producer, posso enviar algo:
// var record = new ProducerRecord<String, String>("ECOMMERCE_NEW_ORDER", value, value);
// Ele percebe que é String, String, então eu posso remover:
var record = new ProducerRecord<>("ECOMMERCE_NEW_ORDER", value, value);
producer.send(record, (data, ex) ->{
if(ex != null){
ex.printStackTrace();
return;
}
System.out.println("sucesso enviando nesse tópico:" + data.topic() + ":::partition " + data.partition() + "/ offset " + data.offset() + "/ timestamp" + data.timestamp());
}).get(); // é um registro porque ficará registrado no kafka pelo tempo que eu quiser, basta eu configurar
}
private static Properties properties() {
var properties = new Properties();
// Preciso apontar ONDE estão rodando minhas kafkas
properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
// Além disso, eu preciso passar os transformadores de Strings para Byte (Serializadores)
// Key Serializer é o transformador, depois preciso intigar que será de String, tanto p/ chave quanto p/ o valor
properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
return properties;
} |
The offset in Kafka is not exactly the "amount" of messages, but rather a unique identifier assigned to each message within a partition. It represents the position of a message within the partition's sequence.
|
É comum numa aplicação a gente fazer / aplicar serviços em paralelo, ou seja, pode ser no mesmo computador duas threads.

Enquanto isso, neste exemplo, eu aviso, olha, sua compra está sendo processada.
Ou seja, são muitos processos, num exemplo de um sistema de delivery! Em outras palavras, são muitas requisições HTTP.

Cada caixinha seria um URI;
Para tudo isso eu preciso de um log, onde tem dado de TUDO que acontece! Todo mundo tem que acessar, tudo precisa ir pro sistema de log.
Tudo isso gera uma CONFUSÃO GIGANTE:
É aqui que entra a necessidade de REPENSAR toda essa arquitetura
O Broker recebe uma mensagem do tipo do serviço que está sendo requisitado, pode ser compra, devolução etc...
O e-mail está recebendo esse assunto, esse tópico, o reservar estoque também está, o Log também está recebendo, todos estão! O servidor HTTP não sabe disso! Todos os sistemas estão de recebendo as mensagens / tópicos.
Quando um serviço termina, ele também envia uma mensagem! E todos vão ouvir!
Isso é o conceito de mensageria, todos escutam as mensagens de cada tópico.
O Kafka utiliza algumas sacadas de mensageria, uma delas é: eu posso ter mais de um broker, posso ter várias máquinas rodando, eu posso escalar conforme o necessário.
Eu vou removendo os pontos de falhas! Eu posso ter cluster de brokers. Eu consigo ter mais Reliability
The text was updated successfully, but these errors were encountered: