Java ApacheCamel和SQS扩展客户端库
所以。正如您所知,AWS简单队列服务对消息的大小有一些限制。还有一个叫做扩展客户机库的程序,它通过使用S3存储桶帮助我们避免这种限制。我还使用它来管理队列 我想我只是误解了这个概念,但是我有一个问题,那就是如何让ApacheCamel和扩展的SQS库一起工作 所以首先我定义了一条新路线Java ApacheCamel和SQS扩展客户端库,java,amazon-web-services,apache-camel,amazon-sqs,Java,Amazon Web Services,Apache Camel,Amazon Sqs,所以。正如您所知,AWS简单队列服务对消息的大小有一些限制。还有一个叫做扩展客户机库的程序,它通过使用S3存储桶帮助我们避免这种限制。我还使用它来管理队列 我想我只是误解了这个概念,但是我有一个问题,那就是如何让ApacheCamel和扩展的SQS库一起工作 所以首先我定义了一条新路线 from("aws-sqs://queue?amazonSQSClient=#sqsClient" + "&maxMessagesPerPoll=10" +
from("aws-sqs://queue?amazonSQSClient=#sqsClient" +
"&maxMessagesPerPoll=10" +
"&deleteAfterRead=false" +
"&concurrentConsumers=10" +
"&attributeNames=All" +
"&messageAttributeNames=All"
).log(body());
sqsClient
在camel上下文中定义。xml
<bean name="sqsClient" class="com.amazonaws.services.sqs.AmazonSQSAsyncClient">
<constructor-arg>
<bean class="com.amazonaws.auth.BasicAWSCredentials">
<constructor-arg value="${access.key}"/>
<constructor-arg value="${secret.key}"/>
</bean>
</constructor-arg>
<property name="region" ref="awsRegion"/>
</bean>
最后
AmazonSQS sqsExtended = new AmazonSQSExtendedClient(new AmazonSQSClient(credentials), extendedClientConfig);
Region sqsRegion = Region.getRegion(Regions.US_WEST_1);
sqsExtended.setRegion(sqsRegion);
那么,我可以通过SpringDSL配置它,还是应该获取消息并在处理器中获取消息体
接下来,它是一个帮助我们获取消息正文的方法
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl);
List<Message> messages = sqsExtended.receiveMessage(receiveMessageRequest).getMessages();
这里我们使用amazonsqasyncClient
,但正如我前面提到的,扩展客户机库通过AmazonSQS
初始化。。。接口?所以,我完全被困住了
我也知道如何使用这个图书馆。这可能对你有帮助
谢谢。所以我找到的最好的解决方案是创建一个进程,首先从s3对象获取消息体,然后用它做一些事情 因此,我找到的最佳解决方案是创建一个进程,首先从s3对象获取消息体,并对其进行处理
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl);
List<Message> messages = sqsExtended.receiveMessage(receiveMessageRequest).getMessages();
<bean name="sqsClient" class="com.amazonaws.services.sqs.AmazonSQSAsyncClient">