Pergunta

O Guia do Usuário do TIBCO EMS (pág. 292) diz:

O servidor de backup funcionará indefinidamente Para a) Torne -se o servidor primário ou b) reconectar -se ao servidor primário. Ele também diz Os clientes podem receber notificação de falha Quando o interruptor é bem -sucedido (consulte também TIBCO EMS .NET Referência PG 220).

Eu tenho algumas perguntas que giram desses fatos ...

  1. Que tipo de erros ocorrem no lado do cliente enquanto os servidores estão tentando falhar/reconectar?

  2. Qual é a resposta apropriada do cliente?

    • Obter novos objetos de conexão do ConnectionFactory até que alguém funcione?
    • Aguarde a notificação de falha? (As instâncias de conexão atuais são corrigidas no momento? Ou eu preciso obter uma nova instância?)

Espero que o cenário seja claro, qualquer informação ou conselho relacionado também seja apreciado.

Foi útil?

Solução

Eu posso pelo menos responder nº 1 acima.

Se você ativou o Tibems.setexceptionOnftSwitch (true); e configurou um manipulador de exceção para capturar as mensagens que o servidor envia ao cliente, você verá o seguinte:

Para falhas de conexão tolerantes a servidor único e não falhas: "A conexão foi encerrada".

Para falhas de conexão tolerantes a falhas: "A conexão executou o interruptor tolerante a falhas para"

Se você tentar publicar enquanto a conexão estiver inativa, um tibco.ems.illegalStateException será lançado com a mensagem "Produtor está fechada".

Para #2 acima, acho que a resposta é permitir que a biblioteca EMS lide o máximo possível. Depois que obtivemos a funcionalidade do EMS para funcionar, ele tentou graciosamente se reconectar até que o servidor fique disponível novamente e, uma vez que ele se reconectou, era como se nunca houvesse um problema. O único gotcha é provavelmente se você tentar publicar uma mensagem antes que a conexão EMS esteja de volta. É aqui que entra o manipulador de exceção, uma vez notificado de que você está no modo de failover, você pode ajustar o manuseio de exceção no lado do editor para suprimir o erro até que a conexão esteja de volta. O que eu não sei é como você diz quando esgotou todas as tentativas de reconectar.

De qualquer forma, parece que nossos dois mundos estão intimamente relacionados quando se trata do EMS - espero que nossas descobertas (com base em seus comentários em minhas perguntas) ajudem você.

Outras dicas

Usamos o TEMS (TIBCO EMS - um produto TIBCO para WCF), para que ele se torne uma ligação personalizada. Tentamos quebrá -lo fazendo coisas como saltar o servidor para forçar interruptores e funciona muito bem. Certifique -se de estar usando a versão 1.2 não 1.1, porque você não pode fazer outra coisa, o reconhecimento do cliente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top