问题标签 [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.
java - 如何在 Spring 中扫描多个目录位置以查找只有一个输入通道适配器的文件?
我有一个任务,我正在使用 spring-integration inbound-channel-adapter 读取文件的两个不同文件夹。
我的bean定义如下:
我想从该位置读取文件,也想从我想用相同的处理程序类处理它的任何位置读取文件。我无法编写两个主要类来读取不同的入站通道适配器。我曾尝试将扫描仪添加到相同的位置,但它没有锻炼。我在上面尝试过,但它给出了错误预期的单个匹配 bean 但找到了 2:。对此的任何帮助将不胜感激。
spring-integration - Spring Integration:防止多节点环境下的重复
我有一个由入站适配器轮询的文件。环境方面,我有多个节点轮询 NAS 位置上的单个文件(对所有人可见)并防止重复是真的。
令人惊讶的是,如果我重复放置一个文件,在服务器重新启动之前,没有一个节点会选择该文件。
假设 spring 集成用于将这些信息保存在 spring 上下文中,如果被一个节点遗漏,则应该由其他节点选择。
有人能解释一下这个标志或元数据在哪里维护吗?
spring-integration - Spring Integration:文件轮询内存消耗
我使用 Poller 跟踪 InboundChannelAdapter 以每 30 秒处理一次文件。这些文件并不大,但我意识到即使没有文件进来,内存消耗也会不断增加。
每次轮询后是否存在未清除的内部队列?如何配置以避免耗尽内存。
在深入挖掘之后,看起来下面的 Spring IntegrationFlows 处理来自 InboundChannelDapter 的数据在每次文件轮询后都占用了内存。在我注释掉中间部分之后,内存消耗似乎稳定(而不是增加消耗)。现在我想知道我们如何强制 Spring IntegrationFlows 在它们通过不同的通道后清除这些消息和标头(即在下面的最后一个通道之后)
zeromq - 在多个轮询器之间拆分工作?
我目前在服务器端工作的设置是这样的——我有一个经理(带有轮询器),它等待传入的工作请求。一旦收到东西,它就会为工作创建工作人员(带有单独的轮询器和单独的端口/套接字),然后工作人员直接与客户端通信。
我观察到,当任何一个工作人员有一些繁忙的流量时,它会在某种程度上禁用管理器——ReceiveReady
事件的触发有很大的延迟。
NetMQ 文档指出“使用轮询器接收消息比直接在套接字上调用 Receive 方法要慢。当每秒处理数千条或更多消息时,轮询器可能成为瓶颈。” 我远远低于这个限制(比如连续 100 条消息),但我想知道在单个程序中有多个轮询器是否不会进一步降低性能。
我更喜欢有单独的实例,因为代码更干净(关注点分离),但也许我违背了 ZeroMQ 的原则?问题是——在单个程序性能中使用多个轮询器是否明智?或者反过来——多个轮询器是否故意让彼此挨饿?
spring - 根据一些事件配置spring集成轮询器
我正在使用 jdbc-inbound-channel-adapter 从数据库中轮询数据,并使用具有固定速率的轮询器。现在我不想经常查看数据库。我希望数据库更改通知到位,以便在我们的应用程序上发送通知,并且根据该通知/事件,我们需要调用轮询器来检索数据。
你能帮我看看同样的配置是什么吗?如果我们可以配置一个基于事件的轮询器来轮询数据,那将会很有帮助。
提前致谢, 桑迪普
spring-integration - Spring Integration:如何增加对传入消息的处理
我正在开发一个 Spring 应用程序,它将每分钟接收大约 500 条 xml 消息。下面的 xml 配置只允许每分钟处理大约 60 条消息,其余消息存储在队列中(持久保存在 DB 中)并以每分钟 60 条消息的速度检索。
尝试从多个来源阅读文档,但仍不清楚 Poller 与任务执行者相结合的作用。我对目前每分钟处理 60 条消息的理解是因为轮询器配置中的“固定延迟”值设置为 10(因此它将在 1 分钟内轮询 6 次)和“max-messages-per-poll”设置为 10,因此每分钟处理 6x10=60 条消息。
如果我的理解不正确,请指教,并帮助修改xml配置以实现以更高的速率处理传入的消息。
任务执行者的作用也不清楚——是否意味着 pool-size="50" 将允许 50 个线程并行运行以处理轮询器轮询的消息?
我想要的全部是:
- JdbcChannelMessageStore 用于将传入的 xml 消息存储在数据库 (INT_CHANNEL_MESSAGE) 表中。这是必需的,因此在服务器重新启动的情况下,消息仍存储在表中并且不会丢失。
- 传入消息将并行执行,但数量受控/有限。根据系统处理这些消息的能力,我想限制系统应该并行处理多少条消息。
- 由于此配置将在集群中的多个服务器上使用,因此任何服务器都可以拾取任何消息,因此不会导致两个服务器处理同一消息的任何冲突。希望这是由 Spring Integration 处理的。
抱歉,如果这已在其他地方得到回答,但在阅读了许多帖子后,我仍然不明白这是如何工作的。
提前致谢。
在 Artem 回复后添加:
谢谢阿尔乔姆。因此,在 10 秒的固定延迟后发生的每次轮询(根据上面的配置),任务执行器将检查任务队列,如果可能(并且需要)启动一个新任务?根据“maxMessagesPerPoll”配置,每个 pollingTask(线程)将从消息存储(队列)接收“10”条消息。
为了获得更高的传入消息处理时间,我是否应该减少 poller 上的 fixedDelay 以便任务执行器可以启动更多线程?如果我将 fixedDelay 设置为 2 秒,将启动一个新线程来执行 10 条消息,并且一分钟内将启动大约 30 个这样的线程,在一分钟内处理“大约”300 条传入消息。
很抱歉在一个问题上问得太多——只是想解释完整的问题。
python - PYTHON:如何从使用 zmq Poller 的服务器连续接收数据?
我正在使用简单的 requests.post() 模块连接到服务器并接收数据
下面是服务器中的 get_data() 方法,它使用 zmq 轮询器接收数据,直到获得最终响应。
在服务器端,获得的响应记录如下:
所以,我假设我在服务器端实现的 zmq poller 工作得很好。但是,我很想知道如何将这 9 次数据迭代发回给请求的客户端?
PS我想在客户端连续接收数据。您可能会建议在某处附加每批响应并将最终响应发送回客户端。当响应太大时这是不可行的(请求客户端会超时)
architecture - [设计]:具有数千个轮询器的分布式应用程序
由于我每次都需要最新数据的应用程序不会发送更改通知,因此我需要每秒轮询一次以获取更新。由于每秒需要更新数千个项目,因此我想设计一个包含数千个轮询器的应用程序 [当然,我欢迎您提出更好的解决方案的建议]。
从这篇文章中了解到,每台服务器上的 Java VM 都可以支持很多线程。只是提到我不受语言的约束。
现在,我正试图弄清楚如何使其可扩展并使其在分布式环境中工作。
一个想法是创建一个主服务器,其中包含数千个要轮询的项目列表。它将其中一些传递给从属服务器进行轮询,同时从它们那里获取心跳。另一个是关于服务器相互共享索引范围(可能是 S3 中的文件)关于谁在处理哪些项目。我什至不确定它们中的任何一个是否有效。
我找不到任何可以帮助我的框架。或者作为一个新手,可能我不知道该寻找什么。
你的建议是什么?任何指针都会有所帮助。真的很感激。
jms - JMS 消息的 Spring Integration 动态选择器
JMS 消息的 Spring Integration 动态选择器
我需要使用动态选择器从队列中检索消息。例如,我需要定期从队列中获取大于 1 小时的消息。消息选择器似乎只初始化了一次。每次使用轮询器时都可以更改吗?如何?