Camel从之前设置标题

jgovgodb  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(111)

我有一个终结点,并希望在将其发送到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 做点什么呢?

xzabzqsa

xzabzqsa1#

因为还没有消息,所以不可能在from之前设置头。

相关问题