我正在使用Jruby 1.7.12和Celluloid (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个用户角色,我的系统就会挂起。
似乎讨论了一些类似的超时错误,并提到了JRuby问题,但没有特别涉及链接超时问题。我不知道是什么导致了这个问题。
提前谢谢。
整个代码库可以在https://github.com/supersid/kaiwa上找到
如果能得到任何帮助我会很感激的。
发布于 2015-06-16 21:48:00
有趣的项目( XMPP +Celluloid +jRuby )
我假设kaiwa_test_pool应该是kt
我想用0.17.0试一试
这里不需要Pool。你只需要一个专门的Supervision::Container
您需要做的是使用Kaiwa::Manager.supervise as: :manager实例化管理器
然后为你的用户角色实例化一个监督容器。
不确定为什么要创建0..1_00_000用户?
无论哪种方式,都不需要Pool,请使用0.17.0并使用普通的监督容器。
https://stackoverflow.com/questions/27471660
复制相似问题