Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Note
titleArchive Content

Please note this page is present for reference only. QMan has been removed and is no longer a released component.

QMan : Qpid Management Bridge

QMan is a management bridge for Qpid. It allows external clients to manage and monitor one or more Qpid brokers.

Please note: All WS-DM related concerns have to be considered part of M5 release.

QMan exposes the broker management interfaces using Java Management Extensions (JMX) and / or OASIS Web Services Distributed Management (WSDM). While the first one is supposed to be used by java based clients only the latter is an interoperable protocol that enables management clients to access and receive notifications of management-enabled resources using Web Services.

QMan can be easily integrated in your preexisting system in different ways :

  • As a standalone application : in this case it runs as a server. More specifically it enables communication via RMI (for JMX) or via HTTP (for WS-DM); Note that when the WS-DM adapter is used the JMX interface is not exposed;
  • As a deployable unit : it is also available as a standard Java web application (war); This is useful when there's a preexisting Application Server in your environment and you don't want start another additional server in order to run QMan.

User Documentation

With "User Documentation" we mean all information that you need to know in order to use QMan from a user perspective. Those information include :

Section

Description

Get me up and running

How to install & start QMan.

QMan Administration Console

QMan (WS-DM version only) Administration Console.

JMX Interface Specification

Describes each JMX interface exposed by QMan.

WS-DM Interface Specification

Describes each WS-DM interface exposed by QMan.

QMan Messages Catalogue

Informational / Debug / Error / Warning messages catalogue.

Technical Documentation

If you are interested in technical details about QMan and related technologies this is a good starting point. In general this section provides information about QMan design, interfaces, patterns and so on...

Section

Description

System overview

A short introduction about QMan deployment context.

Components view

Describes QMan components, their interactions and responsibilities.

Introduction

QMan is a Management bridge that exposes one (or several) Qpid broker domain model as MBeans that are accessible through the Java Management Extensions (JMX).

How to run QMan

Prerequisites

QMan is a standalone application that is packaged as qpid-management-client-incubating-M3.jar. To run QMan you need to add the following jars in your CLASSPATH:

  • log4j-1.2.12.jar
  • slf4j-api-1.4.0.jar
  • slf4j-log4j12-1.4.0.jar
  • commons-pool-1.4.jar
  • commons-codec-1.3.jar
  • commons-lang-2.2.jar
  • commons-collections-3.2.jar
  • commons-configuration-1.2.jar
  • qpid-client-incubating-Mx.jar (were x is the current qpid version)
  • qpid-common-incubating-Mx.jar (were x is the current qpid version)

alternatively you can run the following script (that add all the qpid jars to the CLASSPATH):
> CLASSPATH=`find <lib-root> -name '*.jar' | tr '\n' ":"`
Where <lib-root> is the directory containing the qpid jars (when qpid is built from source <lib-root> is equal to qpid/java/build/lib)

QMan can be connected at run time against any broker however it must first connect to a running broker. As default QMan will try to connect to a broker running on localhost port 5672.

The file config.xml that must be located in a directory referenced by the CLASSPATH can be used for configuring QMAN. The default content of this file is:

Code Block

<configuration>
	<type-mappings>
		<mapping>
			<code>1</code>
			<class-name>org.apache.qpid.management.domain.model.type.Uint8</class-name>
			<validator-class-name>org.apache.qpid.management.domain.model.QpidProperty$NumberValidator</validator-class-name>
		</mapping>
		<mapping>
			<code>2</code>
			<class-name>org.apache.qpid.management.domain.model.type.Uint16</class-name>
			<validator-class-name>org.apache.qpid.management.domain.model.QpidProperty$NumberValidator</validator-class-name>
		</mapping>
		<mapping>
			<code>3</code>
			<class-name>org.apache.qpid.management.domain.model.type.Uint32</class-name>
			<validator-class-name>org.apache.qpid.management.domain.model.QpidProperty$NumberValidator</validator-class-name>
		</mapping>
		<mapping>
			<code>4</code>
			<class-name>org.apache.qpid.management.domain.model.type.Uint64</class-name>
			<validator-class-name>org.apache.qpid.management.domain.model.QpidProperty$NumberValidator</validator-class-name>
		</mapping>
		<mapping>
			<code>6</code>
			<class-name>org.apache.qpid.management.domain.model.type.Str8</class-name>
			<validator-class-name>org.apache.qpid.management.domain.model.QpidProperty$StringValidator</validator-class-name>
		</mapping>
		<mapping>
			<code>7</code>
			<class-name>org.apache.qpid.management.domain.model.type.Str16</class-name>
			<validator-class-name>org.apache.qpid.management.domain.model.QpidProperty$StringValidator</validator-class-name>
		</mapping>
		<mapping>
			<code>8</code>
			<class-name>org.apache.qpid.management.domain.model.type.AbsTime</class-name>
		</mapping>
		<mapping>
			<code>9</code>
			<class-name>org.apache.qpid.management.domain.model.type.DeltaTime</class-name>
		</mapping>
		<mapping>
			<code>10</code>
			<class-name>org.apache.qpid.management.domain.model.type.ObjectReference</class-name>
		</mapping>
		<mapping>
			<code>11</code>
			<class-name>org.apache.qpid.management.domain.model.type.Boolean</class-name>
		</mapping>
		<mapping>
			<code>14</code>
			<class-name>org.apache.qpid.management.domain.model.type.Uuid</class-name>
		</mapping>
		<mapping>
			<code>15</code>
			<class-name>org.apache.qpid.management.domain.model.type.Map</class-name>
		</mapping>
	</type-mappings>
	<access-mode-mappings>
		<mapping>
			<code>1</code>
			<value>RC</value>
		</mapping>
		<mapping>
			<code>2</code>
			<value>RW</value>
		</mapping>
		<mapping>
			<code>3</code>
			<value>RO</value>
		</mapping>
	</access-mode-mappings>
	<brokers>
		<broker>
			<host>localhost</host>
			<port>5672</port>
			<virtual-host>test</virtual-host>
			<user>guest</user>
			<password>guest</password>
			<max-pool-capacity>4</max-pool-capacity>
			<initial-pool-capacity>0</initial-pool-capacity>
			<max-wait-timeout>-1</max-wait-timeout>
		</broker>
	</brokers>
</configuration>

Several brokers can be added so that QMan will try to connect to those broker at starting time.

Running QMan

To run QMan in a console run the following command:

Code Block

java org.apache.qpid.management.domain.services.QMan

Messages similar to those should be displayed:

Code Block

2008-10-29 14:45:17,686 INFO  [org.apache.qpid.management.domain.services.QMan] <QMAN-000001> : Starting Q-Man...
2008-10-29 14:45:17,687 INFO  [org.apache.qpid.management.domain.services.QMan] <QMAN-000002> : Reading Q-Man configuration...
2008-10-29 14:45:17,747 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 1 associated to org.apache.qpid.management.domain.model.type.Uint8 (wraps java.lang.Short) (validator class is org.apache.qpid.management.domain.model.QpidProperty$NumberValidator)
2008-10-29 14:45:17,748 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 2 associated to org.apache.qpid.management.domain.model.type.Uint16 (wraps java.lang.Integer) (validator class is org.apache.qpid.management.domain.model.QpidProperty$NumberValidator)
2008-10-29 14:45:17,750 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 3 associated to org.apache.qpid.management.domain.model.type.Uint32 (wraps java.lang.Long) (validator class is org.apache.qpid.management.domain.model.QpidProperty$NumberValidator)
2008-10-29 14:45:17,752 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 4 associated to org.apache.qpid.management.domain.model.type.Uint64 (wraps java.lang.Long) (validator class is org.apache.qpid.management.domain.model.QpidProperty$NumberValidator)
2008-10-29 14:45:17,753 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 6 associated to org.apache.qpid.management.domain.model.type.Str8 (wraps java.lang.String) (validator class is org.apache.qpid.management.domain.model.QpidProperty$StringValidator)
2008-10-29 14:45:17,754 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 7 associated to org.apache.qpid.management.domain.model.type.Str16 (wraps java.lang.String) (validator class is org.apache.qpid.management.domain.model.QpidProperty$StringValidator)
2008-10-29 14:45:17,755 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 8 associated to org.apache.qpid.management.domain.model.type.AbsTime (wraps java.lang.Long) (validator class is null)
2008-10-29 14:45:17,756 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 9 associated to org.apache.qpid.management.domain.model.type.DeltaTime (wraps java.lang.Long) (validator class is null)
2008-10-29 14:45:17,764 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 10 associated to org.apache.qpid.management.domain.model.type.ObjectReference (wraps [B) (validator class is null)
2008-10-29 14:45:17,765 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 11 associated to org.apache.qpid.management.domain.model.type.Boolean (wraps java.lang.Boolean) (validator class is null)
2008-10-29 14:45:17,766 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 14 associated to org.apache.qpid.management.domain.model.type.Uuid (wraps java.util.UUID) (validator class is null)
2008-10-29 14:45:17,769 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000005> : Type mapping : code = 15 associated to org.apache.qpid.management.domain.model.type.Map (wraps java.util.Map) (validator class is null)
2008-10-29 14:45:17,780 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000006> : Access Mode mapping : code = 1 associated to Read-Create
2008-10-29 14:45:17,781 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000006> : Access Mode mapping : code = 2 associated to Read-Write
2008-10-29 14:45:17,781 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000006> : Access Mode mapping : code = 3 associated to Read-Only
2008-10-29 14:45:17,814 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000009> : Broker configuration 14cc5c2b-f366-4dd5-8128-846b41565a2d: localhost:5672@test
2008-10-29 14:45:17,817 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000007> : Management Queue Message Handler Mapping : opcode = i associated with org.apache.qpid.management.domain.handler.impl.InstrumentationMessageHandler
2008-10-29 14:45:17,817 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000007> : Management Queue Message Handler Mapping : opcode = c associated with org.apache.qpid.management.domain.handler.impl.ConfigurationMessageHandler
2008-10-29 14:45:17,818 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000007> : Management Queue Message Handler Mapping : opcode = e associated with org.apache.qpid.management.domain.handler.impl.EventContentMessageHandler
2008-10-29 14:45:17,818 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000008> : Method-Reply Queue Message Handler Mapping : opcode = m associated with org.apache.qpid.management.domain.handler.impl.MethodResponseMessageHandler
2008-10-29 14:45:17,819 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000008> : Method-Reply Queue Message Handler Mapping : opcode = s associated with org.apache.qpid.management.domain.handler.impl.SchemaResponseMessageHandler
2008-10-29 14:45:17,820 INFO  [org.apache.qpid.management.configuration.Configuration] <QMAN-000008> : Method-Reply Queue Message Handler Mapping : opcode = h associated with org.apache.qpid.management.domain.handler.impl.HeartBeatIndicationMessageHandler
2008-10-29 14:45:17,820 INFO  [org.apache.qpid.management.domain.services.QMan] <QMAN-000003> : Creating management client(s)...
2008-10-29 14:45:18,152 INFO  [org.apache.qpid.management.domain.services.ManagementClient] <QMAN-000016> : Method-reply queue with name reply.2e89e401-5823-4f64-a730-076439503fc7 has been successfully declared and bound on broker 14cc5c2b-f366-4dd5-8128-846b41565a2d.
2008-10-29 14:45:18,152 INFO  [org.apache.qpid.management.domain.services.ManagementClient] <QMAN-000015> : Management queue with name management.2e89e401-5823-4f64-a730-076439503fc7 has been successfully declared and bound on broker 14cc5c2b-f366-4dd5-8128-846b41565a2d.
2008-10-29 14:45:18,159 INFO  [org.apache.qpid.management.domain.services.ManagementClient] <QMAN-000014> : Management queue consumer has been successfully installed and bound on broker 14cc5c2b-f366-4dd5-8128-846b41565a2d.
2008-10-29 14:45:18,162 INFO  [org.apache.qpid.management.domain.services.ManagementClient] <QMAN-000013> : Method-reply queue consumer has been successfully installed and bound on broker 14cc5c2b-f366-4dd5-8128-846b41565a2d.
2008-10-29 14:45:18,217 INFO  [org.apache.qpid.management.domain.services.QMan] <QMAN-000004> : Management client for broker 14cc5c2b-f366-4dd5-8128-846b41565a2d successfully connected.
2008-10-29 14:45:18,217 INFO  [org.apache.qpid.management.domain.services.QMan] <QMAN-000019> : Q-Man open for e-business.
Type "q" to quit.

Stopping QMan

Type "q" In the console from which QMan has been started.

Browsing Manageable Beams

The jconsole tool (JMX-compliant graphical tool for monitoring a Java virtual machine) can be used for monitoring and QMan Mbeans. for more information see http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html

The jconsole executable can be found in JDK_HOME/bin, where JDK_HOME is the directory in which the JDK software is installed. If this directory is in your system path, you can start JConsole by simply typing jconsole in a console. Otherwise, you have to type the full path to the executable file.

As demonstrated on the following screen shot, once jconsole is running select the MBeans tab and select the Q-MAN set of MBeans.

...