You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Fraser Adams (JIRA)" <ji...@apache.org> on 2013/01/20 16:44:13 UTC

[jira] [Commented] (QPID-3675) New Feature Announce - Java QMF2 API Implementation.

    [ 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-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org