我有一个端点,希望在将其发送到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());但这条路什么也做不了。有办法让骆驼在之前做点什么吗?
发布于 2022-10-07 20:46:39
仅仅因为还没有消息,就不可能在前面设置一个标头。
https://stackoverflow.com/questions/73518628
复制相似问题