qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Clive Lilley <cl...@ckjltd.co.uk>
Subject Re: Problem with multiple LocalQueue's on a Single SubscriptionManager
Date Tue, 20 Apr 2010 19:47:21 GMT
Gordon Sim wrote:
> On 04/19/2010 07:53 PM, Clive Lilley wrote:
>> Hello,
>>
>> I have been using the QPID C++ broker and C++ client API for the last
>> several weeks and I have come across an issue today that I thought I had
>> better raise.
>>
>> I have been using MessageListeners to receive messages in my C++ client
>> applications, something like
>>
>> /Connection conn = Connection(host,port);
>> Session session = conn.newSession();
>> SubscriptionManager subMgmt = SubscriptionManager(session);
>> subMgmt.subscribe(MyMsgListener1, myQueue1Name);
>> subMgmt.subscriber(MyMsgListener2, myQueue2Name);
>> subMgmt.run();/
>>
>> And everything works as expected. But if I try to use LocalQueues I
>> don't get the behaviour I would have expected. If I change the above
>> code to
>>
>> / Connection conn = Connection(host,port);
>> Session session = conn.newSession();
>> SubscriptionManager subMgmt = SubscriptionManager(session);
>> subMgmt.subscribe(MyLocalQueue1, myQueue1Name);
>> subMgmt.subscribe(MyLocalQueue2, myQueue2Name);
>> subMgmt.run();
>>
>> /My application only reads messages off /MyLocalQueue2, /even though the
>> queue, myQueue1Name, in the broker is filling up with messages. If I
>> comment out the MyLocalQueue2 subscribe line then I can read messages
>> from MyLocalQueue1.
>>
>> So it seems that a SubscriptionManager can only be configured with a
>> single LocalQueue. If I change my code to the following
>>
>> / Connection conn = Connection(host,port);
>> Session session = conn.newSession();
>> SubscriptionManager subMgmt1 = SubscriptionManager(session);
>> // SubscriptionManager subMgmt2 = SubscriptionManager(session);/
>> / subMgmt1.subscribe(MyLocalQueue1, myQueue1Name);
>> subMgmt2.subscribe(MyLocalQueue2, myQueue2Name);
>> subMgmt1.run();
>> // subMgmt2.run();/
>>
>> then everything works fine. Is this the expected behaviour?
>
> No, that is not expected. I tried a little example of my own that 
> *does* receive messages from two separate LocalQueues (see attached).
>
> What version of the code are you using, and does the attached test 
> work for you (create queue-1, queue-2, run the test then send some 
> messages to those queues)?
>
> If this does work for you, what are the key differences between your 
> case and this test app? Are you using separate threads to process each 
> LocalQueue?
>
> ------------------------------------------------------------------------
>
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:users-subscribe@qpid.apache.org

I am using qpid-0.6 on rhel5u4. I have run your example code at home on centOS 5.4 and it
works exactly as I would have expected. I will check my non-working code example when I get
to work tomorrow. I have tried modifying your code to reflect what I believe I have at work
but I cannot get it to fail (which is both good and bad!!).  

Will hopefully be able to give you full details tomorrow after work.

regards


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Mime
View raw message