新手问题 gem bunny 在往 rabbitmq 发送的消息很大的时候为何被编码成 base64 且被切割了

ryan · 2014年11月26日 · 3957 次阅读

最近项目需要把 mysql 里的数据读出来,序列化成 json,然后发给 rabbitmq,但是数据量庞大,导致 json 的 size 超过 90000,然后发现数据直接变成了乱码。后来发现就是因为数据量过大导致了,通过批量发送解决了问题。

def send_rabbitmq value
    conn = Bunny.new(:host => "xxx.xxx.xxx.xxx", :vhost => "/", :user => "abc", :password =>"123")
    conn.start

    ch = conn.create_channel
    ch.basic_publish( value ,"exchange.x", "routing.key", :payload_encoding => "string")
    sleep 1.0
end

但是,现在问题来了:

  • 首先为何 massge 会被 base64 编码(因为我发现乱码如果被 base64 解码的话,就是原始 json 数据,但只是片段,并非全部,因为查看解码后的数据发现 json 明显被一刀切了)
  • 第二个问题,如果数据量过大,bunny 会自动把数据切割吗?还是服务器 rabbitmq 自动丢弃掉了?
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号