Kiwee: Simplificando a criação de contratos em aplicações baseadas em eventos
Fala seus Typescriptos!
Estou muito feliz em compartilhar minha primeira biblioteca publicada no NPM
Recentemente, iniciei meus estudos em Arquitetura Orientada a Eventos (EDA) e e enquanto explorava essa arquitetura, senti falta de uma ferramenta que simplificasse a criação de contratos entre publishers e consumers. Foi aí que nasceu o Kiwee!
O que o Kiwee faz?
- Gera automaticamente: handlers e payloads para os consumidores da sua fila, a partir de um simples arquivo JSON.
- Facilita a chamada: dos handlers de forma rápida e simples, com classes auxiliares.
Com esta lib, você ganha mais tempo para se concentrar na lógica do seu negócio e menos tempo escrevendo código repetitivo.
Gostaria de contribuir?
O projeto está no início, mas já tem um potencial enorme. Gostaria de me ajudar a construir uma ferramenta ainda mais completa? te convido a dar uma olhada no repositório:Kiwee - Github Próximos passos:
- Injeção de dependência: Implementar um mecanismo para injetar dependências nos handlers gerados.
- Melhorias na documentação: Tornar a documentação ainda mais clara e completa.
- Novos recursos: Explorar novas funcionalidades para tornar o Kiwee ainda mais poderoso.
E você, o que acha? Já trabalhou com EDA? Quais as suas principais dificuldades? Compartilhe suas experiências nos comentários! #EDA #nodejs #javascript #opensource #kiwee #arquiteturadesoftware
Vinícius, parabéns pelo projeto.
Li a documentação no readme e notei que a biblioteca presume o conhecimento do consumidor no momento da publicação da mensagem, permitindo apenas um único consumidor por vez. Essa abordagem é pouco comum na prática e limita bastante as possibilidades de uso. Em plataformas de mensageria, como Kafka, RabbitMQ, AWS SQS e GCP Pub/Sub, há um desacoplamento entre produtores e consumidores, o que possibilita múltiplos consumidores de eventos.
Para referência, utilizei essa parte da sua documentação:
import { Publisher } from 'kiwee';
const message = Publisher.prepareMessageToPublish({
consumer: 'ConsumerName',
action: 'ActionName',
payload: { /* your payload */ },
});
// Publish the message using your preferred messaging system
Boa sorte e bom trabalho.