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.

-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]

Reply via email to