qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Davide Anastasia" <Davide.Anasta...@qualitycapital.com>
Subject RE: Differences between Message classes in Qpid C++ API
Date Fri, 27 Jan 2012 11:43:01 GMT
Thanks a lot, your snippet was really useful.

Best,
D.

-----Original Message-----
From: Virgilio Fornazin [mailto:virgiliofornazin@gmail.com] 
Sent: 26 January 2012 19:53
To: users@qpid.apache.org
Subject: Re: Differences between Message classes in Qpid C++ API

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
View raw message