Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApacheCamel和SQS扩展客户端库_Java_Amazon Web Services_Apache Camel_Amazon Sqs - Fatal编程技术网

Java 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" +

所以。正如您所知,AWS简单队列服务对消息的大小有一些限制。还有一个叫做扩展客户机库的程序,它通过使用S3存储桶帮助我们避免这种限制。我还使用它来管理队列

我想我只是误解了这个概念,但是我有一个问题,那就是如何让ApacheCamel和扩展的SQS库一起工作

所以首先我定义了一条新路线

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">