Choice

O EIP Choice roteia mensagens com base em condições, similar a uma estrutura "if-else". Ele avalia as condições especificadas e direciona a mensagem para a rota correspondente.

Parâmetros

Parâmetro Descrição Valor padrão Tipo

When

Define uma condição para o processamento de mensagens, atuando como o bloco "if".

Lista

Otherwise

Define a rota padrão, utilizada quando nenhuma das condições especificadas no "When" for atendida (funciona como o bloco "else").

OtherwiseDefinition

Precondition

Permite avaliar as condições definidas nos ramos ("When" e "Otherwise") durante a inicialização da rota, em vez de avaliá-las dinamicamente em tempo de execução.

Booleano

Exemplo

Considere o trecho abaixo:

- from:
    id: rest-2204314941
    uri: rest:get:hello
    steps:
      - choice:
          id: choice-3079603680
          when:
            - id: when-4223458332
              simple: ${body} contains 'success'
              steps:
                - log:
                    id: log-4287304427
                    message: 'The call was been successful: ${body}'
            - id: when-1122729813
              simple: ${body} contains 'warning'
              steps:
                - log:
                    id: log-3011575176
                    message: 'The call returned a warning: ${body}'
            - id: when-1140746842
              simple: ${body} contains 'error'
              steps:
                - log:
                    id: log-2721128918
                    message: 'The call found an error: ${body}'
          otherwise:
            id: otherwise-3980042695
            steps:
              - log:
                  id: log-498737456
                  message: 'The call returned an unknown response: ${body}'

Veja o mesmo trecho no modo diagrama:

eip choice example

Confira o detalhamento:

  • O fluxo começa com uma requisição GET para o endpoint hello. A URI é o ponto de entrada do fluxo, que recebe a resposta da chamada no corpo da mensagem (${body}).

Choice

  • A etapa seguinte é um Choice, que é usado para tomar decisões com base em condições. O Camel avalia as condições e executa os steps correspondentes à condição que for verdadeira.

When

  • Primeira condição (when): verifica se o corpo da resposta (${body}) contém a palavra "success". Se for verdadeiro, executa o seguinte:

    • Log: registra uma mensagem indicando que a chamada foi bem-sucedida, incluindo o corpo da resposta.

when:
  - id: when-4223458332
    simple: ${body} contains 'success'
    steps:
      - log:
          id: log-4287304427
          message: 'The call has been successful: ${body}'
  • Segunda condição (when): verifica se o corpo da resposta contém a palavra "warning". Se for verdadeiro, executa o seguinte:

    • Log: registra uma mensagem indicando que a chamada retornou um aviso, incluindo o corpo da resposta.

- id: when-1122729813
  simple: ${body} contains 'warning'
  steps:
    - log:
        id: log-3011575176
        message: 'The call returned a warning: ${body}'
  • Terceira condição (when): verifica se o corpo da resposta contém a palavra "error". Se for verdadeiro, executa o seguinte:

    • Log: registra uma mensagem indicando que a chamada encontrou um erro, incluindo o corpo da resposta.

- id: when-1140746842
  simple: ${body} contains 'error'
  steps:
    - log:
        id: log-2721128918
        message: 'The call found an error: ${body}'

Otherwise

  • Caso nenhuma das condições anteriores seja atendida, a etapa Otherwise será executada, ou seja, se o corpo da resposta não contiver "success", "warning" ou "error".

    • Log: registra uma mensagem indicando que a chamada retornou uma resposta desconhecida, incluindo o corpo da resposta.

otherwise:
  id: otherwise-3980042695
  steps:
    - log:
        id: log-498737456
        message: 'The call returned an unknown response: ${body}'
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]