Die Ursache für Unexpected token. Expected 'colon(:)' but was 'lcurly({)'
war, dass kein Eigentum dort route1.db
bestehenden in den Eigenschaften war Datei, und daher wurde die Expression als headers['DATA'].routingKey == 'ROUTE1' ? ${route1.db} : some-alternative-db
ausgewertet, ${route1.db}
unverändert bleibt. Dies führt zu einem Syntaxfehler.
Zusätzlich schlug @Hassen vor, einzelne Anführungszeichen anzugeben, die benötigt werden, um die Werte aus Eigenschaftsdateien als richtige Zeichenfolgen darzustellen. Ohne diesen Wert behandelt der ausgewertete Ausdruck headers['DATA'].routingKey == 'ROUTE1' ? direct-db : some-alternative-db
sowohl direct-db
als auch some-alternative-db
als Spring-Felder/-Eigenschaften, bei denen es sich sogar um falsch benannte Variablen handelt.
Die letzte sollte gültige Form sein:
<int:header name="DESTINATION" expression="headers['DATA'].routingKey == 'ROUTE1' ? '${route1.db}' : '${route2.db}'"/>
und angegeben, dass die Eigenschaften folgende Angaben enthalten Datei:
route1.db=direct-db route2.db=some-alternative-db
der ausgewertete Ausdruck wird:
headers['DATA'].routingKey == 'ROUTE1' ? 'direct-db' : 'some-alternative-db'
Danke @Hassen! Der erste Vorschlag half mir zu erkennen, dass die Eigenschaft 'route1.db' nicht existierte. Obwohl dies nur ein Teil der Fehlerbehebung ist, akzeptiere ich dies als Antwort. –