- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的应用中有 2 个 Actor 。服务和 PushSocket。我正在使用邮箱在两个 Actor 服务和 PushSocket 之间进行通信。当我只是在 PushSocket 上创建单个实例并将消息添加到它的邮箱时,它运行良好。
**File: service.rb**
Celluloid::ZMQ.init
class Service
include Celluloid::ZMQ
attr_accessor :pushsocket
def initialize
initialize_pushsock_actor
send_messages
end
def initialize_pushsock_actor
@pushsocket = PushSocket.new
end
def send_messages
10.times do
puts 'sending data'
@pushsocket.mailbox << 'test'
end
end
end
**File: push_socket.rb**
Celluloid::ZMQ.init
class PushSocket
include Celluloid::ZMQ
def initialize
async.wait_for_my_messages
end
def wait_for_my_messages
loop do
message = receive { |msg| msg }
puts "Got a Message: #{message.inspect}"
end
end
end
但是当尝试使用 pool 时,它并没有按预期工作。我没有在推送套接字中收到任何消息。
**File: service.rb**
Celluloid::ZMQ.init
class Service
include Celluloid::ZMQ
attr_accessor :pushsocket
def initialize
initialize_pushsock_actor
send_messages
end
def initialize_pushsock_actor
@pushsocket = PushSocket.pool(size: 10)
end
def send_messages
10.times do
puts 'sending data'
@pushsocket.mailbox << 'test'
end
end
end
**File: push_socket.rb**
Celluloid::ZMQ.init
class PushSocket
include Celluloid::ZMQ
def initialize
async.wait_for_my_messages
end
def wait_for_my_messages
loop do
message = receive { |msg| msg }
puts "Got a Message: #{message.inspect}"
end
end
end
为了让它正常工作,我使用了 push socket 的实例方法,它给出了正确的结果。当我尝试使用已定义池大小的邮箱时,不确定会出现什么问题。
最佳答案
Pool
实现阻止直接访问。But you shouldn't be directly interacting with the mailbox anyway.
代替这个:
@pushsocket.mailbox << "test string"
这样做:
@pushsocket.write("test string")
注意:您在池的实现中仍然可能存在逻辑错误。当您写入套接字 actor 时,您不知道要写入哪个底层套接字。没关系,如果您正在实现某种与序列无关的管道,其中每个 push
套接字连接到单个 pull
套接字,并且您不关心哪个 socket actor 实际执行写操作。
关于ruby - 访问通过 Celluloid 中的池初始化的 Actor 的邮箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35982064/
我是 Celluloid 的新手,对矿池和 future 有一些疑问。我正在构建一个简单的网络爬虫(请参阅底部的示例)。我的 URLS 阵列有几十万个 URL,所以这个例子被剥离到几百个。 我现在要做
为了理解赛璐珞,我写了下面的脚本。 require 'celluloid/current' class Processor include Celluloid def perfom(numbe
我正在尝试在我的一个使用 Celluloid 的项目中使用池。但是,每当我在 include 的 Celluloid 类上调用 pool 方法(因此从 Celluloid::ClassMethods
我在 Google 计算引擎上部署了一个 JRuby 应用程序。我注意到加载 celluloid gem 需要一段时间。在查看更多细节后,我发现加载 celluloid/internals/stack
我的问题应该能帮助我走上正确的道路。 我正在使用并发框架 celluloid 开发一个 ruby 应用程序。这是它的样子: 我有一些插件。我想同时运行它们并等到最后一个完成。我有一个抽象类,叫做P
最近我将我的 Rails 版本更新到 4.2.3 并将 ruby 版本更新到 ruby-2.2.3。之后,当我 bundle 它时会出现以下错误: $ bundle Fetching gem me
我有一个 Pinoccio microcontroller (绝对棒极了,试试看)。微 Controller 为其服务器打开一个套接字。我正在 Ruby 应用程序中编写 TCP 套接字服务器,我将在其
我正在构建一个小的 ruby 程序来运行与 MQTT 的连接。服务器并订阅 channel 。我正在使用 mosquitto gem 这只是 libmosquitto 的桥梁C 库。 我创建了一个
情况 我使用 Chrome 的 Remote Debugging Protocol 连接到 WebSocket ,使用 Rails 应用程序和实现 Celluloid 的类,或者更具体地说,cellu
每次我启动该应用程序时,我第一次调用它时,它都会返回 Dead Actors。之后它按预期返回。 require 'celluloid' class BatchProcess include Ce
我正在使用 Ruby 1.9.3,并在 Mac OSX 10.7 上进行测试。 我有一个 Sender 类,它应该向某个 URL 发送请求: require "celluloid" require "
我知道 Http.rb 和 Celluloid[1] 目前不支持当前超时,但是否有临时解决方法? 这是我要运行的代码: def fetch(url, options = {} ) puts
我的应用中有 2 个 Actor 。服务和 PushSocket。我正在使用邮箱在两个 Actor 服务和 PushSocket 之间进行通信。当我只是在 PushSocket 上创建单个实例并将消息
我看到了一些我试图理解的奇怪问题,该问题的第一部分是试图了解数据库池在 Celluloid 与 Celluloid/ZMQ 中的工作方式。 数据库池。 1) 线程。 5.times do Th
我正在使用 Celluloid::IO 进行 DNS 查询,下面是我的代码: require 'celluloid/io' class MyResolver include Celluloid
我已经将 rvm 设置为 # .rvmrc rvm use rbx-2.0.0-rc1 并且它正确地设置了版本 $ ruby -v rubinius 2.0.0rc1 (1.8.7 release 2
我正在尝试安装 GitLab CI,但出现此错误。 Gem::InstallError: celluloid requires Ruby version >= 1.9.2. An error occu
我按照 Sidekiq 的简单设置说明找到了 here ,但我无法让它工作。 这是堆栈跟踪。我也启动了redis服务器。有人知道我在这里缺少什么吗? E, [2012-09-28T09:11:36.4
我是一名优秀的程序员,十分优秀!