CENTRO UNIVERSITÁRIO FUNDAÇÃO SANTO ANDRÉ
COMUNICAÇÃO EM TEMPO REAL EM SISTEMAS DISTRIBUÍDOS COM APACHE
KAFKA E AMAZON MSK
Guilherme Belote Lima da Silva – 749574
Marcos Roberto dos Santos Junior – 752509
Vinicius Santos Barboza – 747855
SANTO ANDRÉ – SP
2025
1 INTRODUÇÃO
A comunicação entre sistemas distribuídos é fundamental na transformação digital. Para
possibilitar a troca eficiente de informações entre aplicações e serviços, soluções de mensageria
permitem o envio, processamento e consumo de mensagens de forma confiável e escalável.
Dentre as principais tecnologias, o Apache Kafka se destaca por suportar workloads de alto
volume e baixa latência, viabilizando arquiteturas de dados em tempo real.
2 SOLUÇÕES DE MENSAGERIA
As soluções de mensageria intermediam a comunicação entre aplicações distintas por meio de
mensagens. Diferentemente das chamadas síncronas, a mensageria desacopla produtores e
consumidores, aumentando a resiliência do sistema. Exemplos incluem RabbitMQ, ActiveMQ e
Apache Kafka.
Exemplo de Producer RabbitMQ em Java
// Exemplo simples com RabbitMQ (Producer)
import [Link];
import [Link];
import [Link];
public class ProdutorRabbit {
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
[Link]("localhost");
try (Connection connection = [Link]();
Channel channel = [Link]()) {
String fila = "filaTeste";
[Link](fila, false, false, false, null);
String mensagem = "Olá RabbitMQ!";
[Link]("", fila, null, [Link]());
[Link]("Mensagem enviada: " + mensagem);
}
}
}
3 APACHE KAFKA
O Apache Kafka é uma plataforma distribuída de streaming orientada a logs. Seu objetivo é
processar grandes volumes de dados em tempo quase real, com baixa latência e alta vazão. O
exemplo a seguir mostra um produtor simples em Java enviando mensagens a um tópico.
Exemplo de Producer Kafka em Java
import [Link].*;
import [Link];
public class ProdutorKafka {
public static void main(String[] args) {
Properties props = new Properties();
[Link]("[Link]", "localhost:9092");
[Link]("[Link]",
"[Link]");
[Link]("[Link]",
"[Link]");
Producer<String, String> producer = new KafkaProducer<>(props);
ProducerRecord<String, String> record =
new ProducerRecord<>("topicoTeste", "chave1", "Mensagem
Kafka!");
[Link](record);
[Link]();
[Link]("Mensagem enviada com sucesso!");
}
}
4 FORMA DE TRANSMISSÃO DAS MENSAGENS NO KAFKA
O modelo de comunicação do Apache Kafka baseia-se em tópicos e utiliza o padrão publish-
subscribe. A seguir, um exemplo de consumidor em Java que lê mensagens de um tópico.
Exemplo de Consumer Kafka em Java
import [Link].*;
import [Link].*;
public class ConsumidorKafka {
public static void main(String[] args) {
Properties props = new Properties();
[Link]("[Link]", "localhost:9092");
[Link]("[Link]", "grupoTeste");
[Link]("[Link]",
"[Link]");
[Link]("[Link]",
"[Link]");
KafkaConsumer<String, String> consumer = new
KafkaConsumer<>(props);
[Link]([Link]("topicoTeste"));
while (true) {
ConsumerRecords<String, String> registros =
[Link](1000);
for (ConsumerRecord<String, String> reg : registros) {
[Link]("Mensagem recebida: " +
[Link]());
}
}
}
}
4.1 TRANSMISSÃO DAS MENSAGENS NO KAFKA VIA AWS
Na AWS, o Apache Kafka pode ser utilizado por meio do serviço Amazon Managed Streaming
for Apache Kafka (MSK). O código a seguir mostra uma configuração típica de conexão com
MSK usando autenticação SASL_SSL.
Configuração de conexão a um cluster MSK
Properties props = new Properties();
[Link]("[Link]", "[Link],b-
[Link]");
[Link]("[Link]", "SASL_SSL");
[Link]("[Link]", "SCRAM-SHA-512");
[Link]("[Link]",
"[Link] required
username=\"user\" password=\"senha\";");
[Link]("[Link]",
"[Link]");
[Link]("[Link]",
"[Link]");
5 CONSIDERAÇÕES FINAIS
O uso de soluções de mensageria como o Apache Kafka, aliado ao Amazon MSK, permite
implementar arquiteturas modernas baseadas em dados. Abaixo, destacam-se algumas
configurações recomendadas para boas práticas em produção:
Configurações recomendadas em Producer Kafka
[Link]("acks", "all"); // garante confirmação
[Link]("[Link]", "true"); // evita duplicações
[Link]("retries", 5); // tentativas de reenvio
[Link]("[Link]", 5); // agrupa mensagens para eficiência
6 REFERÊNCIAS
KLEPPMANN, Martin. Designing Data‑Intensive Applications. Sebastopol: O’Reilly Media,
2017.
APACHE SOFTWARE FOUNDATION. Apache Kafka Documentation. Disponível em:
[Link] Acesso em: 28 ago. 2025.
AMAZON WEB SERVICES. Amazon Managed Streaming for Apache Kafka (Amazon MSK)
Developer Guide. Disponível em: [Link]
[Link]. Acesso em: 28 ago. 2025.
HOHPE, Gregor; WOOLF, Bobby. Enterprise Integration Patterns. Boston: Addison‑Wesley,
2003.
RABBITMQ. RabbitMQ Documentation. Disponível em:
[Link] Acesso em: 28 ago. 2025.