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]

Reply via email to