qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Virgilio Fornazin <virgilioforna...@gmail.com>
Subject Re: Differences between Message classes in Qpid C++ API
Date Thu, 26 Jan 2012 19:52:31 GMT
Davide

It´s very CPU and resource intensive. We use RedHat MRG (qpid 0.10) here,
and we ended-up creating specific receivers for each exchange type,
and using specific receiver for specific exchange in our middleware
abstraction code in this way...

<code>
                    qpid_context->m_direct_sender =
qpid_context->m_session.createSender("amq.direct");
                    qpid_context->m_topic_sender =
qpid_context->m_session.createSender("amq.topic");
                    qpid_context->m_fanout_sender =
qpid_context->m_session.createSender("amq.fanout");
</code>

when we need to send a message to a direct key, we use the code

<code>
                sender_reference_type get_sender(const destination &
destination)
                {
                    check_connection_state();

                    switch (destination.type())
                    {
                    case destination_type::queue:
                        {
                            return m_direct_sender;
                        }
                    case destination_type::topic:
                        {
                            return m_topic_sender;
                        }
                    case destination_type::broadcast:
                        {
                            return m_fanout_sender;
                        }
                    }
                }
</code>

.
and the routine that sends the message use

<code>
                    sender_reference_type sender =
qpid_context->get_sender(destination);

                    qpid::messaging::Message message(reinterpret_cast<const
char *>(message_to_send.ptr()), message_to_send.size());

                    if (destination.type() != destination_type::broadcast)
                    {
                        message.setSubject(destination.name());
                    }

                   sender.send(message, qpid_context->m_send_messages_sync);
</code>




On Thu, Jan 26, 2012 at 15:50, Davide Anastasia <
Davide.Anastasia@qualitycapital.com> wrote:

> Thanks Gordon,
> I end up setting the routing key in the createSender( ) and
> createReceiver( ) function: is this a common solution? How expensive is
> to create a new Sender for every new message?
>
> Last question: should I be using Runnable and Thread to implement what
> in the old API was performed by the MessageListener? Is there anything
> similar to the class SubscriptionManager in the new API?
>
> Best regards,
> Davide
>
> -----Original Message-----
> From: Gordon Sim [mailto:gsim@redhat.com]
> Sent: 26 January 2012 14:08
> To: users@qpid.apache.org
> Subject: Re: Differences between Message classes in Qpid C++ API
>
> On 01/26/2012 02:06 PM, Davide Anastasia wrote:
> > Hi Andy,
> > Thanks for the quick reply: it did help. In fact I made my code
> > compile, but unfortunately I can't find a way to set the routing_key
> > using the new API. What's the quickest way?
>
> Set the subject. Provided you send to a named exchange, that will then
> be taken as the routing key to use. You can also specify the default
> subject for the sender in the address e.g. my-exchange/my-key.
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:users-subscribe@qpid.apache.org
>
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:users-subscribe@qpid.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message