'Synchronously send a single message onto a queue or exchange.
An internal method which synchronously sends a single message onto
a given queue or exchange. If exchange is not specified,
the message is sent directly to a queue specified by routing_key.
If no queue is found by the name of routing_key while exchange is
not specified an exception is raised. If an exchange is specified,
then the message is delivered onto the requested
exchange using routing_key. Message sending is synchronous using
sync=True because large messages in kombu funtests were not being
fully sent before the receiver closed.
This method creates a :class:`qpid.messaging.endpoints.Sender` to
send the message to the queue using the
:class:`qpid.messaging.endpoints.Session` created and referenced by
the associated :class:`~kombu.transport.qpid.Transport`.  The sender
is closed before the method exits.
External calls for put functionality should be done using
:meth:`basic_publish`.
:param routing_key: If exchange is None, treated as the queue name
to send the message to. If exchange is not None, treated as the
routing_key to use as the message is submitted onto the exchange.
:type routing_key: str
:param message: The message to be sent as prepared by
:meth:`basic_publish`.
:type message: dict
:keyword exchange: keyword parameter of the exchange this message
should be sent on. If no exchange is specified, the message is
sent directly to a queue specified by routing_key.
:type exchange: str'

def _put(self, routing_key, message, exchange=None, **kwargs):

    if (not exchange):
        address = (u'%s;    {assert:    always,    node:    {type:    queue}}' % (routing_key,))
        msg_subject = None
    else:
        address = (u'%s/%s;    {assert:    always,    node:    {type:    topic}}' % (exchange, routing_key))
        msg_subject = str(routing_key)
    sender = self.transport.session.sender(address)
    qpid_message = qpid.messaging.Message(content=message, subject=msg_subject)
    try:
        sender.send(qpid_message, sync=True)
    finally:
        sender.close()
