Geralmente, como você pode fazer um componente iniciar outro?
Method Call (Chamada de Método)
Se o código do aplicativo for simples, tudo em um só lugar, é possível usar as chamadas de método.
class ComponentA {
public void execute() {
ComponentB componentB = new ComponentB();
componentB.execute();
}
}
Request – Response (Solicitação – Resposta)
Uma abordagem comum é quando um serviço envia uma solicitação para outro serviço. A fim de pedir uma informação ou delegar a execução de uma tarefa, e espera até receber uma resposta.
Cada um desses componentes pode ser uma API, função lambda, etc.
Events (Eventos)
Em sistemas orientados a eventos, os componentes não conversão diretamente uns com os outros.
Ao invés disso, eles emitem eventos para avisar que algo aconteceu…
Então outros componentes podem ouvir esses eventos e reagir de acordo.
Data Storage (Armazenamento de Dados)
Em vez de ter um componente falando com outro, as informações podem ser armazenadas em algum lugar como:
- Um banco de dados;
- Ou object storage.
Assim outros componentes são livres para extrair e usar esses dados.
Queue (Fila)
O componente envia uma tarefa para a fila. Depois essa fila delega a tarefa para um executor que realiza o trabalho.
Esta operação pode ser feita de forma síncrona ou assíncrona, enquanto executa essas tarefas de forma paralela ou concorrente.
Lambda
Semelhante ao request-response. Mas em vez de enviar para um componente específico, a solicitação é enviada para uma função genérica, única, lambda.
Portanto essa função atua como um único ponto de entrada e decide para onde a solicitação deve ser encaminhada.
Misturando tudo
Claro, você também pode misturar as formas de conexão (uma abordagem híbrida), como por exemplo:
- Um sistema de eventos pode usar uma fila para acompanhar e distribuir os eventos emitidos;
- Ter uma função lambda na frente de uma fila. Assim qualquer componente pode colocar uma tarefa na fila, apenas chamando a função.
- Ou, uma função lambda que ouve, ou verifica periodicamente, os eventos e notifica a etapa seguinte.
Hey,
o que você achou deste conteúdo? Conte nos comentários.