Executando verificação de segurança...
2

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

Carregando publicação patrocinada...
2

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.

1

Opaa lemuelroberto, muito obrigado pelo feedback detalhado! Fico feliz que tenha tirado um tempo para entender sobre o projeto.

Entendo perfeitamente a sua observação sobre o modelo atual da biblioteca e o ponto que você levantou é totalmente válido. Essa forma de comunicação assíncrona é nova para mim, então a ideia inicial era exigir a especificação do consumidor no momento da publicação para casos de uso mais restritos e controlados, onde há uma relação direta entre quem publica a mensagem e quem deve processá-la.

Baseado no seu comentário, vou considerar ajustes futuros na biblioteca para promover um maior desacoplamento entre o publisher e os consumers, permitindo uma abordagem onde a publicação não exige o conhecimento prévio do consumidor e possibilita múltiplos consumers por mensagem. Isso também abriria caminho para integrações mais alinhadas com as plataformas de mensageria que você citou.

Agradeço mais uma vez pelo seu feedback construtivo e pela oportunidade de melhorias. Se tiver mais sugestões ou idéias, ficarei feliz em discutí-las!

Abraços