1

我使用这个名为“Rjms”的包,它是 RJava 的包装器,用于从 apache activeMQ 推送/消费。包中有一个名为“consume”的函数,我用来从队列中消费。问题是,一旦我打了那个电话,直到从队列中收到一条消息,应用程序就会被挂起。如果碰巧队列为空,则整个脚本将暂停。我想添加某种时间,这样如果消息在 5 分钟内没有出现,那么我想取消通话。

一旦在 R 中进行调用,它就会在内部调用一些 Java 函数(我假设)。因此,我不确定 R 是否可以完全中断这个过程。我正在阅读回调,这似乎是一个好主意,但找不到在 R 中使用的任何具体内容。我不确定是否可以给出一个可重现的示例,因为需要首先设置 Apache ActiveMQ。但总的来说,有没有一种方法可以摆脱不是 R 原生的函数调用?

任何帮助将不胜感激。

链接 - Rjms 包 - http://cran.r-project.org/web/packages/Rjms/Rjms.pdf

4

1 回答 1

0

我不能说 R 到底在做什么,但听起来好像它调用了阻塞 MessageConsumer#receive 方法,该方法将永远等待消息到达。有一个定时替代方案,但我不知道您是否可以使用它。通常,您可以通过调用其 close() 方法关闭 MessageConsumer 来中断此方法,如果您可以调用该方法,那么它应该中断并返回 null,或者可能引发我忘记的异常。我对 R 了解不多,因此无法提供任何其他建议,中断阻塞调用往往因情况而异。

于 2013-06-12T22:42:52.147 回答