Я пытаюсь добавить заголовки авторизации, я могу это сделать, но тогда аутентификация одинакова для всех конечных точек. В моем случае мне нужны разные заголовки для каждой конечной точки. Я попытался использовать его в процессоре, но не могу различить, для какой конечной точки я устанавливаю заголовки:
В приведенном ниже коде мне нужно https://call1/agreements и https://call2/agreements, чтобы иметь отдельную аутентификациюзаголовки. Ниже мой маршрут.
public class AgreementRoute extends RouteBuilder {
public void configure(){
try
{
from("jetty://http://0.0.0.0:9191/agreement")
.log(LoggingLevel.INFO, "${body}")
.setProperty("test.body", body())
// .removeHeaders("CamelHttp*")
// .setHeader("Content-Type", constant("application/json"))
// .setHeader(Exchange.HTTP_METHOD, constant("POST"))
// .setHeader("Authorization", constant("<secret here"))
// .setBody(exchangeProperty("test.body"))
.multicast().onPrepare(new AgreementProcessor())
.to("https://call1/agreements", "https://call2/agreements");
}
catch(Exception ex)
{
ex.printStackTrace(System.out);
System.out.println(ex.getMessage());
}
}
}
А вот пользовательский Процессор:
public class AgreementProcessor implements Processor {
public void process (Exchange exchange) throws Exception {
System.out.println("ExchagneID: " + exchange.getContext());
Map<String, Object> headers = exchange.getIn().getHeaders();
Object bodyObjectIn = exchange.getIn().getBody();
System.out.println("Exchange.DESTINATION_OVERRIDE_URL: " + exchange.getIn().getHeader(Exchange.DESTINATION_OVERRIDE_URL));
System.out.println("Exchange.RECIPIENT_LIST_ENDPOINT: " + exchange.getIn().getHeader(Exchange.RECIPIENT_LIST_ENDPOINT));
System.out.println("bodyObjectIn: " + bodyObjectIn.toString());
System.out.println("Printing getIn().headers");
for (Map.Entry<String, Object> entry : headers.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + " : " + value);
}
exchange.removeProperties("Authorization");
}
}