2013-06-12 17 views
1

我使用這個名爲「Rjms」的包,它是RJava的包裝器,用於從apache activeMQ推送/消費。在我使用從隊列中消耗的包中有一個名爲「consume」的函數。問題是,一旦我發出這個呼叫,直到從隊列中收到一條消息,應用程序就會被掛起。如果隊列是空的,整個腳本就會暫停。我想增加一些時間,以便如果消息不是5分鐘,那麼我想打電話。突破Java調用或回調或類似的R

一旦在R中調用,它在內部調用一些Java函數(我假設)。因此我不確定R是否可以打斷這個過程。我正在閱讀回調,似乎是一個好主意,但在R中找不到任何具體的東西。我不確定是否可以給出一個可重現的示例,因爲需要首先安裝Apache ActiveMQ。但總的來說,有沒有一種方法可以從R不是本地的函數調用中出來?

任何幫助將不勝感激。

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

+0

請注意,由於此問題被問到,'Rjms'軟件包已從CRAN存儲庫中刪除。 – Antony

回答

0

我不能說什麼R的做的正是,但它聽起來好像它調用阻塞的MessageConsumer#接收方法,只會永遠等待一個消息的到來。有一個時間選擇,但我不知道你是否可以訪問它。通常你可以通過調用它的close()方法來關閉MessageConsumer,如果你可以調用一個調用,然後它會中斷並返回null,或者拋出一個異常,我會忘記它。我對R不太瞭解,所以不能提供任何其他建議,打破阻塞電話往往會因情況而異。