Nesse desafio você deve criar um servidor TCP que aceita conexões e funciona como um sistema de streaming como o Kafka. Clientes conectados nesse servidor podem enviar e consumir mensagens de diferentes tópicos (filas).
Requisitos
Use os seguintes conceitos:
Uma mensagem é uma sequência de bytes qualquer
Um tópico é um lugar que contém mensagens ordenadas como se fosse uma fila
Um publisher é um programa que insere mensagens num tópico
Um consumer é um programa com um nome/id único e que lê mensagens de um tópico
Crie um servidor TCP que recebe um comando para publicar uma mensagem num tópico
Suporte outro comando para um consumer abrir uma conexao com o servidor, ler todas as mensagens de um tópico e esperar por novas mensagens
Se você desligar o consumer e ligá-lo novamente (mesmo nome e tópico), ele vai continuar lendo as mensagens de onde parou
Qualquer conceito kafka não descrito aqui não é necessário
Você pode usar o programa netcat para interagir com o servidor ou implementar seu próprio cliente tcp em go, essa parte é opcional
O que você vai aprender
Golang
Concorrência/paralelismo (goroutines)
Graceful shutdown
Inspirado em desafios de empresas como
Plano Pro
Tenho acesso a todos os conteúdos privados com nosso plano Pro.