Hi Kerry,

> OK, thanks for the pointer to that issue, I remember reading 
> it a while ago, didn't realize it was still open (I love 
> JIRA, but issue search isn't very effective, at least for me 
> - I often don't find highly relevant open issues...)

It's a  bit odd because search by default brings in every Apache project
- narrowing it to just Qpid and just Unresolved issues makes it better.

> Can you 
> think of any other open issues that might bite me in this 
> area?  In the mean time, I guess I'm blocked by 2199, if that 
> is the case I'll go fix it...

Great! I'll be happy to review patches attached to the JIRA. FYI, the
federation_tests currently hang, which is probably the issue you're
encountering. It's easy to just run that test with:

ctest -V -R federation_tests

-Steve

> On Wed, Apr 21, 2010 at 4:33 PM, Steve Huston 
> <[email protected]> wrote:
> > Hi Kerry,
> >
> > --
> > Steve Huston, Riverace Corporation
> > Total Lifecycle Support for Your Networked Applications 
> > http://www.riverace.com
> >
> >
> >> -----Original Message-----
> >> From: Kerry Bonin [mailto:[email protected]]
> >> Sent: Wednesday, April 21, 2010 4:05 PM
> >> To: qpid-dev
> >> Subject: Help requested w/ federation - what am I doing wrong?
> >>
> >>
> >> This is on XP SP2, using recent build (r921371 + my 
> QPID-2519 patch 
> >> applied but not being used.)
> >>
> >> I think I'm doing this correctly, but I never see anything 
> from the 
> >> receiver on the second broker.  As I understand it, 
> shouldn't clients 
> >> be able to subscribe to topics and see published messages 
> no matter 
> >> which broker they are connected to?
> >
> > You're not doing anything wrong that I can see, but Windows has a 
> > known problem in this area: 
> > https://issues.apache.org/jira/browse/QPID-2199
> >
> > Nobody has had time to address it yet, so I don't know if this is a 
> > big or small problem. I suspect it's not terribly big.
> >
> > Let me know if you need some help navigating this.
> >
> > Best regards,
> > -Steve
> >
> >> My end goal here is to add some fault tolerance to a Windows AMQP 
> >> QPID system, where clients can switch to another broker if their 
> >> current broker dies.  Since someone chose a Linux only 
> solution for 
> >> clustering, I think my simplest option is to leverage Federation, 
> >> with something like ResilientConnection to manage a list 
> of brokers, 
> >> and fail client connections over to other brokers on connection
> >> failure. This is from my federation test case, and I'm
> >> probably setting something up incorrectly...
> >>
> >> Greatly appreciate the help!
> >>
> >> Kerry Bonin
> >>
> >>
> >>
> >> I bring up two brokers:
> >>   start "5680" /Dd:\dev\qpid-r921371\cpp\build\src\debug
> >> qpidd.exe --data-dir=.\qpidd.data.5680 --auth=no --port=5680 
> >> --load-module=qmfconsoled.dll
> >>   start "5681" /Dd:\dev\qpid-r921371\cpp\build\src\debug
> >> qpidd.exe --data-dir=.\qpidd.data.5681 --auth=no --port=5681 
> >> --load-module=qmfconsoled.dll
> >>
> >> Create exchanges
> >>   python D:\dev\qpid-r921371\tools\src\py\qpid-config -a 
> >> localhost:5680 add exchange topic fed.topic
> >>   python D:\dev\qpid-r921371\tools\src\py\qpid-config -a 
> >> localhost:5681 add exchange topic fed.topic
> >>
> >> Create routes
> >>   python D:\dev\qpid-r921371\tools\src\py\qpid-route dynamic add 
> >> localhost:5680 localhost:5681 fed.topic
> >>   python D:\dev\qpid-r921371\tools\src\py\qpid-route dynamic add 
> >> localhost:5681 localhost:5680 fed.topic
> >>
> >> This appears to work correctly :
> >>   D:\dev\qpid\bin>python 
> d:\dev\qpid-r921371\tools\src\py\qpid-route
> >> route map localhost:5680
> >>
> >>   Finding Linked Brokers:
> >>       localhost:5680... Ok
> >>       localhost:5681... Ok
> >>
> >>   Dynamic Routes:
> >>
> >>     Exchange fed.topic:
> >>       localhost:5681 <=> localhost:5680
> >>
> >>   Static Routes:
> >>     none found
> >>
> >>
> >> Now trimmed from my C++ testbed...
> >>
> >> // Setup URLs and Addresses
> >>
> >> std::string urlA = "amqp:tcp:127.0.0.1:5680";
> >> std::string urlB = "amqp:tcp:127.0.0.1:5681";
> >> std::string queue = "fed.topic";
> >> Address addressTx( queue );
> >> Address addressRx( queue );
> >> int64_t timeout = 1000;
> >>
> >> // Setup transmitter on 5680
> >>
> >> Connection connectionTxA;
> >> connectionTxA.open( urlA );
> >> Session sessionTxA = connectionTxA.newSession();
> >> Sender senderTxA = sessionTxA.createSender( addressTx );
> >>
> >> // Setup listeners on 5680 and 5681
> >>
> >> Connection connectionRxA;
> >> connectionRxA.open( urlA );
> >> Session sessionRxA = connectionRxA.newSession();
> >> Receiver receiverRxA = sessionRxA.createReceiver( addressRx );
> >>
> >> Connection connectionRxB;
> >> connectionRxB.open( urlB );
> >> Session sessionRxB = connectionRxB.newSession();
> >> Receiver receiverRxB = sessionRxB.createReceiver( addressRx );
> >>
> >> // Transmit to 5680
> >>
> >> Message messageOut;
> >> MapContent contentOut( messageOut );
> >> contentOut["id"] = 1234;
> >> contentOut["name"] = "Request";
> >> contentOut.encode();
> >> senderTxA.send( messageOut );
> >>
> >> // Local listener sees the message
> >>
> >> Message messageRxA;
> >> if( receiverRxA.fetch( messageRxA, qpid::sys::Duration( 
> timeout ) ) ) 
> >> {
> >>         MapView contentRxA( messageRxA );
> >>         std::cout << "  local received: " << contentRxA << 
> std::endl;
> >>         sessionRxA.acknowledge();
> >> }
> >> else
> >>         std::cout << "  local timeout " << std::endl;
> >>
> >> // Remote never does...
> >>
> >> Message messageRxB;
> >> if( receiverRxB.fetch( messageRxB, qpid::sys::Duration( 
> timeout ) ) ) 
> >> {
> >>         MapView contentRxB( messageRxB );
> >>         std::cout << "  remote received: " << contentRxB << 
> >> std::endl;
> >>         sessionRxB.acknowledge();
> >> }
> >> else
> >>         std::cout << "  remote timeout " << std::endl;
> >>
> >> 
> ---------------------------------------------------------------------
> >> Apache Qpid - AMQP Messaging Implementation
> >> Project:      http://qpid.apache.org
> >> Use/Interact: mailto:[email protected]
> >>
> >>
> >
> >
> > 
> ---------------------------------------------------------------------
> > Apache Qpid - AMQP Messaging Implementation
> > Project:      http://qpid.apache.org
> > Use/Interact: mailto:[email protected]
> >
> >
> 
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:[email protected]
> 
> 


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to