首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >骆驼-FTP只运行一次?

骆驼-FTP只运行一次?
EN

Stack Overflow用户
提问于 2013-08-13 14:31:22
回答 2查看 1.8K关注 0票数 0

当没有找到文件时,我似乎无法让camel-ftp组件死掉。

我添加了一个限制为LimitedPollingConsumerPollStrategy1

代码语言:javascript
复制
<bean id="noPoll" class="org.apache.camel.impl.LimitedPollingConsumerPollStrategy">
    <property name="limit" value="1"/>
</bean>

并将URI配置为使用它:

ftp://user@host.ftp/?password=pass&stepwise=false&binary=true&delete=false&noop=true&pollStrategy=#noPoll

它仍然挂着,寻找文件,当它找不到任何..。因此,我将&sendEmptyMessageWhenIdle=true添加到URI中。

当消息以空体传入时,我在输出日志的路径中添加了条件,并且看到了大量的这些消息,因此轮询使用者的限制似乎不起作用。我试着把它改成&consumer.pollStrategy=#noPoll,它的表现也是一样的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-16 12:18:10

如果没有使用任何消息,下面的PollStrategy将停止使用者。

代码语言:javascript
复制
public class PollOncePollStrategy extends DefaultPollingConsumerPollStrategy {

    @Override
    public void commit(Consumer consumer, Endpoint endpoint, int polledMessages) {
        try {
            if (polledMessages == 0) {
                log.info("No polled messages, stopping consumer");
                endpoint.getCamelContext().createProducerTemplate().sendBody(String.format("controlbus:route?async=true&action=stop&routeId=%s", EndpointHelper.getRouteIdFromEndpoint(endpoint)), null);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

在camel注册表中注册并按以下方式使用:ftp://127.0.0.1/mydir?pollStrategy=#pollOnce

票数 2
EN

Stack Overflow用户

发布于 2013-08-14 13:00:46

LimitedPollingConsumerPollStrategy用于限制当用户连续失败次数为X次时。这也是它的文档中所解释的。这并不是为了在1次投票后停止投票。

您可以实现自己的轮询策略,在使用参数polledMessages = 0调用commit方法时停止该策略。那你就知道没有被调查过的文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18211918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档