gpt4 book ai didi

apache-camel - 无法从 SQS Camel Route 中删除消息

转载 作者:行者123 更新时间:2023-12-04 14:30:58 27 4
gpt4 key购买 nike

我最近有一个关于 的问题AWS Camel 但最后我还是挺了过来。现在该应用程序似乎可以工作,但是我遇到了一个非常奇怪的异常。

首先,我的应用程序分为两个 EC2 实例。实例一从 Amazon RSS Feed 中获取前 10 本书的 ISBN 并将其存储到一个 .这是代码片段。

    public static void main(String[] args) throws Exception {

CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {

from(
"rss:http://www.amazon.de/gp/rss/bestsellers/books/ref=zg_bs_books_rsslink?splitEntries=false")
.split()
.method("RssSplitter", "split")
.process(new Dummy())
.setProperty("isbn", simple("${body}"))
.to("aws-sqs://bookz_sqs?accessKey=acceskey&secretKey=secretKey");

}
});
context.start();
Thread.sleep(10000);
context.stop();

}

实例二负责读取SQS作为第一次操作,最后从万维网的其他书库中获取额外的图书信息什么是没有问题的,最后构建一个RSS Feeder也没有问题。
public static void main(String[] args) throws Exception {
/*
* Here the sqs camel route gets the ISBN out of the queues and stores it in S3.
*/
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("aws-sqs://bookz_sqs" + "?accessKey=accessKey" + "&secretKey=secretKey").process(new DynamicIsbnEnrich()).process(
new DynamicIsbndbEnrich()).process(new DynamicOpLibEnrich()).setHeader(S3Constants.KEY, simple("${property.isbn}")).to(
"aws-s3://bookz" + "?accessKey=accesKey" + "&secretKey=secretKEy" + "&region=eu-west-1");

}
});
context.start();
Thread.sleep(10000);
context.stop();
}

现在的问题是奇怪的异常,我不明白,除了 SQS 没有从我的队列中删除消息,但是 api 说 deleteAfter Read 默认情况下为真。

2012-12-17 19:45:08,335 [Camel (camel-1) thread #0 - aws-sqs://team09bookz_sqs] WARN org.apache.camel.component.aws.sqs.SqsConsumer - Error occurred during deleting message.. Caused by: [com.amazonaws.AmazonServiceException - The request must contain the parameter MessageHandle.] Status Code: 400, AWS Service: AmazonSQS, AWS Request ID: 0655aa05-ad6f-5571-a83d-e34cc7196343, AWS Error Code: MissingParameter, AWS Error Message: The request must contain the parameter MessageHandle.



该应用程序有效,但我无法删除队列中的任何消息,我不知道为什么,我需要一些额外的安全凭据吗?

无论如何感谢您的帮助

最佳答案

此错误是由 Camel SQS 端点在输出 header 中找不到的消息句柄的空值引起的。
可能应该添加检查并在发生这种情况时记录警告......

要解决此问题,您必须确保 SQS 生产者设置的 header 一直传递到路由的末尾:
如果你在某处设置了一个新的标题,你还必须从输入中复制那些,否则它们会丢失。

关于apache-camel - 无法从 SQS Camel Route 中删除消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13920615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com