2017-02-23 1 views
0

Ich möchte eine generische Java-Bean entwickeln, die auf allen meinen Kamelrouten enthalten ist (für personalisierte Protokollierungszwecke). Die Route ruft meine Java-Funktion in einem Prozessor auf und übergibt ihr das Exchange-Objekt (und andere Sachen, falls nötig).So rufen Sie das von einem Apache Camel-Endpunkt verwendete Protokoll ab

Wie kann ich den Typ des ersten Endpunkts erkennen, auf den die Route hört? es kann von ftp, http, jms etc ... sein und die relevanten Informationen, die ich protokollieren möchte, sind in verschiedenen Headern entsprechend dem Endpunktprotokoll, zum Beispiel "CamelFileName" für ftp.

Ich habe einen Workaround-Test, wenn der "CamelFilename" Header existiert, dann weiß ich, dass der Endpunkt auf FTP-Server hört, oder ich könnte den EndpunktURI analysieren, aber gibt es eine zuverlässigere/geseedete Funktion, um das zu bekommen?

Antwort

0

Sie können die von der Route auf der Exchange, unter Verwendung der getFromEndpoint und getFromRouteId erhalten.

Siehe den Exchange-javadoc: http://static.javadoc.io/org.apache.camel/camel-core/2.18.2/org/apache/camel/Exchange.html

+0

Dank Claus. Wie gesagt, ich kann den Endpunkt abrufen, kann aber dann nicht herausfinden, welche seiner Eigenschaften mir das Protokoll geben wird. getFromRouteId gibt auch einen String mit URI zurück, meinst du ich muss nach Teilstrings suchen? Keine genauere Eigenschaft oder Funktion, um diese Information zu erhalten? – Loko

+0

Vom Endpunkt können Sie die URL abrufen, und dort können Sie das Protokoll herausfinden –

+0

Aber das ist genau, worüber ich in meiner ersten Nachricht gesprochen habe. Ich kann das tun, aber ich bin bereit, wenn es eine zuverlässigere Möglichkeit gibt, es zu tun, mit einer echten Funktion der Eigenschaft – Loko

Verwandte Themen