def publish(data, opts = {})
opts = opts.dup
out = []
routing_key = opts.delete(:key) || key
mandatory = opts.delete(:mandatory)
immediate = opts.delete(:immediate)
delivery_mode = opts.delete(:persistent) ? 2 : 1
content_type = opts.delete(:content_type) || 'application/octet-stream'
out << Qrack::Protocol::Basic::Publish.new({ :exchange => name,
:routing_key => routing_key,
:mandatory => mandatory,
:immediate => immediate })
data = data.to_s
out << Qrack::Protocol::Header.new(
Qrack::Protocol::Basic,
data.bytesize, {
:content_type => content_type,
:delivery_mode => delivery_mode,
:priority => 0
}.merge(opts)
)
out << Qrack::Transport::Body.new(data)
client.send_frame(*out)
end