目前我正在使用Thrift协议在Rails应用程序和HBase之间进行同步通信:
table = HBaseRb::Table.new ThriftClientFactory.create("client_name"), "table_name"
i = table.atomic_increment("row_key", "f:count_#{Time.now.getlocal.hour}")
这些代码属于模型类,因此如果HBase出现问题,服务可以阻止。
要解决这个问题,我想异步进行Thrift通信(非阻塞I / O)。我以为EventMachine可以解决这个问题。但是有几个关于将EventMachine用于我的Rails应用程序的问题:
据我所知,EventMachine就像是一个持续监听事件的服务器(或守护进程)。如果是这样,我应该在我的Rails应用程序中包含一个小型EM服务器吗?
我应该使用EventMachine.start_server :host, : port, :server_module
做我想做的事吗?如果是, HTTP请求是我向EM服务器发送事件的方式吗?
如果我不正确地理解EM,请告诉我。
感谢您的任何建议/更正。