In primo luogo, sì, ho cercato e, sì, ho letto lo stesso documento Apache ogni uno punta a. :-) Penso che ci sia un po 'di confusione e penso di conoscere una risposta, quindi lasciami un esempio di ciò che pensavo fosse corretto, seguilo con quello che penso sia la risposta. Grazie. Oh, e so che alcune delle linee endChoice() non sono strettamente necessarie e che Camel lo scoprirà, ma mi piace che i blocchi siano delineati in modo pulito, a meno che non vi sia qualche motivo per non usarli.Camel end vs endChoice - non la solita query
.choice()
.when(X1)
// do stuff
.choice()
.when(Y)
//do more stuff
.endChoice() // close inner when block
.end() // close inner choice block
.endChoice() // close first outer when
.when(X2)
// do other stuff
.endChoice() // close second outer when
.end() // close outer choice
Quindi, il mio aspetto originale al API, ho pensato che fine() è stato per le cose di chiusura come scelta e diviso e che endChoice() era per la chiusura di opzioni di scelta, come quando e non. Sembra più che quest'ultimo sia in realtà un end() che restituisce una ChoiceDefinition. Il che rende il nome un po 'migliore.
Tuttavia, se tolgo il termine() "blocco interno ristretto", questo significa che proseguo con la riga successiva, endChoice(). Questo allora chiude il blocco della scelta interiore? Detto questo, quando (X2) è ancora all'interno del blocco quando (X1). Quindi, penso di aver bisogno di sostituire end() con un endChoice() piuttosto che rimuoverlo. Quindi il risultato sarebbe:
.choice()
.when(X1)
// do stuff
.choice()
.when(Y)
//do more stuff
.endChoice() // close inner when block
.endChoice() // close inner choice block
.endChoice() // close first outer when
.when(X2)
// do other stuff
.endChoice() // close second outer when
.end() // close outer choice
Quindi questo è il modo di gestire questo in Camel? O c'è un modo più semplice che mi manca? Grazie per il tuo tempo.
Buon consiglio, cerco anche di non annidare le scelte. I tuoi colleghi o il tuo sé futuro ti ringrazieranno;). – helpermethod