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:
Confira o detalhamento:
-
O fluxo começa com uma requisição
GET
para o endpointhello
. 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}'
Share your suggestions with us!
Click here and then [+ Submit idea]