On Tue, May 24, 2011 at 10:21:37AM -0400, Ted Ross wrote: > On 05/24/2011 08:59 AM, Angus Salkeld wrote: > >Hi > > > >I am writing an application that needs to talk to a number of agents > >(say 20+). > > > >This Console needs to both receive events and make method calls to the > >agent (I am doing it using the async API). > > > >I had 2 ideas on how to do this: > > > >1) create a ConsoleSession per agent and use setAgentFilter() or > > subscribe() to restrict the events to the ones I want. > > > > - What is the overhead of creating ConsoleSessions? > > - Should I use setAgentFilter() or subscribe()? - why would I use > > one over the other? > > - What is the format of the filter? the same as query() - s-expression > > - What can I filter on? class/properties/... > > > >2) create only one ConsoleSession and somehow figure out where the > > events have come from. > > > > - Is there an efficient way of determining where an event has come > > from? (I don't have control of the contents of the event) > > - what is the scope of the corralation-id (returned from callMethodAsync) > > session or agent? > > > > > >Would you recommend one way over the other - any other suggestions? > > I would recommend option 2 (single ConsoleSession). The > ConsoleEvent class has a getAgent method that returns a reference to > the agent that raised the event. > > Use ConsoleSession::setAgentFilter to narrow the scope of visible > agents to the set that you are interested in. Use > ConsoleEvent::getAgent to identify the agent that is associated with > an async event. > > The agent filter is an s-expression string. The identifying fields > for an agent are "_vendor", "_product", and "_instance". You can > also query on any arbitrary agent-defined attribute that is set by > the agent in the setAttribute method. To filter all agents but > those of a particular vendor/product pair, use "[and, [eq, _vendor, > [quote, 'vendor-name.com']], [eq, _product, [quote, > 'product-name']]]". > > The scope of the correlation-id is per-Agent which means that you > will need the combination of (agent X id) to properly correlate the > event. This seems sub-optimal to me and I will raise a Jira > requesting that the scope be made per-ConsoleSession.
Thanks for the help Ted, that all makes sense. -Angus > > -Ted > > >Thanks > >Angus Salkeld > > > > > >--------------------------------------------------------------------- > >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]
