You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sistema de registro de mensajes tipo Kafka usando gRPC + protobuf.
Archivos editables (fuente)
Archivo
Que es
logbook.proto
Contrato compartido entre los 3 servicios (Go, Python, JS). Define los mensajes y RPCs. Se usa para generar codigo en cada lenguaje.
kafka.go
Servidor Go: broker gRPC + endpoint HTTP GET /book
producer.js
Cliente Node.js: genera datos random y los envia al broker via gRPC
consumer.py
Cliente Python: recibe datos del broker y los procesa (o no, es aleatorio)
package.json
Dependencias JS y scripts npm
go.mod / go.sum
Dependencias Go
requirements.txt
Dependencias Python (instalar dentro de venv)
Archivos autogenerados (NO editar)
Archivo
Generado por
Para que lenguaje
logbook.pb.go
protoc --go_out
Go
logbook_grpc.pb.go
protoc --go-grpc_out
Go
logbook_pb2.py
grpc_tools.protoc --python_out
Python
logbook_pb2_grpc.py
grpc_tools.protoc --grpc_python_out
Python
JS no tiene archivos autogenerados: carga logbook.proto directo en runtime con @grpc/proto-loader.
Directorios de entorno (NO commitear)
Directorio
Que es
venv/
Entorno virtual Python
node_modules/
Dependencias locales JS
Scripts npm
npm run proto:clean # borra archivos autogenerados
npm run proto:gen:go # genera codigo Go desde logbook.proto
npm run proto:gen:py # genera codigo Python desde logbook.proto
Instalacion desde cero
# 1. Go
go mod init cualquierNombre
go mod tidy
# 2. Python
python3 -m venv venv
venv/bin/pip install -r requirements.txt
# 3. JS
npm install
# 4. Generar codigo protobuf
npm run proto:gen:go
npm run proto:gen:py
Como correr
# Terminal 1 — Levantar el broker (dejarlo corriendo)
go run kafka.go
# Terminal 2 — Producir mensajes (cuantas veces quieras)
node producer.js --author=Brian
# Terminal 3 — Ver el estado del libro
curl localhost:8081/book
# El consumer se ejecuta automaticamente por el broker:# inmediatamente al llegar un mensaje nuevo, o cada 10s para reintentar los fallidos.