0

我正在使用 Jruby 1.7.12 和赛璐珞(0.16.0)。我的应用程序正在使用池并循环生成参与者

require 'kaiwa'
Kaiwa::Launcher.run
Celluloid.logger = Kaiwa::Logger.logger

class KaiwaTest
  include Celluloid
  Celluloid::LINKING_TIMEOUT = 5

  def initialize
  end

  def create_kaiwa_users(handle)
    Kaiwa::Manager.create_user(handle)
  end

 def send_kaiwa_messages(to_handle, from_handle, message)
   Kaiwa::Manager.send_message(to_handle, from_handle, message)
 end
end

kt = KaiwaTest.pool(size: 4)

(0..1_00_000).to_a.each do |index|
  kaiwa_test_pool.async.create_kaiwa_users("user_#{index}") 
 end

在我的库中,每个用户都是与经理相关联的演员,经理也是演员。我已经尝试完全消除链接,但问题仍然存在。当我创建超过 30 个用户 Actor 的那一刻,我的系统就会挂起。

似乎讨论了一些类似的超时错误,并提到了 JRuby 问题,但没有具体涉及链接超时问题。我无法弄清楚是什么导致了这个问题。

提前致谢。

整个代码库可在https://github.com/supersid/kaiwa获得

将不胜感激我能得到的任何帮助。

4

1 回答 1

0

有趣的项目(XMPP +赛璐珞 +jRuby)

我假设kaiwa_test_pool应该是kt

我会尝试使用0.17.0

你不需要在Pool这里。你只需要一个专门的Supervision::Container

您需要做的是实例化一个管理器,使用Kaiwa::Manager.supervise as: :manager

然后为您的用户参与者实例化一个监督容器。

不确定为什么要创建0..1_00_000用户?

无论哪种方式,都不Pool需要,使用0.17.0和使用普通的监督容器。

于 2015-06-16T13:47:59.633 回答