Árvore de páginas

O broker é comumente utilizado para balancear consumo de web services fornecidos por servidores Protheus.

O broker utilizado é o "broker de web services" (no ini existe a chave "[BALANCE_WEB_SERVICES]").

Neste cenário, um pré-requisito para o funcionamento correto é que a aplicação cliente NÃO deve utilize conexões HTTP persistentes (header HTTP "Connection: Keep-Alive").

Esta é uma característica do servidor Protheus, que fecha a conexão logo em seguida ao envio da resposta de um pedido de web services.

Caso a aplicação cliente utiliza conexões persistentes no log do broker eventualmente pode aparecer a mensagem

       "late reception from client in state WAITING_CLIENT_CLOSE, there are no more  pending operations".

Em versões mais antigas do broker a mensagem está em português:

     "recepcao atrasada do cliente em WAITING_CLIENT_CLOSE, nao existem mais operacoes pendentes".

Portanto, na eventualidade de ocorrer erros intermitentes na utilização do broker de web services para balanceamento de web services para servidores Protheus, verificar o log do broker,

e se no log do broker aparecer uma das mensagens acima, configurar a aplicação cliente para utilizar conexões nao-persistentes (header HTTP "Connection: close").

Notar que o modo padrão da conexão na especificação HTTP 1.1 é "conexão persistente", isto é, quando a aplicação cliente não envia o header "Connection:", subentende-se que é como se tenha enviado o header "Connection: Keep-Alive". Portanto, a aplicação cliente deve ser configurada para enviar explicitamente o header "Connection: close".

É importante entender que esta situação de erro não é causada pelo broker. Mesmo sem a utilização do broker podem ocorrer erros, quando a aplicação cliente tentar enviar um segundo pedido de web services em uma conexão que já foi fechada pelo Protheus. A utilização do broker (ou qualquer outro proxy de balanceamento) no entanto pode potencializar a ocorrência desses erros, por causa do retardo (lag) adicional associado ao processo de balanceamento.

  • Sem rótulos