mikutter advent calendar 2013 1日目

mikutterでビッグデータ処理

はいネタです.
とりあえずmikutterにmessagepack-rpcを導入します.
以下のプラグインを.mikutter/plugin/に導入します.

require 'msgpack/rpc'
Plugin.create(:rpc) do
  UserConfig[:tw_port] ||= 5000

  class Remote
    def tweet(msg)
      Service.primary_service.update(msg)
      true
    end

    def bigdata(str)
      Plugin.activity :system, str
      true
    end
  end

  on_boot do
    start
  end

  def start
    @server = MessagePack::RPC::Server.new
    @server.listen('0.0.0.0', UserConfig[:tw_port], Remote.new)
    Thread.new do
      @server.run
    end
  end

  def stop
    @thread.kill
  end

  settings "rpc" do
    adjustment "port number", :tw_port, 1024, 0xffff
  end
end

これを導入するとmikutterでmsgpack-rpcが使えるようになります.
そこでクライアントとして以下のプログラムを実行します.

require 'msgpack/rpc'
5000.times do |t|
  cli = MessagePack::RPC::Client.new('127.0.0.1', 5000)
  cli.call(:bigdata, t.to_s)
  cli.close
end

この例だと5000個のデータをmikutterに投げつけてます.
mikutterは受け取るのはそんなに時間はかかりませんが,表示するのに時間がすごくかかります.
ので,mikuttter.dを使ってGUI表示しなければそんなに時間かからないと思うのでそこそこ使えるのでは?