qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Qpid > QMFv2 Architecture
Date Thu, 19 Nov 2009 18:07:00 GMT
<html>
<head>
    <base href="http://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/1519/1/1/_/styles/combined.css?spaceKey=qpid&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background-color: white" bgcolor="white">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
     <h2><a href="http://cwiki.apache.org/confluence/display/qpid/QMFv2+Architecture">QMFv2
Architecture</a></h2>
     <h4>Page <b>edited</b> by             <a href="http://cwiki.apache.org/confluence/display/~tross">Ted
Ross</a>
    </h4>
     
          <br/>
     <div class="notificationGreySide">
         <h1><a name="QMFv2Architecture-Introduction"></a>Introduction</h1>

<p>QMF (Qpid Management Framework) is a set of APIs, in multiple programming languages,
that provide an abstraction for object-oriented and service-oriented remote management.  It
is layered on top of AMQP messaging and implemented using the Apache Qpid messaging APIs.</p>

<h1><a name="QMFv2Architecture-ArchitecturalComponentsandOperations"></a>Architectural
Components and Operations</h1>

<p>There are two central components in the architecture of QMF:  The <b>Agent</b>
and the <b>Console</b>.  An agent is a software component that is managed via
QMF and a console is a component that manages agents.  The distinction will become clearer
as we discuss operations.</p>

<p>A better way to describe <b>console</b> and <b>agent</b>
is to call them <em>roles</em>.  For example, a software program may perform the
<em>role</em> of <em>QMF Agent</em>, and therefore become manageable
via QMF.  Another program may act in the <em>role</em> of <em>QMF Console</em>
and manage some number of agents.  It is also possible for a software program to act in both
roles simultaneously and can do so using a single connection into the AMQP messaging infrastructure.</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>        +-----------+    +-----------+
        |  Console  |    |  Console  |
        +-----+-----+    +-----+-----+
              |                |
              |                |
     +--------+----------------+-------------------------+
     |                                                   |
     |             Standard AMQP Messaging               |
     |                                                   |
     +----------+--------------+--------------+----------+
                |              |              |
                |              |              |
           +----+----+    +----+----+    +----+----+
           |  Agent  |    |  Agent  |    |  Agent  |
           +---------+    +---------+    +---------+
</pre>
</div></div>

<p>In QMF, there may be any number of agents and any number of consoles.  Of course,
if there are no agents, it won't be a very interesting network.  Agents and consoles may appear
and disappear dynamically.</p>

<h2><a name="QMFv2Architecture-Operations"></a>Operations</h2>

<p>QMF operations are defined in terms of the console and agent roles.  This section
will introduce the operations at a fairly high level.  For full details on how the operations
operate, refer to the API specification for the programming language you are interested in.</p>

<h3><a name="QMFv2Architecture-AgentLocate"></a>Agent Locate</h3>

<p>After a console first connects itself to an AMQP messaging broker, the first thing
it must do is identify one or more agents with which to interact.  This is done in one of
two ways, depending on the purpose of the console application.</p>

<p>The console may attempt to locate a single specific agent by name (i.e. The HP printer
on the second floor).  In this case, the console communicates directly with the agent to see
if it is present in the network (using a direct exchange and the agent's unique name).</p>

<p>Alternatively, the console may wish to interact with a set of agents, possibly all
of them.  In this case, the console establishes a set of criteria in the form of a query (i.e.
"all printers where vendor == 'HP'") and builds a list of available agents.  In this case,
the console sends a multicast query (using a topic exchange) and collects responses from matching
agents.  Furthermore, if a new agent comes on line that meets the criteria, the console will
learn about the new agent.</p>

<h3><a name="QMFv2Architecture-Query"></a>Query</h3>

<p>A <b>query</b> is initiated by a console and answered by one or more
agents.  A query requests data from an agent and supplies selection criteria for the data.
 Once each agent sends the requested data to the console, the query operation is complete.</p>

<h3><a name="QMFv2Architecture-SubscriptionQuery"></a>Subscription Query</h3>

<p>A <b>subscription query</b> is similar to a normal query except that
after the requested data is sent by an agent, the query remains open and subsequent changes
to the requested data are sent to the address supplied by the console.</p>

<p>A subscription query is kept open by the agent and is closed in one of two situations.
 Either the console explicitly closes the subscription query or it times out after a time
interval.  The console may periodically refresh an exiting subscription query to keep it from
timing out.  This allows for subscription queries to be cleaned up in case the requesting
console goes away without shutting down the subscription.</p>

<h3><a name="QMFv2Architecture-SchemaQuery"></a>Schema Query</h3>

<h3><a name="QMFv2Architecture-MethodInvocation"></a>Method Invocation</h3>

<h3><a name="QMFv2Architecture-EventDistribution"></a>Event Distribution</h3>

<h1><a name="QMFv2Architecture-TheQMFDataModel"></a>The QMF Data Model</h1>

     </div>
     <div id="commentsSection" class="wiki-content pageSection">
       <div style="float: right;">
            <a href="http://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
       </div>

       <a href="http://cwiki.apache.org/confluence/display/qpid/QMFv2+Architecture">View
Online</a>
       |
       <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=5965508&revisedVersion=3&originalVersion=2">View
Change</a>
              |
       <a href="http://cwiki.apache.org/confluence/display/qpid/QMFv2+Architecture?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

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


Mime
View raw message