1
resposta

Problema com conexão assíncrona (@aSync) - Spring Boot

Olá Pessoal, boa tarde.

Estou fazendo uma integração com slack e estou com um problema de conexão, o método que faz o envio das mensagens é assíncrono (@aSync) e antes de mandar a mensagem eu verifico se a conexão está aberta, senão estiver eu conecto, controle feito através de uma variável.

Mas quando vou testar minha aplicação e chamo de forma assíncrona meu método (mais ou menos ao mesmo tempo, a chamada) ele se confunde e se conecta duas vezes ao slack.

alguém com mais experiência, poderia me ajudar..

minha classe é essa:

@Async
    public void sendMessage(String message){

        if (this.connect()){
            SlackChannel channel = session.findChannelByName(this.channelName);
            session.sendMessage(channel, message);
        }
    }


private boolean connect(){
        boolean isConnected = true;

        if (this.session == null || !this.session.isConnected()) {
            try{
                this.session = SlackSessionFactory.createWebSocketSlackSession(encryptKey);
                this.session.connect();
            } catch (Exception ex){
                isConnected = false;
                this.session = null;
                Logger.getLogger(MailService.class.getName()).log(Level.SEVERE, "Fail connecting to slack", ex);
            }
        }

        return isConnected;
    }

Muito obrigado.

1 resposta

Fala ai Helio, de boa ?

Cara, usei uma lib que facilitou bastante meu trabalho com o integração ao slack, nem precisei fazer isso:

https://github.com/rampatra/jbot

Vê se te serve tamém.