gpt4 book ai didi

java - 如何让Apache Camel中的事件驱动消费者删除消费过的消息?

转载 作者:搜寻专家 更新时间:2023-11-01 01:52:03 24 4
gpt4 key购买 nike

我有一个将消息发送到我的队列的休息服务,这些消息被路由到文件:

from("test-jms:queue:test.queue").to("file://test");

另外,我在端点上有一个事件驱动的消费者。现在,如果消息被消费,这只会写入日志:

final Consumer consumer = endpoint.createConsumer(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
String message = exchange.getIn().getBody(String.class);

LOG.info("Message processed: " + message);
}
});

一切正常。在 /test 文件夹中,我为收到的每条消息获取一个新文件,此外,消费者创建一个附加有 .camelLock 的标记文件。使用 readLock=none 选项可防止消费者按预期制作这些标记文件。

但是,消息文件和标记文件在消费后都不会被删除。我是否可能在我的消费者实现中遗漏了什么?

最佳答案

当您使用内联处理器手动创建消费者时,您需要在完成后手动完成 Exchange 的 UoW 以触发将删除/移动文件等的工作。

exchange.getUnitOfWork().done(exchange);

您也可以尝试使用 UnitOfWorkProducer 包装您的处理器,它应该为您完成 UnitOfWork。

关于java - 如何让Apache Camel中的事件驱动消费者删除消费过的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25201462/

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