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. |
Verifique se a sua configuração no .ini do AppServer contém as referências para o Servidor do Broker. Ex. Cheque se o IP e a porta do Broker Server estão configurados como Serviço no appserver.ini [maquinadobroker:32081/ws] RESPONSEJOB=JOB_WS Mais informações em veja em Balanceamento de carga com Broker, seção "Balanceamento entre cliente Web Services" |