我有一个终结点,并希望在将其发送到API之前设置标头。
Stream.of("a", "b").forEach(id) -> {
from("azure-storage-blob://devstoreaccount1/hotfolder?serviceClient=#blobServiceClient&operation=listBlobs")
.routeId(id)
.autoStartup(false)
.tracing()
// this should happen before the the azure call
.setHeader("MyHeader", () -> id)
.process(exchange -> {
ArrayList<BlobItem> items = exchange.getIn().getBody(ArrayList.class);
for (BlobItem blobItem : items) {
System.out.println(blobItem.getName());
}
});
}
稍后,当上下文启动时,我在其他位置启动路由
final Route route = camelContext.getRoute("a");
ServiceHelper.startService(route.getConsumer());
现在它试图引入一个新的路由来触发旧的路由,并设置以前的报头。
from("direct:intermediate")
.noAutoStartup()
.routeId("intermediate")
.to("direct:hf");
from("direct:hf")
.setHeader("MyHeader", () -> id)
.to("azure-storage-blob://devstoreaccount1/hotfolder?serviceClient=#blobServiceClient&operation=listBlobs")
.process(exchange -> {
ArrayList<BlobItem> items = exchange.getIn().getBody(ArrayList.class);
for (BlobItem blobItem : items) {
System.out.println(blobItem.getName());
}
});
final Route route = camelContext.getRoute("intermediate");
ServiceHelper.startService(route.getConsumer());
但是这条路线什么也做不了。有没有办法用 Camel 做点什么呢?
1条答案
按热度按时间xzabzqsa1#
因为还没有消息,所以不可能在from之前设置头。