Camel Azure凭据作为选项而不是bean

时间:2018-02-15 13:12:07

标签: azure apache-camel

我想将凭据传递给Azure blob组件,而无需创建和注册bean。

我有一个使用文件并将其路由到Azure Blob的路由

我希望这条路线是通用的。

我面临的挑战是。

  1. 我必须支持多个存储帐户
  2. 我们应该从密钥保险库中获取凭据。凭证可以随时更改,我无法控制。 blob组件需要一个bean来获取凭据。所以我留下的唯一选择是豆子。因此,虽然我能够实现这一点,但想知道,如果camel应该能够接收凭据,而不是对象或客户端,而是帐户名和密钥作为选项。 Camel不支持密钥保险库,这可能是一种无赖。我可能能够帮助实现keyVault解决方案

1 个答案:

答案 0 :(得分:1)

这是我为实现我想要的目的而编写的bean。

从(文件:// somedir)。为了(豆:azureService sendFiletoAzure(姓名,关键,容器);

AzureService {

    public void sendFileToAzure(String storageAccountName,
            String storageAccountKey, String containerName, Exchange exchange) {
        StorageCredentials credentials = new StorageCredentialsAccountAndKey(
                storageAccountName, storageAccountKey);
        SimpleRegistry registry = new SimpleRegistry();
        GenericFile<?> file = (GenericFile<?>) exchange.getIn().getBody();
        String blobName = (String) exchange.getIn().getHeader("blobName");
        CamelContext context = new DefaultCamelContext(registry);
        registry.put("blobCredentials", credentials);
        String endpointUri = String.format(azureEndpointUri, storageAccountName,
                containerName, blobName);
        context.createProducerTemplate().sendBody(endpointUri, file);
    }
 }