Java 将S3存储桶名称作为参数从属性文件传递到aws-S3组件
我有一个驼峰路由端点,如下所示,我想替换硬编码的s3 bucket名称,替换为一个参数,并从属性文件传递它Java 将S3存储桶名称作为参数从属性文件传递到aws-S3组件,java,apache,maven,apache-camel,Java,Apache,Maven,Apache Camel,我有一个驼峰路由端点,如下所示,我想替换硬编码的s3 bucket名称,替换为一个参数,并从属性文件传递它 <to uri="aws-s3://input-test-bucket?amazonS3Client=#aws-s3-client"/> 我有一个bean,如下所示,它传递包含访问密钥和密钥的aws-s3-client <bean id="aws-s3-client" class="com.amazonaws.services.s3.AmazonS3Clie nt
<to uri="aws-s3://input-test-bucket?amazonS3Client=#aws-s3-client"/>
我有一个bean,如下所示,它传递包含访问密钥和密钥的aws-s3-client
<bean id="aws-s3-client" class="com.amazonaws.services.s3.AmazonS3Clie nt">
<constructor-arg>
<bean class="com.amazonaws.auth.BasicAWSCredentials ">
<constructor-arg index="0" value="${aws.accessKey}"/>
<constructor-arg index="1" value="${aws.secretKey}"/>
</bean>
</constructor-arg>
</bean>
aws.accessKey和aws.secretKey的值来自一个属性文件,我想从中获取bucket名称
请告诉我如何将bucket名称添加到bean中,并将其作为参数传递给aws-s3路由。如果您愿意,您可以自己创建一个bucket名称,并在春季根据需要进行设置。这样,您可以直接将BucketName设置为
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<!--from uri="aws-s3://mycamelbucket?amazonS3Client=#amazonS3Client&maxMessagesPerPoll=5"/-->
<from ref="s3Endpoint"/>
<to uri="mock:result"/>
</route>
</camelContext>
<bean id="amazonS3Client" class="org.apache.camel.component.aws.s3.AmazonS3ClientMock"/>
<bean id="amazonS3Configuration" class="org.apache.camel.component.aws.s3.S3Configuration">
<property name="amazonS3Client" ref="amazonS3Client" />
<property name="bucketName" value="mycamelbucket" />
</bean>
<bean id="s3Component" class="org.apache.camel.component.aws.s3.S3Component">
<constructor-arg index="0" ref="camel"/>
</bean>
<bean id="s3Endpoint" class="org.apache.camel.component.aws.s3.S3Endpoint">
<constructor-arg index="0" value="aws-s3://Unknowbucket"/>
<constructor-arg index="1" ref="s3Component"/>
<constructor-arg index="2" ref="amazonS3Configuration"/>
</bean>
我对此也不熟悉,但您尝试过属性占位符吗? 本质上,如果您有一个名为“S3Bucket”的属性,例如:
<camelContext xmlns="http://camel.apache.org/schema/spring">
<propertyPlaceholder id="properties"
location="classpath:org/apache/camel/component/properties/myprop.properties"
xmlns="http://camel.apache.org/schema/spring"/>
<route>
<from uri="direct:start"/>
<to uri="properties:aws-s3:{{S3Bucket}}?amazonS3Client=#aws-s3-client"/>
</route>
</camelContext>
如果:
- 在类路径中有“myprop.properties”(在适当的路径中)
- 该属性文件包含映射到值的键“S3Bucket”
我不是在一个位置上尝试和运行这个构建,但给它一个机会 我是新来的..请你告诉我是否需要用S3Configuration创建另一个bean…是的,在camel属性占位符的帮助下,你可以将属性设置传递给任何camel端点uri。