Microservices de Chat

OS ITENS INCLUSOS

  • UM MICROSERVIÇO DE CHAT(Envia(POST HTTP) e recebe mensagem(GET HTTP)

  • TESTES (BDD - CUCUMBER)

  • USO DE BANCO DE DADOS MYSQL

  • DEPLOY VIA DOCKER

  • FRONT END (HTML, CSS E JAVASCRIPT)

Para executar rode os seguintes comandos:

docker-compose build

docker-compose up -d

Padrões de Projetos

Padrões GOF Utilizados

  • Bridge

Esse padrão desacopla o serviço abstrato de sua implementação para que possam variar independentemente do provedor.

Exemplo:

Interface

package br.com.oiansiedade.oiansiedade.adapter;

import br.com.oiansiedade.oiansiedade.model.ChatMessage;

public interface ChatBotService {

	ChatMessage talk(ChatMessage chatMessage);

}

Implementações

package br.com.oiansiedade.oiansiedade.adapter;

import br.com.oiansiedade.oiansiedade.model.ChatMessage;

public interface ChatBotService {

	ChatMessage talk(ChatMessage chatMessage);
}

public class ChatBotDialogFlowService implements ChatBotService {
	
	@Override
	public ChatMessage talk(ChatMessage chatMessage) {
            //Implementação do chat do DialogFlow
	}
  
}

public class ChatBotIbmWatsonService implements ChatBotService {
	
	@Override
	public ChatMessage talk(ChatMessage chatMessage) {
            //Implementação do chat do  IBM Watson
	}
  
}

Usabilidade

@Service
public class ChatMessageService {

  @Autowired
  private ChatBotService chatBotDialogFlowService;
  
  @Autowired
  private ChatBotService chatBotIbmWatsonService;
		
  public ChatMessage sendMessage(ChatMessage chatMessage) {
      ChatMessage answerOfDialogFlow = chatBotDialogFlowService.talk(chatMessage);
      //ChatMessage answerMessageOfIbmWatson = chatBotIbmWatsonService.talk(chatMessage);
			
      return answerOfDialogFlow;
  }
  
}

Padrões de arquitetura

DDD: Serviços relacionados ao submdomínios DDD(Domain Driven Design)
RPI: Comunicação síncrona via request/response
BD: Um banco de dados por serviço