[ 
https://issues.apache.org/jira/browse/QPID-3675?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13558284#comment-13558284
 ] 

Fraser Adams commented on QPID-3675:
------------------------------------

I've just made a fairly major uplift to the QMF2 code base.

There are a few bug fixes to the core QMF2 implementation, the most significant 
being that the ManagementAgent can return multiple partial responses if there 
are large numbers of objects the QMF2 getObjects() call now caters for that.

However the most significant uplift is the addition of:
1) A QMF2 REST API Implementation.
2) A JavaScript QMF2 Implementation that uses the REST API as a back end.
3) A fully featured Qpid Management Web GUI that does pretty much anything 
you'd need to do to
monitor and manage one or more brokers (it supports connecting to different 
brokers)

The Web GUI works on multiple browsers and is even functional on IE6, it morphs 
quite well onto mobile devices and uses GPU accelerated animations to give a 
fairly "native app" feel on iPad/iPhone.

The REST API Server was deliberately designed to have almost no dependencies. 
It uses the com.sun.net.httpserver.HttpServer embedded Web Server that is part 
of JDK 6 (at least on Sun and OpenJDK) so just requires the Qpid jars on the 
classpath. It has been designed to make it fairly easy to add a Servlet 
implementation, but that's not been done yet as the initial goal was to make it 
fairly dependency free and embedded.


To get up and running all that should be required is the Qpid jars on the 
classpath and running ant in the root qmf2 directory.


Once compiled cd to bin and do ./QpidRestAPI.sh by default it tries to bind to 
the 
wildcard address on the host it's running on and port 8080 though this stuff is 
configurable.

Point a browser at <host>:8080 and you should be in business. By default it 
will create a default QMF connection to a broker running on the same host as 
the QpidRestAPI on port 5672 but the default broker connection is configurable 
too.

Once running you can add QMF2 Console Connections to other brokers and connect 
to them via the Web GUI.

The main limitation at the moment is the authentication. It uses basic 
authentication so username/password are sent clear. I'll look to do something 
better IDC but I wanted to get it released as it represents around a years 
worth of work over weekends.

It's all released under the Apache Licence and the GUI uses a UI library that I 
ended up writing as part of this project which should be reusable.

I hope that this is useful to people, as I say it's taken an awful lot of 
effort to put together so I'd really appreciate feedback.

I'll attach the updated zip and some screenshots.





                
> New Feature Announce - Java QMF2 API Implementation.
> ----------------------------------------------------
>
>                 Key: QPID-3675
>                 URL: https://issues.apache.org/jira/browse/QPID-3675
>             Project: Qpid
>          Issue Type: New Feature
>          Components: Qpid Managment Framework
>    Affects Versions: 0.12
>         Environment: Java QMF2
>            Reporter: Fraser Adams
>            Assignee: Ted Ross
>              Labels: features
>         Attachments: ipod bindings.png, qmf2.tar.gz, qmf2.tar.gz
>
>
> This is the first release of a QMF2 API Implementation for Java.
> Features:
> * Full Implementation of QMF2 Console, Agent and AgentExternal.
> * Supports QMF2 Query Subscriptions on Agent/AgentExternal implementations.
> * Emulates QMF2 Query Subscriptions on the Console side for the broker 
> ManagementAgent by
>   intercepting _data indications and filtering against QmfQuery. This is 
> necessary as the
>   ManagemetAgent doesn't yet support QMF2 style Query Subscriptions.
> * Console supports Agent discovery via findAgent() method, which can support 
> partial matches,
>   which is useful because the full Agent name has a UUID representing the 
> "instance" so it's hard
>   to know the full name.
> * QmfQuery supports regex matching.
> * Supports QMF2 WorkItem Event model and in addition supports an alternative 
> QmfEventListener 
>   Event model, which is rather more like the JMS MessageListener model.
> Example Tools Provided:
> * ConnectionAudit: Audits connections to one or more Qpid message brokers 
> against a whitelist.
> * ConnectionLogger: A QMF2 class used to provide information about 
> connections made to a broker.
> * QpidConfig: QpidConfig is a fairly "literal" Java port of the python 
> qpid-config tool. Uses pure 
>   QMF2 for adding/deleting queues, exchanges & bindings this provides useful 
> illustration of how 
>   to do these things using the ManagementAgent method calls.
> * QpidCtrl: A tool to allow QMF2 methods to be invoked from the command line.
> * QpidPrintEvents: Collect and print events from one or more Qpid message 
> brokers.
> * QpidQueueStats: Collect and print queue statistics. This is a rewrite of 
> the Python version and 
>   illustrates the use of QuerySubscriptions (via the Console side 
> emulation)to subscribe to 
>   objects on the ManagementAgent.
> * QueueFuse: QueueFuse provides protection to message producers from 
> consumers who can't consume 
>   messages fast enough. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to