问题标签 [poller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
20723 浏览

java - Spring Integration 没有为端点定义轮询器

嗨,我很难解决我的 xml 配置,

这是我的弹簧集成配置 xml:

这是我的主要课程::

我只是简单地使用主类运行它,我收到了这个异常::

我只是学习弹簧集成的新手,我也不知道如何修复我的配置..

0 投票
1 回答
688 浏览

spring-integration - Spring Integration:在固定持续时间后停止轮询

我的要求是我想在固定的时间间隔后停止轮询器,比如 9(小时)。现在我试图在 1 分钟后停止轮询。以下是我的代码:

但现在我观察到的是,当我启动我的程序然后在启动时,我立即在控制台中收到以下消息:

在启动日志开头的某个地方,我们得到:

2014 年 5 月 28 日上午 10:27:55 org.springframework.integration.endpoint.AbstractE ndpoint 开始信息:开始传入文件.适配器

在启动日志末尾的某处,我们得到:

2014 年 5 月 28 日上午 10:27:55 org.springframework.integration.endpoint.AbstractE ndpoint 停止信息:停止传入文件.适配器

为什么在我们的 fixed-delay="#{10 * 1000}" 为 10 秒时,incomingFiles.adapter 立即停止。时间完全一样,绝对没有延迟。所以理想情况下轮询器应该在 10 秒后停止。而不是立即。目录中还有4个文件,它只拾取一个。

请建议有什么问题。

0 投票
1 回答
602 浏览

java - 用于不同事件的 Spring Integration 自定义轮询器

我需要轮询文件夹的更改,即添加、修改和删除的文件。

如果我想区分上面列出的不同类型的事件,我需要实现一个自定义轮询器,即实现 AbstractPoller。我已经实现了一个轮询器,它为不同的项目执行此操作,但希望我们使用弹簧集成和批处理,因为我需要使用其他功能。

这样做的最佳方法是什么?

谢谢

0 投票
1 回答
1266 浏览

spring - Spring Integration FTP - poll without transfer?

I'd like to utilize Spring Integration to initiate messages about files that appear in a remote location, without actually transferring them. All I require is the generation of a Message with, say, header values indicating the path to the file and filename.

What's the best way to accomplish this? I've tried stringing together an FTP inbound channel adapter with a service activator to write the header values I need, but this causes the file to be transferred to a local temp directory, and by the time the service activator sees it, the message consists of a java.io.File that refers to the local file and the remote path info is gone. It is possible to transform the message prior to this local transfer occurring?

0 投票
1 回答
238 浏览

poller - 尽管有可用消息,但不会触发 Socket.ReceiveReady

我已经开始探索 NetMQ 3.3.0.11 并遇到了使用 Poller 的问题。

我试图实现轮询器轮询大约 1 秒,然后停止并允许在它恢复轮询 1 秒之前完成其他操作,依此类推。

我有以下代码:

我面临的问题是,在轮询期间,即使准备好接收消息,也不会触发 Client.ReceiveReady 事件。并提出了一个InvalidOperationException陈述Poller is started

知道我做错了什么吗?

0 投票
0 回答
209 浏览

c# - windows 服务未按计划时间启动

我有一个与 Magento API 通信以提取数据的 Windows 服务。Windows 服务如何在第一次启动时正常运行,没有任何错误或问题。包含轮询器,用于计算下一次执行 Windows 服务的时间,并在配置文件中指定键值“pollerExecutionTime”。我注意到的是,尽管将 Windows 服务设置为自动启动类型,但它并没有在预定时间启动。这是轮询器的代码。如果有人可以看看并告诉我我做错了什么,那将非常有帮助,因为我不精通调试 Windows 服务。

0 投票
1 回答
500 浏览

spring-integration - 使用任务执行器的事务轮询器是否将数据库资源用于排队消息

我有一个服务激活器,它使用轮询器从通道中提取消息。该通道有一个队列,该队列由数据库的持久存储支持。轮询器还配置了一个任务执行器,以便为来自通道的消息处理添加一些并发性。

任务执行器配置有队列容量。

由于轮询器从数据库中的通道检索消息并且这被配置为事务性的,因此如果任务执行器没有更多可用线程,那么在任务执行器中排队的消息的事务会发生什么。线程的任务执行器上的请求被排队,由于这些消息没有自己的线程,事务会发生什么?我假设轮询器从持久通道存储中删除由任务执行器(在)排队的消息将被提交。因此,如果服务器在任务执行器中排队运行可运行对象时出现故障,它们会丢失吗?

由于事务性持久通道队列的想法是确保在服务器出现故障时不会丢失任何消息,因此如何根据通道数据库支持的队列/存储上的活动事务处理排队的消息(在任务执行器中)?

0 投票
1 回答
3756 浏览

spring - Spring集成轮询器以错误的时间间隔触发

代码:https ://github.com/giuliopulina/spring-integration-poller

我在尝试使用 Spring 集成创建 jdbc 轮询器时遇到问题。

当我向表格提供新数据时,处理速度比预期的要慢:一切正常,除了轮询每 60 秒触发一次,我不明白为什么。

2015-05-27 10:50:40,234调试 ExpressionEvaluatingSqlParameterSourceFactory - 将表达式#root.![pk] 解析为(pks 列表)

2015-05-27 10:51:40,234调试 ExpressionEvaluatingSqlParameterSourceFactory - 将表达式#root.![pk] 解析为(pks 列表)

这是spring集成配置xml的相关部分:

你能帮我理解这个问题吗?

更新:

关于事务的“jdbcOutputChannel”建议,我同意并根据您的提示修改了我的配置,因为它更干净(无论如何,服务激活器也在单独的事务中运行,即使 xml 示例中没有列出)。

关于我遇到的问题,我尝试删除所有其他 Spring 集成组件,并且轮询器按我的预期连续触发(我知道固定速率 = 0 太高了:))相反,当项目中配置了其他轮询器时像这样,我的轮询器似乎也继承了相同的超时:

将其他轮询器的超时切换为 10000 毫秒,我的轮询器每 10 秒(而不是 60 秒)触发一次。我无法分享完整的 spring 集成配置,但我想问一下:完全分离的 poller 可以修改彼此的行为吗?

更新 2:我创建了一个单独的项目试图重现该问题,但我仍然无法做到。因此,我尝试删除以下配置,它是为了仅在应用程序完全启动并运行时才启动轮询器而引入的:

而且问题已经消失了,即使这个我完全可以理解原因。无论如何,为我的轮询器创建一个不同的 startupChannel 效果很好:

更新 3:

在为您准备代码的项目时,我注意到以下日志:

信息:没有明确定义名为“taskScheduler”的 bean。因此,将创建一个默认的 ThreadPoolTask​​Scheduler。

因此,我添加了以下配置,现在一切正常:

我猜默认池大小是 10,因此在某些情况下,当 totalNumberOfPollers > taskScheduler.size() 时,配置会被覆盖。我对吗?

谢谢朱利奥

0 投票
1 回答
1295 浏览

spring-integration - Spring Integration - 如果 Poller 和 TaskExecutor 不协调,则内存泄漏

在下面的 Spring Integration 文档的 7.1.7 异步轮询部分中,解释了如果 Poller 和 TaskExecutor 不协调可能会发生内存泄漏。但我不明白。

http://docs.spring.io/autorepo/docs/spring-integration/3.0.x/reference/html/messaging-endpoints-chapter.html#async-polling

上面的配置演示了其中一种不协调的配置。

即使所有线程都被阻塞等待新消息到达或超时到期,轮询器仍会继续调度新任务。假设有 20 个线程执行 5 秒超时的任务,它们将以每秒 4 个的速率执行(5000/20 = 250ms)。但是,新任务以每秒 20 个的速度被调度,因此任务执行器中的内部队列将以每秒 16 个的速度增长(当进程空闲时),所以我们基本上有内存泄漏。

处理此问题的方法之一是将 > 任务执行器的 queue-capacity 属性设置为 0。

有人可以详细说明一下。

以下是我对上述代码的理解:

pool-size 为 20 - 因此将执行 20 个线程。

接收超时为 5 秒:因此 20 个线程将有 5 秒的时间来完成任务。

固定速率为 50 毫秒 - 因此新任务以每秒 20 个的速率进行调度。

我有几个问题:

Q. 如果执行 20 个线程的时间超过 5 秒会怎样?

Q. 在文档中,它所说的任务将以每秒 4 个的速度执行。但是,有些任务可能会在不到 4 秒的时间内运行,有些则需要更多时间。

Q. 它是如何导致内存泄漏的?如果没有可用的线程和队列,Executor 会根据拒绝策略拒绝它。

问:将 queue-capacity 设置为 0 有何帮助?根据我的理解,如果所有线程都忙,那么 Executor 会将它们放入队列中,直到达到队列容量。

0 投票
1 回答
124 浏览

angularjs - 轮询 Angular API 调用时的回调问题

我有一个不断轮询的 API 请求。我正在使用 angular-poller 服务来帮助解决这个问题。

在网络面板中,我看到了请求,解析为 200,以及响应数据。它每 6 秒发出一次请求,就像它应该的那样。但是,数据没有分配给 $scope 变量。承诺中的任何内容都没有被分配/运行。