消息不会从Camel路由队列中删除



请告诉新手如何正确构建路由,一切似乎都正常,但已处理的消息不会从队列中删除。

@Startup
@CamelAware
@ApplicationScoped
public class MyRouteBuilder extends RouteBuilder {
@Resource(mappedName = "java:/ConnectionFactory")
private ConnectionFactory connectionFactory;
@Override
public void configure() throws Exception {
JmsComponent component = new JmsComponent();
component.setConnectionFactory(connectionFactory);
getContext().addComponent("jms", component);
from("timer://foo?fixedRate=true&period=60000")
.setHeader(Exchange.HTTP_METHOD, constant("GET"))
.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
.setHeader(Exchange.HTTP_QUERY, constant("projectCode=200"))
.to("https://serv:port/rest/testgetprojectlist")
.convertBodyTo(String.class)
.to("jms:queue:queue_name?concurrentConsumers=10&acknowledgementModeName=CLIENT_ACKNOWLEDGE")
.to("file:///opt/tmp/?fileName=tempOut.txt&charset=UTF-8")
.log("we are in here with this message ${body}");
}
}

试试这个。。

添加acknowledgementModeName=CLIENT_ACKNOWLEDGE使Camel仅在路线成功完成时删除消息:

来自("activemq:some.queue.name?acknowledgementModeName=CLIENT_ACKNOWLEDGE"(

Camel还锁定了这些消息,以防止其他Camel实例或线程处理相同的消息。

最新更新