POC de uma aplicação escrita com NestJS consumindo várias partições de um tópico no Kafka, de forma paralela, utilizando o módulo Cluster do Node.js. Cada worker processa indivualmente mensagens da partição que se conectou. O ideal é que tenha sempre mais partições do que workers, pois dessa forma é garantido que todos os workers se conectarão à uma ou várias partições.
- Suba o container do Kafka
docker compose up -d
- Instale as dependências
npm install
- Execute o projeto
npm run start
- Acesse o Kafdrop e crie o tópico "beers-topic" com 5 ou mais partições http://localhost:190001
Recomendo a utilização de um Kafka Client para o envio das mensagens
[
{
"key": null,
"value": {
"name": "Spaten 300ml",
"price": 3.99
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Colorado 600ml",
"price": 13.5
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Amstel 300ml",
"price": 3.4
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Boa 600ml",
"price": 6.0
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Brahma Duplo Malte 300ml",
"price": 3.68
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Heineken 350ml",
"price": 5.29
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Heineken 5l",
"price": 109.99
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Baden Baden IPA 350ml",
"price": 6.0
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Skol 1l",
"price": 8.0
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
},
{
"key": null,
"value": {
"name": "Sub Zero 350ml",
"price": 2.98
},
"headers": [],
"keyMeta": {},
"valueMeta": {}
}
]