# File lib/amqp/exchange.rb, line 311 def publish(data, opts = {}) @mq.callback { out = [] out << Protocol::Basic::Publish.new({ :exchange => name, :routing_key => opts[:key] || @key }.merge(opts)) data = data.to_s out << Protocol::Header.new(Protocol::Basic, data.bytesize, { opts[:content_type] || :content_type => "application/octet-stream", :delivery_mode => (opts[:persistent] ? 2 : 1), :priority => 0 }.merge(opts)) out << Frame::Body.new(data) @mq.send *out } self end