しょんぼり技術メモ

まいにちがしょんぼり

MsgPack-RPC

MessagePack RPC for Rubyのタイムアウト系のエラーについてのメモ

忘れてたので自分用にまとめておく。サーバ側: require 'msgpack/rpc' class MyServer def ping_sync "pong" end def ping_async as = MessagePack::RPC::AsyncResult.new # as.result("pong") as.result("pong at #{Time.now}") return as end end mysvr =…

MessagePack-RPCでバイナリデータを扱うときにUTF-8のままsliceすると死ぬほど遅いのでforce_encodingしよう(Ruby 1.9)

Ruby 1.9から、文字列にそのエンコーディングが含まれるようになった。また、MessagePack-RPCでは、Encoding::ASCII_8BITの文字列を送っても、受け手側ではEncoding::UTF_8になってしまうという仕様がある。 そのため、受け取ったデータをそのままsliceした…

MessagePack-RPCのFutureについての簡単な実験

MessagePack-RPC for Rubyの非同期RPCで使われるFutureについての簡単な実験。実験環境はRuby 1.9.2。 結論を先に: Future.getを複数回呼ぶとどうなるの? → 別に問題ない Future.getはスレッドセーフ? → いいえ。ロックしないと死ぬ。 Future.getを複数回…