当前位置: 首页 > 知识库问答 >
问题:

Apache Camel:聚合交换完成时完成交换

岳俊雅
2023-03-14

在我的Apache Camel应用程序中,我有一条非常简单的路线:

from("aws-sqs://...")
    .aggregate(constant(true), new AggregationStrategy())
    .completionSize(100)
    .to("SEND_AGGREGATE_VIA_HTTP");

也就是说,它从AWS SQS获取消息,以100条为一批进行分组,然后通过HTTP发送到某个地方。

与来自SQS的消息的交换在进入聚合阶段时成功完成,此时Sqs消费者将它们从队列中删除。

问题是,聚合的交换可能会出现问题(传递时可能会出错),消息将丢失。我真的希望这些原始交换只有在它们所在的聚合交换也成功完成(传递了一批消息)时才能成功完成(从队列中删除消息)。有办法做到这一点吗?

谢谢。

共有1个答案

孟鹤龄
2023-03-14

您可以将删除后读取设置为,并在将消息发送到 HTTP 终结点后手动删除消息;您可以使用 Bean 或处理器,并通过 AWS 开发工具包库发送正确的 SQS 删除请求。当然,这是一种解决方法,但我没有看到更好的方法。

 类似资料:
  • 我正在实施v2 Express Checkout Paypal集成;它工作正常,但是它并没有完全完成交易(商业帐户不接收付款)。 > 将生成令牌和订单ID。 我复制并粘贴给定的链接到URL栏,然后按回车键继续完成交易。。 事务完成并重定向到新的URL

  • 说明 协议2.1中读取state=2,3的结账请求后,从业务系统完成结账,并提交结果到服务端 请求地址 http://api.dc78.cn/Api/cash_post_cash 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 id 请求编号 此编号为协议2.1中返回的结算单id bzid 结算业务单号 返回 {"status":1,"info":"提交成功"} 请求方式 INI 请

  • 秒付业务,下行接口收到cash-pay后(下行接口详见0.5),完成相应的结账业务流程,并上传确认支付订单处理完成。 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 cash_post_cash string get GET参数组,本组参数需要参与签名 是 object └id 支付单流水号payid 是

  • 嗨,我有一个骆驼路线,它分割一条传入的消息,然后我想聚合这条消息,但我不知道会分割多少条消息。 我使用了以下方法: 这不起作用,而且挂起了……不过,如果我将完成大小设置为一个数值,它就起作用了。 有人知道如何动态聚合,并等待完成。顺便说一下,标题是在分割之前设置的。

  • 我有以下问题: 我正在使用Spring MVC 4.0.5和Hibernate 4.3.5,我正在尝试创建一个Restfull Web应用程序。问题是,我想排除某些字段,使其无法序列化为 JSON,具体取决于使用方面在控制器中调用的方法。 我现在的问题是Hibrate不会在事务从方法返回后立即提交事务,而只是在序列化之前提交。 Controller.java Service.java 方面的建议执

  • 我需要计算15分钟内A发生的次数和B发生的次数。该流可能是A1,A2,B1,B2,A3,B3,B4,B5,A4,A5,A6,A7,B6 .在我的例子中,事件结果是A2,B1 A3,B3 A7,B6 .我需要接收匹配发生时的实时结果。我有点累了。我认为只有使用flink cep才能做到这一点.但是flink-sql-cep不支持聚合。它只计算发生的事件。在这种情况下,如何用一条SQL完成这项任务。