[CONF] Apache Qpid: queue state replication (page created)
listeners (e.g. for replication). If set to 2, events will be generated for enqueues and dequeues From an application, the arguments field of the queue-declare AMQP command is used to convey this information. An entry should be added to the map with key 'qpid.queue_event_generation' and an integer value of 1 (to replicate only enqueue events) or 2 (to replicate both enqueue and dequeue events). Applications written using the c++ client API may fine the qpid::client::QueueOptions class convenient. This has a enableQueueEvents() method on it that can be used to set the option (the instance of QueueOptions is then passed as the value of the arguments field in the queue-declare command. The boolean option to that method should be set to true if only enequeue events should be replicated; by default it is false meaning that both enqueues and dequeues will be replicated. E.g. QueueOptions options; options.enableQueueEvents(false); session.queueDeclare(arg::queue="my-queue", arg::arguments=options); Example Lets assume we will run the primary broker on host1 and the backup on host2, have installed qpidd on both and have the replicating_listener and replication_exchange plugins in qpidd's module directory1. On host1 we start the source broker and specifcy that a queue called 'replication' should be used for storing the events until consumed by the backup. We also request that this queue be created (as transient) if not already specified: qpidd --replication-queue replication-queue --create-replication-queue true --log-enable info+ On host2 we start up the backup broker ensuring that the replication exchange module is loaded: qpidd We can then create the instance of that replication exchange that we will use to process the events: qpid-config -a host2 add exchange replication replication-exchange If this fails with the message "Exchange type not implemented: replication", it means the replication exchange module was not loaded. Check that the module is installed on your system and if necessary provide the full path to the library. We then connect the replication queue on the source broker with the replication exchange on the backup broker using the qpid-route command: qpid-route --ack 50 queue add host2 host1 replication-exchange replication-queue The example above configures the bridge to acknowledge messages in batches of 50. Now create two queues (on both source and backup brokers), one replicating both enqueues and dequeues (queue-a) and the other replicating only dequeues (queue-b): qpid-config -a host1 add queue queue-a --generate-queue-events 2 qpid-config -a host1 add queue queue-b --generate-queue-events 1 qpid-config -a host2 add queue queue-a qpid-config -a host2 add queue queue-b We are now ready to use the queues and see the replication. Any message enqueued on queue-a will be replicated to the backup broker. When the message is acknowledged by a client connected to host1 (and thus dequeued), that message will be removed from the copy of the queue on host2. The state of queue-a on host2 will thus mirror that of the equivalent queue on host1, albeit with a small lag. (Note however that we must not have clients connected to host2 publish to- or consume from- queue-a or the state will fail to replicate correctly due to conflicts). Any message enqueued on queue-b on host1 will also be enqueued on the equivalent queue on host2. However the acknowledgement and consequent dequeuing of messages from queue-b on host1 will have no effect on the state of queue-b on host2. 1 If not the paths in the above may need to be modified. E.g. if using modules built from a qpid svn checkout, the following would be added to the command line used to start qpidd on host1: --load-module /src/.libs/replicating_listener.so and the following for the equivalent command line on host2: --load-module /src/.libs/replication_exchange.so Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Cheat Sheet for configuring Queue Options (page edited)
Page Edited : qpid : Cheat Sheet for configuring Queue Options Cheat Sheet for configuring Queue Options has been edited by Gordon Sim (Jan 26, 2009). (View changes) Content: Configuring Queue Options The C++ Broker M4 or later supports the following additional Queue constraints. Applying Queue Sizing Constraints Changing the Queue ordering Behaviors Setting additional behaviors Other Clients Applying Queue Sizing Constraints This allows to specify how to size a queue and what to do when the sizing constraints have been reached. The queue size can be limited by the number messages (message depth) or byte depth on the queue. Once the Queue meets/ exceeds these constraints the follow policies can be applied REJECT - Reject the published message FLOW_TO_DISK - Flow the messages to disk, to preserve memory RING - start overwriting messages in a ring based on sizing. If head meets tail, advance head RING_STRICT - start overwriting messages in a ring based on sizing. If head meets tail, AND the consumer has the tail message acquired it will reject Examples: Create a queue an auto delete queue that will support 100 000 bytes, and then REJECT #include "qpid/client/QueueOptions.h" QueueOptions qo; qo.setSizePolicy(REJECT,10,0); session.queueDeclare(arg::queue=queue, arg::autoDelete=true, arg::arguments=qo); Create a queue that will support 1000 messages into a RING buffer #include "qpid/client/QueueOptions.h" QueueOptions qo; qo.setSizePolicy(RING,0,1000); session.queueDeclare(arg::queue=queue, arg::arguments=qo); Changing the Queue ordering Behaviors (FIFO/LVQ) The default ordering in a queue in Qpid is FIFO. However additional ordering semantics can be used namely LVQ (Last Value Queue). Last Value Queue is define as follows. If I publish symbols RHT, IBM, JAVA, MSFT, and then publish RHT before the consumer is able to consume RHT, that message will be over written in the queue and the consumer will receive the last published value for RHT. Example: #include "qpid/client/QueueOptions.h" QueueOptions qo; qo.setOrdering(LVQ); session.queueDeclare(arg::queue=queue, arg::arguments=qo); . string key; qo.getLVQKey(key); for each message, set the into application headers before transfer message.getHeaders().setString(key,"RHT"); Notes: Messages that are dequeued and the re-queued will have the following exceptions. a.) if a new message has been queued with the same key, the re-queue from the consumer, will combine these two messages. b.) If an update happens for a message of the same key, after the re-queue, it will not update the re-queued message. This is done to protect a client from being able to adversely manipulate the queue. Acquire: When a message is acquired from the queue, no matter it's position, it will behave the same as a dequeue LVQ does not support durable messages. If the queue or messages are declared durable on an LVQ, the durability will be ignored. A fully worked LVQ Example can be found here Setting additional behaviors Persist Last Node This option is used in conjunction with clustering. It allows for a queue configured with this option to persist transient messages if the cluster fails down to the last node. If additional nodes in the cluster are restored it will stop persisting transient messages. Note if a cluster is started with only one active node, this mode will not be triggered. It is only triggered the first time the cluster fails down to 1 node. The queue MUST be configured durable Example: #include "qpid/client/QueueOptions.h" QueueOptions qo; qo.clearPersistLastNode(); session.queueDeclare(arg::queue=queue, arg::durable=true, arg::arguments=qo); Queue event generation This option is used to determine whether enqueue/dequeue events representing changes made to queue state are generated. These events can then be processed by plugins such as that used for queue state replication. Example: #include "qpid/client/QueueOptions.h" QueueOptions options; options.enableQueueEvents(false); session.queueDeclare(arg::queue="my-queue", arg::arguments=options); The boolean option indicates whether only enqueue events should be generated. The key set by this is 'qpid.queue_event_generation' and the value is and integer value of 1 (to replicate only enqueue events) or 2 (to replicate both enqueue and dequeue events). Other Clients Note that these options can be set from any client. QueueOptions just correctly formats the arguments passed to the QueueDeclare() method. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Gordon Sim (Jan 26, 2009). (View changes) Content: How to documentation qpidd - C++ Broker topics Running & Administration and getting started for the C++ Broker AMQP 0-10 Cheat Sheet for configuring Queue Options Cheat Sheet for configuring Exchange Options Using Broker Federation SSL how to Understanding LVQ queue state replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides C++ Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge QMF Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Gordon Sim (Jan 26, 2009). (View changes) Content: How to documentation qpidd - C++ Broker topics Running & Administration and getting started for the C++ Broker AMQP 0-10 Cheat Sheet for configuring Queue Options Cheat Sheet for configuring Exchange Options Using Broker Federation SSL how to Understanding LVQ Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides C++ Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge QMF Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (page created)
Page Created : qpid : Java Broker Design - Flow to Disk Java Broker Design - Flow to Disk has been created by Martin Ritchie (Jan 26, 2009). Content: Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Cheat Sheet for configuring Queue Options (page edited)
Page Edited : qpid : Cheat Sheet for configuring Queue Options Cheat Sheet for configuring Queue Options has been edited by Carl Trieloff (Jan 26, 2009). (View changes) Content: Configuring Queue Options The C++ Broker M4 or later supports the following additional Queue constraints. Configuring Queue Options Applying Queue Sizing Constraints Changing the Queue ordering Behaviors (FIFO/LVQ) Setting additional behaviors Persist Last Node Queue event generation Other Clients Applying Queue Sizing Constraints This allows to specify how to size a queue and what to do when the sizing constraints have been reached. The queue size can be limited by the number messages (message depth) or byte depth on the queue. Once the Queue meets/ exceeds these constraints the follow policies can be applied REJECT - Reject the published message FLOW_TO_DISK - Flow the messages to disk, to preserve memory RING - start overwriting messages in a ring based on sizing. If head meets tail, advance head RING_STRICT - start overwriting messages in a ring based on sizing. If head meets tail, AND the consumer has the tail message acquired it will reject Examples: Create a queue an auto delete queue that will support 100 000 bytes, and then REJECT #include "qpid/client/QueueOptions.h" QueueOptions qo; qo.setSizePolicy(REJECT,10,0); session.queueDeclare(arg::queue=queue, arg::autoDelete=true, arg::arguments=qo); Create a queue that will support 1000 messages into a RING buffer #include "qpid/client/QueueOptions.h" QueueOptions qo; qo.setSizePolicy(RING,0,1000); session.queueDeclare(arg::queue=queue, arg::arguments=qo); Changing the Queue ordering Behaviors (FIFO/LVQ) The default ordering in a queue in Qpid is FIFO. However additional ordering semantics can be used namely LVQ (Last Value Queue). Last Value Queue is define as follows. If I publish symbols RHT, IBM, JAVA, MSFT, and then publish RHT before the consumer is able to consume RHT, that message will be over written in the queue and the consumer will receive the last published value for RHT. Example: #include "qpid/client/QueueOptions.h" QueueOptions qo; qo.setOrdering(LVQ); session.queueDeclare(arg::queue=queue, arg::arguments=qo); . string key; qo.getLVQKey(key); for each message, set the into application headers before transfer message.getHeaders().setString(key,"RHT"); Notes: Messages that are dequeued and the re-queued will have the following exceptions. a.) if a new message has been queued with the same key, the re-queue from the consumer, will combine these two messages. b.) If an update happens for a message of the same key, after the re-queue, it will not update the re-queued message. This is done to protect a client from being able to adversely manipulate the queue. Acquire: When a message is acquired from the queue, no matter it's position, it will behave the same as a dequeue LVQ does not support durable messages. If the queue or messages are declared durable on an LVQ, the durability will be ignored. A fully worked LVQ Example can be found here Setting additional behaviors Persist Last Node This option is used in conjunction with clustering. It allows for a queue configured with this option to persist transient messages if the cluster fails down to the last node. If additional nodes in the cluster are restored it will stop persisting transient messages. Note if a cluster is started with only one active node, this mode will not be triggered. It is only triggered the first time the cluster fails down to 1 node. The queue MUST be configured durable Example: #include "qpid/client/QueueOptions.h" QueueOptions qo; qo.clearPersistLastNode(); session.queueDeclare(arg::queue=queue, arg::durable=true, arg::arguments=qo); Queue event generation This option is used to determine whether enqueue/dequeue events representing changes made to queue state are generated. These events can then be processed by plugins such as that used for queue state replication. Example: #include "qpid/client/QueueOptions.h" QueueOptions options; options.enableQueueEvents(false); session.queueDeclare(arg::queue="my-queue", arg::arguments=options); The boolean option indicates whether only enqueue events should be generated. The key set by this is 'qpid.queue_event_generation' and the value is and integer value of 1 (to replicate only enqueue events) or 2 (to replicate both enqueue and dequeue events). Other Clients Note that these options can be set from any client. QueueOptions just correctly formats the arguments passed to the QueueDeclare() method.
[CONF] Apache Qpid: Getting Started (page edited)
Page Edited : qpid : Getting Started Getting Started has been edited by Jonathan Robie (Jan 26, 2009). (View changes) Content: Download the software Download Start a broker Instructions for running an AMQP 0-9 Java broker Instructions for Running an AMQP 0-10 C++ broker Management tools for the AMQP 0-10 broker Run an example program from the downloaded software, or from the following URLs C++ Examples Java JMS Examples Python Examples Ruby Examples .NET Examples Read the API Guides and Documentation C++ API Guide Documentation Get your Questions Answered Read the FAQ Ask a question on the user list users-subscr...@qpid.apache.org Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (page edited)
ueues. Augment Virtualhost Housekeeping thread to sweep queues that are over their inMemorySize limit to flow() data. This could also be used to prefetch data into the queue as required. Future Phases Enable the flow to disk of the queue structure. This will remove the final constraints on memory and only limit the broker to the amount of disk space available. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Getting Started (page edited)
Page Edited : qpid : Getting Started Getting Started has been edited by Jonathan Robie (Jan 26, 2009). (View changes) Content: To get started with Apache Qpid, follow the steps below. Download the software Download Start a broker Instructions for running an AMQP 0-9 Java broker Instructions for Running an AMQP 0-10 C++ broker Management tools for the AMQP 0-10 broker Run an example program from the downloaded software, or from the following URLs (these are svn URLs, which you can use to browse the examples or check them out): C++ Examples Java JMS Examples Python Examples Ruby Examples .NET Examples Read the API Guides and Documentation C++ API Guide Documentation Get your Questions Answered Read the FAQ Ask a question on the user list users-subscr...@qpid.apache.org Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Jonathan Robie (Jan 26, 2009). (View changes) Content: How to documentation qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides C++ Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge QMF Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Jonathan Robie (Jan 26, 2009). (View changes) Content: How to documentation qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides C++ Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: User Guide (page edited)
Page Edited : qpid : User Guide User Guide has been edited by Andrea Gazzarini (Jan 27, 2009). (View changes) Content: User guide QMan messages Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMan User Guide (page edited)
Page Edited : qpid : QMan User Guide QMan User Guide has been edited by Andrea Gazzarini (Jan 27, 2009). (View changes) Content: User guide QMan messages Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMan - Qpid Management bridge (page edited)
Page Edited : qpid : QMan - Qpid Management bridge QMan - Qpid Management bridge has been edited by Andrea Gazzarini (Jan 27, 2009). (View changes) Content: 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 : Get me up and running User Guide The first one is a brief quick start guide in order to get QMan up and running; the User Guide describes QMan module with its features from a functional perspective.If you don't know where to start from, please consider having a look at the User Guide first in order to get a big picture about how things are working. 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... QMan design JMX interface WS-DM interface Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: ACL (page edited)
that fail will result in a log statement being generated. In the case of a fatal logging the full file will be validated before the broker shuts down. Example file: # Some Users user t...@qpid user mar...@qpid user k...@qpid user r...@qpid user t...@qpid user and...@qpid user deb...@qpid # Some groups group admin t...@qpid mar...@qpid group user-consume mar...@qpid t...@qpid group group2 k...@qpid user-consume r...@qpid group publisher group2 \ t...@qpid and...@qpid deb...@qpid # Some rules acl allow ca...@qpid create exchange name=carl.* acl deny r...@qpid create queue acl allow gu...@qpid bind exchange name=amq.topic routingkey=stocks.ibm.# owner=self acl allow user-consume create queue name=tmp.* acl allow publisher publish all durable=false acl allow publisher create queue name=RequestQueue acl allow consumer consume queue durable=true acl allow f...@qpid create all acl allow b...@qpid all queue acl allow admin all acl deny k...@qpid all acl allow all consume queue owner=self acl allow all bind exchange owner=self # Last (default) rule acl deny all all Design Documentation Mapping of ACL traps to action and type The C++ broker maps the ACL traps in the follow way for AMQP 0-10: The Java broker currently only performs ACLs on the AMQP connection not on management functions: Object Action Properties Trap C++ Trap Java Exchange Create name type alternate passive durable ExchangeHandlerImpl::declare ExchangeDeclareHandler Exchange Delete name ExchangeHandlerImpl::delete ExchangeDeleteHandler Exchange Access name ExchangeHandlerImpl::query Exchange Bind name routingkey queuename owner ExchangeHandlerImpl::bind QueueBindHandler Exchange Unbind name routingkey ExchangeHandlerImpl::unbind ExchangeUnbindHandler Exchange Access name queuename routingkey ExchangeHandlerImpl::bound Exchange Publish name routingKey SemanticState::route BasicPublishMethodHandler Queue Access name QueueHandlerImpl::query Queue Create name alternate passive durable exclusive autodelete QueueHandlerImpl::declare QueueDeclareHandler Queue Purge name QueueHandlerImpl::purge QueuePurgeHandler Queue Purge name Management::Queue::purge Queue Delete name QueueHandlerImpl::delete QueueDeleteHandler Queue Consume name (possibly add in future?) MessageHandlerImpl::subscribe BasicConsumeMethodHandler BasicGetMethodHandler Update ManagementProperty::set Access ManagementProperty::read Link Create Management::connect Route Create Management:: -createFederationRoute- Route Delete Management:: -deleteFederationRoute- Virtualhost Access name TBD ConnectionOpenMethodHandler Management actions that are not explicitly given a name property it will default the name property to management method name, if the action is 'W' Action will be 'Update', if 'R' Action will be 'Access'. for example, if the mgnt method 'joinCluster' was not mapped in schema it will be mapped in ACL file as follows Object Action Property Broker Update name=joinCluster v2 ACL User Guide Writing Good/Fast ACL The file gets read top down and rule get passed based on the first match. In the following example the first rule is a dead rule. I.e. the second rule is wider than the first rule. DON'T do this, it will force extra analysis, worst case if the parser does not kill the dead rule you might get a false deny. allow pe...@qpid create queue name=tmp <-- dead rule!! allow pe...@qpid create queue deny all all By default files end with deny all all the mode of the ACL engine can be swapped to be allow based by putting the following at the end of the file allow all all Note that 'allow' based file will be a LOT faster for message transfer. This is because the AMQP specification does not allow for creating subscribes on publish, so the ACL is executed on every message transfer. Also, ACL's rules using less properties on publish will in general be faster. Getting ACL to Log In order to get log messages from ACL actions use allow-log and deny-log for example allow-log j...@qpid all all deny-log gu...@qpid all all User Id / domains running with C++ broker The user-id used for ACL is taken from the connection user-id. Thus in order to use ACL the broker authentication has to be setup. i.e. (if --auth no is used in combination with ACL the broker will deny everything) The user id in the ACL file is of the form @ The Domain is configured via the SASL configuration for the broker, and the domain/realm for qpidd is set using --realm and default to 'QPID'. To load the ACL module use, load the acl module cmd line or via the config file ./src/qpidd --load-module src/.libs/acl.so The ACL plugin provi
[CONF] Apache Qpid: Download (page edited)
Page Edited : qpid : Download Download has been edited by Carl Trieloff (Jan 28, 2009). (View changes) Content: Production Releases These releases are well tested and appropriate for production use. M4 is the latest release of Qpid. Qpid supports the latest version of AMQP, 0-10, and some components also the AMQP 0-8 and 0-9, earlier versions. For details on compatibility among releases, see: AMQP Release Compatibility for Qpid If you have any questions about these releases, please mail the user list user list AMQP 0-10 Releases Management tools cmd line (packaged with python) http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz QMan JMX bridge, WS-DM (packaged with Java) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz Broker & Clients Full release & keys http://www.apache.org/dist/qpid/M4/ C++ broker & client http://www.apache.org/dist/qpid/M4/qpid-cpp-M4.tar.gz Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz C# (.NET, WCF, Excel) client http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-10-M4.zip Ruby client http://www.apache.org/dist/qpid/M4/qpid-ruby-M4.tar.gz Java client (packaged with the broker) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz AMQP 0-8 and 0-9 Releases Java broker & client http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz C# (.NET) client http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-8-M4.zip Pre-built Linux Packages Fedora 8, 9, 10 On Fedora, Qpid can be installed using yum. Because Java RPMs are not yet available in Fedora repos, the Java client is not in these distributions. To install the server: # yum install qpidd To install C++ and Python clients: # yum install qpidc-devel # yum install amqp python-qpid To install documentation: # yum install rhm-docs To install persistence using BerkeleyDB: # yum install rhm Development Releases Development releases are intended for testing and previewing new features. They have been tested and meet reasonable quality standards. The development builds have been moved. We will soon post information on how to access them. Source Code Repository The latest version of the code is always available in the Source Repository. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Management Framework (page edited)
Page Edited : qpid : Qpid Management Framework Qpid Management Framework has been edited by Ted Ross (Jan 28, 2009). Change summary: New outline (View changes) Content: What Is QMF QMF Concepts How to Write a QMF Console How to Write a QMF Agent What Is QMF QMF Concepts Console, Agent, and Broker Schema Package Object Class, Event Class Properties, Statistics, and Methods Data Types Object Identifiers Class Keys and Class Versioning How to Write a QMF Console How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Management Framework (page edited)
Page Edited : qpid : Qpid Management Framework Qpid Management Framework has been edited by Ted Ross (Jan 28, 2009). (View changes) Content: What Is QMF Getting Started with QMF QMF Concepts How to Write a QMF Console How to Write a QMF Agent What Is QMF QMF (Qpid Management Framework) is a general-purpose management bus built on Qpid Messaging. It takes advantage of the scalability, security, and rich capabilities of Qpid to provide flexible and easy-to-use manageability to a large set of applications. Getting Started with QMF QMF is used through two primary APIs. The console API is used for console applications that wish to access and manipulate manageable components through QMF. The agent API is used for application that wish to be managed through QMF. The fastest way to get started with QMF is to work through the "How To" tutorials for consoles and agents. For a deeper understanding of what is happening in the tutorials, it is recommended that you look at the Qmf Concepts section. QMF Concepts Console, Agent, and Broker Schema Package Object Class, Event Class Properties, Statistics, and Methods Data Types Object Identifiers Class Keys and Class Versioning How to Write a QMF Console How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Download (page edited)
Page Edited : qpid : Download Download has been edited by Carl Trieloff (Jan 28, 2009). (View changes) Content: Production Releases These releases are well tested and appropriate for production use. M4 is the latest release of Qpid. Qpid supports the latest version of AMQP, 0-10, and some components also the AMQP 0-8 and 0-9, earlier versions. For details on compatibility among releases, see: AMQP Release Compatibility for Qpid If you have any questions about these releases, please mail the user list user list AMQP 0-10 Releases Management tools cmd line (packaged with python) http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz QMan JMX bridge, WS-DM (packaged with Java) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz Broker & Clients Full release & keys http://www.apache.org/dist/qpid/M4/ C++ broker & client http://www.apache.org/dist/qpid/M4/qpid-cpp-M4.tar.gz Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz C# (.NET, WCF, Excel) client http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-10-M4.zip Ruby client http://www.apache.org/dist/qpid/M4/qpid-ruby-M4.tar.gz Java client (packaged with the broker) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz AMQP 0-8 and 0-9 Releases Java broker & client http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz C# (.NET) client http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-8-M4.zip Pre-built Linux Packages Fedora 8, 9, 10 On Fedora, Qpid can be installed using yum. Because Java RPMs are not yet available in Fedora repos, the Java client is not in these distributions. To install the server: # yum install qpidd To install C++ and Python clients: # yum install qpidc-devel # yum install amqp python-qpid To install documentation: # yum install rhm-docs To install persistence using an external store module: # yum install rhm Development Releases Development releases are intended for testing and previewing new features. They have been tested and meet reasonable quality standards. The development builds have been moved. We will soon post information on how to access them. Source Code Repository The latest version of the code is always available in the Source Repository. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Management Framework (page edited)
Page Edited : qpid : Qpid Management Framework Qpid Management Framework has been edited by Ted Ross (Jan 28, 2009). (View changes) Content: What Is QMF Getting Started with QMF QMF Concepts How to Write a QMF Console How to Write a QMF Agent What Is QMF QMF (Qpid Management Framework) is a general-purpose management bus built on Qpid Messaging. It takes advantage of the scalability, security, and rich capabilities of Qpid to provide flexible and easy-to-use manageability to a large set of applications. Getting Started with QMF QMF is used through two primary APIs. The console API is used for console applications that wish to access and manipulate manageable components through QMF. The agent API is used for application that wish to be managed through QMF. The fastest way to get started with QMF is to work through the "How To" tutorials for consoles and agents. For a deeper understanding of what is happening in the tutorials, it is recommended that you look at the Qmf Concepts section. QMF Concepts Console, Agent, and Broker Schema Package Object Class, Event Class Properties, Statistics, and Methods Data Types Object Identifiers Class Keys and Class Versioning How to Write a QMF Console Please see the QMF Python Console Tutorial for information about using the console API with Python. How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page created)
Page Created : qpid : QMF Python Console Tutorial QMF Python Console Tutorial has been created by Ted Ross (Jan 28, 2009). Content: Prerequisite - Install Qpid Messaging Synchronous Console Operations Creating a QMF Console Session and Attaching to a Broker Accessing Managed Objects Viewing Properties and Statistics of an Object Invoking Methods on an Object Asynchronous Console Operations Prerequisite - Install Qpid Messaging Synchronous Console Operations Creating a QMF Console Session and Attaching to a Broker Accessing Managed Objects Viewing Properties and Statistics of an Object Invoking Methods on an Object Asynchronous Console Operations Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
Page Edited : qpid : QMF Python Console Tutorial QMF Python Console Tutorial has been edited by Ted Ross (Jan 28, 2009). (View changes) Content: Prerequisite - Install Qpid Messaging Synchronous Console Operations Creating a QMF Console Session and Attaching to a Broker Accessing Managed Objects Viewing Properties and Statistics of an Object Invoking Methods on an Object Asynchronous Console Operations Prerequisite - Install Qpid Messaging QMF uses Qpid Messaging as its means of communication. To use QMF, Qpid messaging must be installed somewhere in the network. Qpid can be downloaded as source from Apache, is packaged with a number of Linux distributions, and can be purchased from commercial vendors that use Qpid. Please see Download for information as to where to get Qpid Messaging. Qpid Messaging includes a message broker (qpidd) which typically runs as a daemon on a system. It also includes client bindings in various programming languages. The Python-language client library includes the QMF console libraries needed for this tutorial. Please note that Qpid Messaging has two broker implementations. One is implemented in C++ and the other in Java. At press time, QMF is supported only by the C++ broker. If the goal is to get the tutorial examples up and running as quickly as possible, all of the Qpid components can be installed on a single system (even a laptop). For more realistic deployments, the broker can be deployed on a server and the client/QMF libraries installed on other systems. Synchronous Console Operations Creating a QMF Console Session and Attaching to a Broker Accessing Managed Objects Viewing Properties and Statistics of an Object Invoking Methods on an Object Asynchronous Console Operations Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
Page Edited : qpid : QMF Python Console Tutorial QMF Python Console Tutorial has been edited by Ted Ross (Jan 28, 2009). (View changes) Content: Prerequisite - Install Qpid Messaging Synchronous Console Operations Creating a QMF Console Session and Attaching to a Broker Accessing Managed Objects Viewing Properties and Statistics of an Object Invoking Methods on an Object Asynchronous Console Operations Prerequisite - Install Qpid Messaging QMF uses Qpid Messaging as its means of communication. To use QMF, Qpid messaging must be installed somewhere in the network. Qpid can be downloaded as source from Apache, is packaged with a number of Linux distributions, and can be purchased from commercial vendors that use Qpid. Please see Download for information as to where to get Qpid Messaging. Qpid Messaging includes a message broker (qpidd) which typically runs as a daemon on a system. It also includes client bindings in various programming languages. The Python-language client library includes the QMF console libraries needed for this tutorial. Please note that Qpid Messaging has two broker implementations. One is implemented in C++ and the other in Java. At press time, QMF is supported only by the C++ broker. If the goal is to get the tutorial examples up and running as quickly as possible, all of the Qpid components can be installed on a single system (even a laptop). For more realistic deployments, the broker can be deployed on a server and the client/QMF libraries installed on other systems. Synchronous Console Operations The Python console API for QMF can be used in a synchronous style, an asynchronous style, or a combination of both. Synchronous operations are conceptually simple and are well suited for user-interactive tasks. All operations are performed in the context of a Python function call. If communication over the message bus is required to complete an operation, the function call blocks and waits for the expected result (or timeout failure) before returning control to the caller. Creating a QMF Console Session and Attaching to a Broker For the purposes of this tutorial, code examples will be shown as they are entered in an interactive python session. $ python Python 2.5.2 (r252:60911, Sep 30 2008, 15:41:38) [GCC 4.3.2 20080917 (Red Hat 4.3.2-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> We will begin by importing the required libraries. If the Python client is properly installed, these libraries will be found normally by the Python interpreter. >>> from qmf.console import Session We must now create a Session object to manage this QMF console session. >>> sess = Session() If no arguments are supplied to the creation of Session, it defaults to synchronous-only operation. It also defaults to user-management of connections. More on this in a moment. We will now establish a connection to the messaging broker. If the broker daemon is running on the local host, simply use the following: >>> broker = sess.addBroker() If the messaging broker is on a remote host, supply the URL to the broker in the addBroker function call. Here's how to connect to a local broker using the URL. >>> broker = sess.addBroker("amqp://localhost") Accessing Managed Objects Viewing Properties and Statistics of an Object Invoking Methods on an Object Asynchronous Console Operations Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
calling the Session.getObjects function. To illustrate, we'll get a list of objects representing queues in the message broker itself. >>> queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") queues is an array of proxy objects representing real queues on the message broker. A proxy object can be printed to display a description of the object. >>> for q in queues: ... print q ... org.apache.qpid.broker:queue[0-1537-1-0-58] 0-0-1-0-1152921504606846979:reply-localhost.localdomain.32004 org.apache.qpid.broker:queue[0-1537-1-0-61] 0-0-1-0-1152921504606846979:topic-localhost.localdomain.32004 >>> Viewing Properties and Statistics of an Object Invoking Methods on an Object Asynchronous Console Operations Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
calling the Session.getObjects function. To illustrate, we'll get a list of objects representing queues in the message broker itself. >>> queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") queues is an array of proxy objects representing real queues on the message broker. A proxy object can be printed to display a description of the object. >>> for q in queues: ... print q ... org.apache.qpid.broker:queue[0-1537-1-0-58] 0-0-1-0-1152921504606846979:reply-localhost.localdomain.32004 org.apache.qpid.broker:queue[0-1537-1-0-61] 0-0-1-0-1152921504606846979:topic-localhost.localdomain.32004 >>> Viewing Properties and Statistics of an Object Let us now focus our attention on one of the queue objects. >>> queue = queues[0] The attributes of an object are partitioned into properties and statistics. Though the distinction is somewhat arbitrary, properties tend to be fairly static and may also be large and statistics tend to change rapidly and are relatively small (counters, etc.). There are two ways to view the properties of an object. An array of properties can be obtained using the getProperties function: >>> props = queue.getProperties() >>> for prop in props: ... print prop ... (vhostRef, 0-0-1-0-1152921504606846979) (name, u'reply-localhost.localdomain.32004') (durable, False) (autoDelete, True) (exclusive, True) (arguments, {}) >>> The getProperties function returns an array of tuples. Each tuple consists of the property descriptor and the property value. A more convenient way to access properties is by using the attribute of the proxy object directly: >>> queue.autoDelete True >>> queue.name u'reply-localhost.localdomain.32004' >>> Statistics are accessed in the same way: >>> stats = queue.getStatistics() >>> for stat in stats: ... print stat ... (msgTotalEnqueues, 53) (msgTotalDequeues, 53) (msgTxnEnqueues, 0) (msgTxnDequeues, 0) (msgPersistEnqueues, 0) (msgPersistDequeues, 0) (msgDepth, 0) (byteDepth, 0) (byteTotalEnqueues, 19116) (byteTotalDequeues, 19116) (byteTxnEnqueues, 0) (byteTxnDequeues, 0) (bytePersistEnqueues, 0) (bytePersistDequeues, 0) (consumerCount, 1) (consumerCountHigh, 1) (consumerCountLow, 1) (bindingCount, 2) (bindingCountHigh, 2) (bindingCountLow, 2) (unackedMessages, 0) (unackedMessagesHigh, 0) (unackedMessagesLow, 0) (messageLatencySamples, 0) (messageLatencyMin, 0) (messageLatencyMax, 0) (messageLatencyAverage, 0) >>> or alternatively: >>> queue.byteTotalEnqueues 19116 >>> Invoking Methods on an Object Asynchronous Console Operations Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
calling the Session.getObjects function. To illustrate, we'll get a list of objects representing queues in the message broker itself. >>> queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") queues is an array of proxy objects representing real queues on the message broker. A proxy object can be printed to display a description of the object. >>> for q in queues: ... print q ... org.apache.qpid.broker:queue[0-1537-1-0-58] 0-0-1-0-1152921504606846979:reply-localhost.localdomain.32004 org.apache.qpid.broker:queue[0-1537-1-0-61] 0-0-1-0-1152921504606846979:topic-localhost.localdomain.32004 >>> Viewing Properties and Statistics of an Object Let us now focus our attention on one of the queue objects. >>> queue = queues[0] The attributes of an object are partitioned into properties and statistics. Though the distinction is somewhat arbitrary, properties tend to be fairly static and may also be large and statistics tend to change rapidly and are relatively small (counters, etc.). There are two ways to view the properties of an object. An array of properties can be obtained using the getProperties function: >>> props = queue.getProperties() >>> for prop in props: ... print prop ... (vhostRef, 0-0-1-0-1152921504606846979) (name, u'reply-localhost.localdomain.32004') (durable, False) (autoDelete, True) (exclusive, True) (arguments, {}) >>> The getProperties function returns an array of tuples. Each tuple consists of the property descriptor and the property value. A more convenient way to access properties is by using the attribute of the proxy object directly: >>> queue.autoDelete True >>> queue.name u'reply-localhost.localdomain.32004' >>> Statistics are accessed in the same way: >>> stats = queue.getStatistics() >>> for stat in stats: ... print stat ... (msgTotalEnqueues, 53) (msgTotalDequeues, 53) (msgTxnEnqueues, 0) (msgTxnDequeues, 0) (msgPersistEnqueues, 0) (msgPersistDequeues, 0) (msgDepth, 0) (byteDepth, 0) (byteTotalEnqueues, 19116) (byteTotalDequeues, 19116) (byteTxnEnqueues, 0) (byteTxnDequeues, 0) (bytePersistEnqueues, 0) (bytePersistDequeues, 0) (consumerCount, 1) (consumerCountHigh, 1) (consumerCountLow, 1) (bindingCount, 2) (bindingCountHigh, 2) (bindingCountLow, 2) (unackedMessages, 0) (unackedMessagesHigh, 0) (unackedMessagesLow, 0) (messageLatencySamples, 0) (messageLatencyMin, 0) (messageLatencyMax, 0) (messageLatencyAverage, 0) >>> or alternatively: >>> queue.byteTotalEnqueues 19116 >>> The proxy objects to not automatically track changes that occur on the real objects. In other words, if the real queue enqueues more bytes, viewing the byteTotalEnqueues statistic will show the same number as it did the first time. To get updated data on a proxy object, use the update function call: >>> queue.update() >>> queue.byteTotalEnqueues 19783 >>> Be Advised The update method was added after the M4 release of Qpid/Qmf. It may not be available in your libraries. Invoking Methods on an Object Asynchronous Console Operations Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Jonathan Robie (Jan 28, 2009). (View changes) Content: How to documentation qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Jonathan Robie (Jan 28, 2009). (View changes) Content: How to documentation qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Jonathan Robie (Jan 28, 2009). (View changes) Content: How to documentation qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Index (page edited)
Page Edited : qpid : Index Index has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: Apache Qpid: Open Source AMQP Messaging Enterprise Messaging systems let programs communicate by exchanging messages, much as people communicate by exchanging email. Unlike email, enterprise messaging systems provide guaranteed delivery, speed, security, and freedom from spam. Until recently, there was no open standard for Enterprise Messaging systems, so programmers either wrote their own, or used expensive proprietary systems. AMQP Advanced Message Queuing Protocol is the first open standard for Enterprise Messaging. It is designed to support messaging for just about any distributed or business application. Routing can be configured flexibly, easily supporting common messaging paradigms like point-to-point, fanout, publish-subscribe, and request-response. Apache Qpid implements the latest AMQP specification, providing transaction management, queuing, distribution, security, management, clustering, federation and heterogeneous multi-platform support and a lot more. And Apache Qpid is extremely fast. Apache Qpid aims to be 100% AMQP Compliant. AMQP Messaging Servers Qpid provides two AMQP messaging servers: C++ - high performance, low latency, and RDMA support. Java - Fully JMS compliant, runs on any Java platform AMQP Client APIs: C++, Java, JMS, Ruby, Python, and C# Qpid provides AMQP Client APIs for the following languages: C++ Java, fully conformant with JMS 1.1 C# .NET, 0-10 using WCF Ruby Python Operating Systems and Platforms: The Qpid C++ broker runs on the following operating systems: Linux systems Windows Solaris (coming soon) The Qpid Java broker runs on: Any Java platform Qpid clients can be run on the following operating systems and platforms: Java: any platform, production proven on Windows, Linux, Solaris C++: Linux Windows Solaris (coming soon) C# .NET Getting Started Download Qpid here: download page Follow these instructions to get started fast: Getting Started If you need help, mail the lists Getting Help If you have a question about any aspect of Qpid or need help getting up and running please send an email to one of our mailing lists. Getting Involved We welcome contributions to Qpid. Mail us on one of our lists if you want to contribute to the project, have questions on using it or just want to get our thoughts on a topic... Roadmap For details on releases, a summary of what is in each release can be found here RoadMap Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: How to documentation Qpid Java Documentation Getting Started Guide qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: How to documentation Qpid Java Documentation Getting Started Guide Qpid Java FAQ qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: How to documentation Qpid Java Documentation Getting Started Guide Qpid Java FAQ Qpid Java How To qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: How to documentation Qpid Java Documentation Getting Started Guide Qpid Java FAQ Qpid Java How To Management Tools qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: How to documentation Qpid Java Documentation Qpid Java User Documentation Getting Started Guide Qpid Java FAQ Qpid Java How To Management Tools qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Java Documentation (page edited)
Page Edited : qpid : Qpid Java Documentation Qpid Java Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: Purpose This is the index of all Qpid Java Documentation. Introduction The Qpid pure Java broker currently supports the following features: All features required by the Sun JMS 1.1 specification, fully tested Transaction support Persistence using a pluggable layer Pluggable security using SASL Management using JMX and an Eclipse Management Console application High performance header-based routing for messages Message Priorities Configurable logging and log archiving Threshold alerting ACLs Extensively tested on each release, including performance & reliability testing Useful Links General User Guides FAQ Getting Started Guide Broker Environment Variables System Properties Troubleshooting Guide URL Formats for Qpid Example Classes How Tos Add New UsersConfigure ACLsConfigure Java Qpid to use a SSL connection.Configure Log4j CompositeRolling AppenderConfigure the Broker via config.xmlConfigure the Virtual Hosts via virtualhosts.xmlHow to Tune M3 Java Broker PerformanceHow to Use JNDIQpid Java Build How ToUse Priority Queues Management Tools Eclipse Management ConsoleMessageStore Tool Management Design notes Developer Information Build How To Qpid Java Run Scripts Qpid Developer Documentation Coding Standards AMQP Version Handling URL format for Connections and Binding Creating Java unit tests with InVM broker Testing Interoperability Testing Performance Testing Sustained Tests IBM JMS Performance Test Results Release Plans Release Plans Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Java Documentation (page edited)
Page Edited : qpid : Qpid Java Documentation Qpid Java Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: Purpose This is the index of all Qpid Java Documentation. Introduction The Qpid pure Java broker currently supports the following features: All features required by the Sun JMS 1.1 specification, fully tested Transaction support Persistence using a pluggable layer Pluggable security using SASL Management using JMX and an Eclipse Management Console application High performance header-based routing for messages Message Priorities Configurable logging and log archiving Threshold alerting ACLs Extensively tested on each release, including performance & reliability testing Automatic client failover using connection properties Upcoming features: Useful Links General User Guides FAQ Getting Started Guide Broker Environment Variables System Properties Troubleshooting Guide URL Formats for Qpid Example Classes How Tos Add New UsersConfigure ACLsConfigure Java Qpid to use a SSL connection.Configure Log4j CompositeRolling AppenderConfigure the Broker via config.xmlConfigure the Virtual Hosts via virtualhosts.xmlHow to Tune M3 Java Broker PerformanceHow to Use JNDIQpid Java Build How ToUse Priority Queues Management Tools Eclipse Management ConsoleMessageStore Tool Management Design notes Developer Information Build How To Qpid Java Run Scripts Qpid Developer Documentation Coding Standards AMQP Version Handling URL format for Connections and Binding Creating Java unit tests with InVM broker Testing Interoperability Testing Performance Testing Sustained Tests IBM JMS Performance Test Results Release Plans Release Plans Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Java Documentation (page edited)
Page Edited : qpid : Qpid Java Documentation Qpid Java Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: Purpose This is the index of all Qpid Java Documentation. Introduction The Qpid pure Java broker currently supports the following features: All features required by the Sun JMS 1.1 specification, fully tested Transaction support Persistence using a pluggable layer Pluggable security using SASL Management using JMX and an Eclipse Management Console application High performance header-based routing for messages Message Priorities Configurable logging and log archiving Threshold alerting ACLs Extensively tested on each release, including performance & reliability testing Automatic client failover using configurable connection properties Durable Queues/Subscriptions Upcoming features: Useful Links General User Guides FAQ Getting Started Guide Broker Environment Variables System Properties Troubleshooting Guide URL Formats for Qpid Example Classes How Tos Add New UsersConfigure ACLsConfigure Java Qpid to use a SSL connection.Configure Log4j CompositeRolling AppenderConfigure the Broker via config.xmlConfigure the Virtual Hosts via virtualhosts.xmlHow to Tune M3 Java Broker PerformanceHow to Use JNDIQpid Java Build How ToUse Priority Queues Management Tools Eclipse Management ConsoleMessageStore Tool Management Design notes Developer Information Build How To Qpid Java Run Scripts Qpid Developer Documentation Coding Standards AMQP Version Handling URL format for Connections and Binding Creating Java unit tests with InVM broker Testing Interoperability Testing Performance Testing Sustained Tests IBM JMS Performance Test Results Release Plans Release Plans Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Java Documentation (page edited)
Page Edited : qpid : Qpid Java Documentation Qpid Java Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: Purpose This is the index of all Qpid Java Documentation. Introduction The Qpid pure Java broker currently supports the following features: All features required by the Sun JMS 1.1 specification, fully tested Transaction support Persistence using a pluggable layer Pluggable security using SASL Management using JMX and an Eclipse Management Console application High performance header-based routing for messages Message Priorities Configurable logging and log archiving Threshold alerting ACLs Extensively tested on each release, including performance & reliability testing Automatic client failover using configurable connection properties Durable Queues/Subscriptions Upcoming features: Flow To Disk IP Whitelists Useful Links General User Guides FAQ Getting Started Guide Broker Environment Variables System Properties Troubleshooting Guide URL Formats for Qpid Example Classes How Tos Add New UsersConfigure ACLsConfigure Java Qpid to use a SSL connection.Configure Log4j CompositeRolling AppenderConfigure the Broker via config.xmlConfigure the Virtual Hosts via virtualhosts.xmlHow to Tune M3 Java Broker PerformanceHow to Use JNDIQpid Java Build How ToUse Priority Queues Management Tools Eclipse Management ConsoleMessageStore Tool Management Design notes Developer Information Build How To Qpid Java Run Scripts Qpid Developer Documentation Coding Standards AMQP Version Handling URL format for Connections and Binding Creating Java unit tests with InVM broker Testing Interoperability Testing Performance Testing Sustained Tests IBM JMS Performance Test Results Release Plans Release Plans Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Java Documentation (page edited)
Page Edited : qpid : Qpid Java Documentation Qpid Java Documentation has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: Purpose This is the index of all Qpid Java Documentation. Introduction The Qpid pure Java broker currently supports the following features: All features required by the Sun JMS 1.1 specification, fully tested Transaction support Persistence using a pluggable layer Pluggable security using SASL Management using JMX and an Eclipse Management Console application High performance header-based routing for messages Message Priorities Configurable logging and log archiving Threshold alerting ACLs Extensively tested on each release, including performance & reliability testing Automatic client failover using configurable connection properties Durable Queues/Subscriptions Upcoming features: Flow To Disk IP Whitelist AMQP 0-10 Support (for interoperability) Useful Links General User Guides FAQ Getting Started Guide Broker Environment Variables System Properties Troubleshooting Guide URL Formats for Qpid Example Classes How Tos Add New UsersConfigure ACLsConfigure Java Qpid to use a SSL connection.Configure Log4j CompositeRolling AppenderConfigure the Broker via config.xmlConfigure the Virtual Hosts via virtualhosts.xmlHow to Tune M3 Java Broker PerformanceHow to Use JNDIQpid Java Build How ToUse Priority Queues Management Tools Eclipse Management ConsoleMessageStore Tool Management Design notes Developer Information Build How To Qpid Java Run Scripts Qpid Developer Documentation Coding Standards AMQP Version Handling URL format for Connections and Binding Creating Java unit tests with InVM broker Testing Interoperability Testing Performance Testing Sustained Tests IBM JMS Performance Test Results Release Plans Release Plans Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Getting Started (page edited)
Page Edited : qpid : Getting Started Getting Started has been edited by Marnie McCormack (Jan 29, 2009). (View changes) Content: To get started with Apache Qpid, follow the steps below. Download the software Download Start a broker Instructions for running a Qpid Java broker Instructions for running a Qpid C++ broker Management tools for the AMQP 0-10 broker Run an example program from the downloaded software, or from the following URLs (these are svn URLs, which you can use to browse the examples or check them out): C++ Examples Java JMS Examples Python Examples Ruby Examples .NET Examples Read the API Guides and Documentation C++ API Guide Documentation Get your Questions Answered Read the FAQ Ask a question on the user list users-subscr...@qpid.apache.org Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Getting Started (page edited)
Page Edited : qpid : Getting Started Getting Started has been edited by Jonathan Robie (Jan 29, 2009). (View changes) Content: To get started with Apache Qpid, follow the steps below. Download the software Download Start a broker Instructions for running a Qpid Java broker Instructions for running a Qpid C++ broker Management tools for the AMQP 0-10 broker Run an example program from the downloaded software, or from the following URLs (these are svn URLs, which you can use to browse the examples or check them out): C++ Examples https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/examples/ Java JMS Examples https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/client/example/ Python Examples https://svn.apache.org/repos/asf/qpid/trunk/qpid/python/examples/ Ruby Examples https://svn.apache.org/repos/asf/qpid/trunk/qpid/ruby/examples/ .NET Examples http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/examples/ Read the API Guides and Documentation C++ API Guide Documentation Get your Questions Answered Read the FAQ Ask a question on the user list users-subscr...@qpid.apache.org Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Getting Started (page edited)
Page Edited : qpid : Getting Started Getting Started has been edited by Jonathan Robie (Jan 29, 2009). (View changes) Content: To get started with Apache Qpid, follow the steps below. Download the software Download Start a broker Instructions for running a Qpid Java broker Instructions for running a Qpid C++ broker Management tools for the AMQP 0-10 broker Run an example program from the downloaded software, or from the following URLs (these are svn URLs, which you can use to browse the examples or check them out): C++ Examples: https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/examples/ Java JMS Examples: https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/client/example/ Python Examples: https://svn.apache.org/repos/asf/qpid/trunk/qpid/python/examples/ Ruby Examples: https://svn.apache.org/repos/asf/qpid/trunk/qpid/ruby/examples/ .NET Examples: http://svn.apache.org/viewvc/qpid/trunk/qpid/dotnet/client-010/examples/ Read the API Guides and Documentation C++ API Guide Documentation Get your Questions Answered Read the FAQ Ask a question on the user list users-subscr...@qpid.apache.org Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
calling the Session.getObjects function. To illustrate, we'll get a list of objects representing queues in the message broker itself. >>> queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") queues is an array of proxy objects representing real queues on the message broker. A proxy object can be printed to display a description of the object. >>> for q in queues: ... print q ... org.apache.qpid.broker:queue[0-1537-1-0-58] 0-0-1-0-1152921504606846979:reply-localhost.localdomain.32004 org.apache.qpid.broker:queue[0-1537-1-0-61] 0-0-1-0-1152921504606846979:topic-localhost.localdomain.32004 >>> Viewing Properties and Statistics of an Object Let us now focus our attention on one of the queue objects. >>> queue = queues[0] The attributes of an object are partitioned into properties and statistics. Though the distinction is somewhat arbitrary, properties tend to be fairly static and may also be large and statistics tend to change rapidly and are relatively small (counters, etc.). There are two ways to view the properties of an object. An array of properties can be obtained using the getProperties function: >>> props = queue.getProperties() >>> for prop in props: ... print prop ... (vhostRef, 0-0-1-0-1152921504606846979) (name, u'reply-localhost.localdomain.32004') (durable, False) (autoDelete, True) (exclusive, True) (arguments, {}) >>> The getProperties function returns an array of tuples. Each tuple consists of the property descriptor and the property value. A more convenient way to access properties is by using the attribute of the proxy object directly: >>> queue.autoDelete True >>> queue.name u'reply-localhost.localdomain.32004' >>> Statistics are accessed in the same way: >>> stats = queue.getStatistics() >>> for stat in stats: ... print stat ... (msgTotalEnqueues, 53) (msgTotalDequeues, 53) (msgTxnEnqueues, 0) (msgTxnDequeues, 0) (msgPersistEnqueues, 0) (msgPersistDequeues, 0) (msgDepth, 0) (byteDepth, 0) (byteTotalEnqueues, 19116) (byteTotalDequeues, 19116) (byteTxnEnqueues, 0) (byteTxnDequeues, 0) (bytePersistEnqueues, 0) (bytePersistDequeues, 0) (consumerCount, 1) (consumerCountHigh, 1) (consumerCountLow, 1) (bindingCount, 2) (bindingCountHigh, 2) (bindingCountLow, 2) (unackedMessages, 0) (unackedMessagesHigh, 0) (unackedMessagesLow, 0) (messageLatencySamples, 0) (messageLatencyMin, 0) (messageLatencyMax, 0) (messageLatencyAverage, 0) >>> or alternatively: >>> queue.byteTotalEnqueues 19116 >>> The proxy objects do not automatically track changes that occur on the real objects. For example, if the real queue enqueues more bytes, viewing the byteTotalEnqueues statistic will show the same number as it did the first time. To get updated data on a proxy object, use the update function call: >>> queue.update() >>> queue.byteTotalEnqueues 19783 >>> Be Advised The update method was added after the M4 release of Qpid/Qmf. It may not be available in your distribution. Invoking Methods on an Object Up to this point, we have used the QMF Console API to find managed objects and view their attributes, a read-only activity. The next topic to illustrate is how to invoke a method on a managed object. Methods allow consoles to control the managed agents by either triggering a one-time action or by changing the values of attributes in an object. Asynchronous Console Operations Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
1} >>> print result.status 0 >>> print result.text OK >>> print result.outArgs {'body': u'Message Body', 'sequence': 1} >>> In the above example, we have invoked the echo method on the instance of the broker designated by the proxy "br" with a sequence argument of 1 and a body argument of "Message Body". The result indicates success and contains the output arguments (in this case copies of the input arguments). To be more precise... Calling echo on the proxy causes the input arguments to be marshalled and sent to the remote agent where the method is executed. Once the method execution completes, the output arguments are marshalled and sent back to the console to be stored in the method result. Asynchronous Console Operations Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
1} >>> print result.status 0 >>> print result.text OK >>> print result.outArgs {'body': u'Message Body', 'sequence': 1} >>> In the above example, we have invoked the echo method on the instance of the broker designated by the proxy "br" with a sequence argument of 1 and a body argument of "Message Body". The result indicates success and contains the output arguments (in this case copies of the input arguments). To be more precise... Calling echo on the proxy causes the input arguments to be marshalled and sent to the remote agent where the method is executed. Once the method execution completes, the output arguments are marshalled and sent back to the console to be stored in the method result. You are probably wondering how you are supposed to know what types the arguments are and which arguments are input, which are output, or which are both. This will be addressed later in the "Discovering what Kinds of Objects are Available" section. Asynchronous Console Operations Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
ody': u'Message Body', 'sequence': 1} >>> print result.status 0 >>> print result.text OK >>> print result.outArgs {'body': u'Message Body', 'sequence': 1} >>> In the above example, we have invoked the echo method on the instance of the broker designated by the proxy "br" with a sequence argument of 1 and a body argument of "Message Body". The result indicates success and contains the output arguments (in this case copies of the input arguments). To be more precise... Calling echo on the proxy causes the input arguments to be marshalled and sent to the remote agent where the method is executed. Once the method execution completes, the output arguments are marshalled and sent back to the console to be stored in the method result. You are probably wondering how you are supposed to know what types the arguments are and which arguments are input, which are output, or which are both. This will be addressed later in the "Discovering what Kinds of Objects are Available" section. Asynchronous Console Operations QMF is built on top of a middleware messaging layer (Qpid Messaging). Because of this, QMF can use some communication patterns that are difficult to implement using network transports like UDP, TCP, or SSL. One of these patterns is called the Publication and Subscription pattern (pub-sub for short). In the pub-sub pattern, data sources publish information without a particular destination in mind. Data sinks (destinations) subscribe using a set of criteria that describes what kind of data they are interested in receiving. Data published by a source may be received by zero, one, or many subscribers. QMF uses the pub-sub pattern to distribute events, object creation and deletion, and changes to properties and statistics. A console application using the QMF Console API can receive these asynchronous and unsolicited events and updates. This is useful for applications that store and analyze events and/or statistics. It is also useful for applications that react to certain events or conditions. Note that console applications may always use the synchronous mechanisms. Creating a Console Class to Receive Asynchronous Data Asynchronous API operation occurs when the console application supplies a Console object to the session manager. The Console object (which overrides the qmf.console.Console class) handles all asynchronously arriving data. The Console class has the following methods. Any number of these methods may be overridden by the console application. Method Arguments Invoked when... brokerConnected broker a connection to a broker is established brokerDisconnected broker a connection to a broker is lost newPackage name a new package is seen on the QMF bus newClass kind, classKey a new class (event or object) is seen on the QMF bus newAgent agent a new agent appears on the QMF bus delAgent agent an agent disconnects from the QMF bus objectProps broker, object the properties of an object are published objectStats broker, object the statistics of an object are published event broker, event an event is published heartbeat agent, timestamp a heartbeat is published by an agent brokerInfo broker information about a connected broker is available to be queried Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
esult OK (0) - {'body': u'Message Body', 'sequence': 1} >>> print result.status 0 >>> print result.text OK >>> print result.outArgs {'body': u'Message Body', 'sequence': 1} >>> In the above example, we have invoked the echo method on the instance of the broker designated by the proxy "br" with a sequence argument of 1 and a body argument of "Message Body". The result indicates success and contains the output arguments (in this case copies of the input arguments). To be more precise... Calling echo on the proxy causes the input arguments to be marshalled and sent to the remote agent where the method is executed. Once the method execution completes, the output arguments are marshalled and sent back to the console to be stored in the method result. You are probably wondering how you are supposed to know what types the arguments are and which arguments are input, which are output, or which are both. This will be addressed later in the "Discovering what Kinds of Objects are Available" section. Asynchronous Console Operations QMF is built on top of a middleware messaging layer (Qpid Messaging). Because of this, QMF can use some communication patterns that are difficult to implement using network transports like UDP, TCP, or SSL. One of these patterns is called the Publication and Subscription pattern (pub-sub for short). In the pub-sub pattern, data sources publish information without a particular destination in mind. Data sinks (destinations) subscribe using a set of criteria that describes what kind of data they are interested in receiving. Data published by a source may be received by zero, one, or many subscribers. QMF uses the pub-sub pattern to distribute events, object creation and deletion, and changes to properties and statistics. A console application using the QMF Console API can receive these asynchronous and unsolicited events and updates. This is useful for applications that store and analyze events and/or statistics. It is also useful for applications that react to certain events or conditions. Note that console applications may always use the synchronous mechanisms. Creating a Console Class to Receive Asynchronous Data Asynchronous API operation occurs when the console application supplies a Console object to the session manager. The Console object (which overrides the qmf.console.Console class) handles all asynchronously arriving data. The Console class has the following methods. Any number of these methods may be overridden by the console application. Any method that is not overridden defaults to a null handler which takes no action when invoked. Method Arguments Invoked when... brokerConnected broker a connection to a broker is established brokerDisconnected broker a connection to a broker is lost newPackage name a new package is seen on the QMF bus newClass kind, classKey a new class (event or object) is seen on the QMF bus newAgent agent a new agent appears on the QMF bus delAgent agent an agent disconnects from the QMF bus objectProps broker, object the properties of an object are published objectStats broker, object the statistics of an object are published event broker, event an event is published heartbeat agent, timestamp a heartbeat is published by an agent brokerInfo broker information about a connected broker is available to be queried Supplied with the API is a class called DebugConsole. This is a test Console instance that overrides all of the methods such that arriving asynchronous data is printed to the screen. This can be used to see all of the arriving asynchronous data. Receiving Events We'll start the example from the beginning to illustrate the reception and handling of events. In this example, we will create a Console class that handles broker-connect, broker-disconnect, and event messages. We will also allow the session manager to manage the broker connection for us. Begin by importing the necessary classes: >>> from qmf.console import Session, Console Now, create a subclass of Console that handles the three message types: >>> class EventConsole(Console): ... def brokerConnected(self, broker): ... print "brokerConnected:", broker ... def brokerDisconnected(self, broker): ... print "brokerDisconnected:", broker ... def event(self, broker, event): ... print "event:", event ... >>> Make an instance of the new class: >>> myConsole = EventConsole() Create a Session class using the console instance. In addition, we shall request that the session manager do the connection management for us. Notice also that we are requesting that the session manager not receive objects or heartbeats. Since this example is concerned only with events, we can optimize the use of the messaging bus by tel
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
bus by telling the session manager not to subscribe for object updates or heartbeats. >>> sess = Session(myConsole, manageConnections=True, rcvObjects=False, rcvHeartbeats=False) >>> broker = sess.addBroker() >>> Once the broker is added, we will begin to receive asynchronous events (assuming there is a functioning broker available to connect to). brokerConnected: Broker connected at: localhost:5672 event: Thu Jan 29 19:53:19 2009 INFO org.apache.qpid.broker:bind broker=localhost:5672 ... Receiving Objects To illustrate asynchronous handling of objects, a small console program is supplied. The entire program is shown below for convenience. We will then go through it part-by-part to explain its design. # Import needed classes from qmf.console import Session, Console from timeimport sleep # Declare a dictionary to map object-ids to queue names queueMap = {} # Customize the Console class to receive object updates. class MyConsole(Console): # Handle property updates def objectProps(self, broker, record): # Verify that we have received a queue object. Exit otherwise. classKey = record.getClassKey() if classKey.getClassName() != "queue": return # If this object has not been seen before, create a new mapping from objectID to name oid = record.getObjectId() if oid not in queueMap: queueMap[oid] = record.name # Handle statistic updates def objectStats(self, broker, record): # Ignore updates for objects that are not in the map oid = record.getObjectId() if oid not in queueMap: return # Print the queue name and some statistics print "%s: enqueues=%d dequeues=%d" % (queueMap[oid], record.msgTotalEnqueues, record.msgTotalDequeues) # if the delete-time is non-zero, this object has been deleted. Remove it from the map. if record.getTimestamps()[2] > 0: queueMap.pop(oid) # Create an instance of the QMF session manager. Set userBindings to True to allow # this program to choose which objects classes it is interested in. sess = Session(MyConsole(), manageConnections=True, rcvEvents=False, userBindings=True) # Register to receive updates for broker:queue objects. sess.bindClass("org.apache.qpid.broker", "queue") broker = sess.addBroker() # Suspend processing while the asynchronous operations proceed. try: while True: sleep(1) except: pass # Disconnect the broker before exiting. sess.delBroker(broker) Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
Session(MyConsole(), manageConnections=True, rcvEvents=False, userBindings=True) # Register to receive updates for broker:queue objects. sess.bindClass("org.apache.qpid.broker", "queue") The above code is illustrative of the way a console application can tune its use of the QMF bus. Note that rcvEvents is set to False. This prevents the reception of events. Note also the use of userBindings=True and the call to sess.bindClass. If userBindings is set to False (its default), the session will receive object updates for all classes of object. In the case above, the application is only interested in broker:queue objects and reduces its bus bandwidth usage by requesting updates to only that class. bindClass may be called as many times as desired to add classes to the list of subscribed classes. Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Management Framework (page edited)
Page Edited : qpid : Qpid Management Framework Qpid Management Framework has been edited by Ted Ross (Jan 30, 2009). (View changes) Content: What Is QMF Getting Started with QMF QMF Concepts How to Write a QMF Console How to Write a QMF Agent What Is QMF QMF (Qpid Management Framework) is a general-purpose management bus built on Qpid Messaging. It takes advantage of the scalability, security, and rich capabilities of Qpid to provide flexible and easy-to-use manageability to a large set of applications. Getting Started with QMF QMF is used through two primary APIs. The console API is used for console applications that wish to access and manipulate manageable components through QMF. The agent API is used for application that wish to be managed through QMF. The fastest way to get started with QMF is to work through the "How To" tutorials for consoles and agents. For a deeper understanding of what is happening in the tutorials, it is recommended that you look at the Qmf Concepts section. QMF Concepts This section introduces important concepts underlying QMF. Console, Agent, and Broker The major architectural components of QMF are the Console, the Agent, and the Broker. Console components are the "managing" components of QMF and agent components are the "managed" parts. The broker is a central (possibly distributed, clustered and fault-tolerant) component that manages name spaces and caches schema information. A console application may be a command-line utility, a three-tiered web-based GUI, a collection and storage device, a specialized application that monitors and reacts to events and conditions, or anything else somebody wishes to develop that uses QMF management data. An agent application is any application that has been enhanced to allow itself to be managed via QMF. +-++-++---++---+ | CLI utility || Web app || Audit storage || Event correlation | +-++-++---++---+ ^^ ^^ | || || | vv vv v +-+ |Qpid Messaging Bus (with QMF Broker capability) | +-+ ^ ^ ^ | | | v v v ++++++ | Manageable app || Manageable app || Manageable app | ++++++ In the above diagram, the Manageable apps are agents, the CLI utility, Web app, and Audit storag are consoles, and Event correlation is both a console and an agent because it can create events based on the aggregation of what it sees. Schema Package Object Class, Event Class Properties, Statistics, and Methods Data Types Object Identifiers Class Keys and Class Versioning How to Write a QMF Console Please see the QMF Python Console Tutorial for information about using the console API with Python. How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Management Framework (page edited)
Page Edited : qpid : Qpid Management Framework Qpid Management Framework has been edited by Ted Ross (Jan 30, 2009). (View changes) Content: What Is QMF Getting Started with QMF QMF Concepts How to Write a QMF Console How to Write a QMF Agent What Is QMF QMF (Qpid Management Framework) is a general-purpose management bus built on Qpid Messaging. It takes advantage of the scalability, security, and rich capabilities of Qpid to provide flexible and easy-to-use manageability to a large set of applications. Getting Started with QMF QMF is used through two primary APIs. The console API is used for console applications that wish to access and manipulate manageable components through QMF. The agent API is used for application that wish to be managed through QMF. The fastest way to get started with QMF is to work through the "How To" tutorials for consoles and agents. For a deeper understanding of what is happening in the tutorials, it is recommended that you look at the Qmf Concepts section. QMF Concepts This section introduces important concepts underlying QMF. Console, Agent, and Broker The major architectural components of QMF are the Console, the Agent, and the Broker. Console components are the "managing" components of QMF and agent components are the "managed" parts. The broker is a central (possibly distributed, clustered and fault-tolerant) component that manages name spaces and caches schema information. A console application may be a command-line utility, a three-tiered web-based GUI, a collection and storage device, a specialized application that monitors and reacts to events and conditions, or anything else somebody wishes to develop that uses QMF management data. An agent application is any application that has been enhanced to allow itself to be managed via QMF. +-++-++---++---+ | CLI utility || Web app || Audit storage || Event correlation | +-++-++---++---+ ^^ ^^ | || || | vv vv v +-+ |Qpid Messaging Bus (with QMF Broker capability) | +-+ ^ ^ ^ | | | v v v ++++++ | Manageable app || Manageable app || Manageable app | ++++++ In the above diagram, the Manageable apps are agents, the CLI utility, Web app, and Audit storage are consoles, and Event correlation is both a console and an agent because it can create events based on the aggregation of what it sees. Schema Package Object Class, Event Class Properties, Statistics, and Methods Data Types Object Identifiers Class Keys and Class Versioning How to Write a QMF Console Please see the QMF Python Console Tutorial for information about using the console API with Python. How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Java Broker Management CLI (page edited)
Page Edited : qpid : Qpid Java Broker Management CLI Qpid Java Broker Management CLI has been edited by Lahiru Mananada Gunathilake (Jan 30, 2009). (View changes) Content: How to build Apache Qpid CLI Build Instructions - General At the very beginning please build Apache Qpid by refering this installation guide from here http://cwiki.apache.org/qpid/qpid-java-build-how-to.html. After successfully build Apache Qpid you'll be able to start Apache Qpid Java broker,then only you are in a position to use Qpid CLI. Check out the Source First check out the source from subversion repository. Please visit the following link for more information about different versions of Qpid CLI. http://code.google.com/p/lahirugsoc2008/downloads/list Prerequisites For the broker code you need JDK 1.5.0_15 or later. You should set JAVA_HOME and include the bin directory in your PATH. Check it's ok by executing java -v ! Building Apache Qpid CLI This project is currently having only an ant build system.Please install ant build system before trying to install Qpid CLI. Compiling To compile the source please run following command ant compile To compile the test source run the following command ant compile-tests Running CLI After successful compilation set QPID_CLI environment variable to the main source directory.(set the environment variable to the directory where ant build script stored in the SVN checkout).Please check whether the Qpid Java broker is up an running in the appropriate location and run the following command to start the Qpid CLI by running the qpid-cli script in the bin directory. $QPID_CLI/bin/qpid-cli -h -p For more details please have a look in to README file which ships with source package of Qpid CLI. Other ant targets ant clean Clean the complete build including CLI build and test build. ant jar Create the jar file for the project without test cases. ant init Create the directory structure for build. ant compile-tests This compiles all the test source ant test Run all the test cases For now we are supporting those ant targets. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Management Framework (page edited)
Page Edited : qpid : Qpid Management Framework Qpid Management Framework has been edited by Ted Ross (Jan 30, 2009). (View changes) Content: What Is QMF Getting Started with QMF QMF Concepts How to Write a QMF Console How to Write a QMF Agent What Is QMF QMF (Qpid Management Framework) is a general-purpose management bus built on Qpid Messaging. It takes advantage of the scalability, security, and rich capabilities of Qpid to provide flexible and easy-to-use manageability to a large set of applications. Getting Started with QMF QMF is used through two primary APIs. The console API is used for console applications that wish to access and manipulate manageable components through QMF. The agent API is used for application that wish to be managed through QMF. The fastest way to get started with QMF is to work through the "How To" tutorials for consoles and agents. For a deeper understanding of what is happening in the tutorials, it is recommended that you look at the Qmf Concepts section. QMF Concepts This section introduces important concepts underlying QMF. Console, Agent, and Broker The major architectural components of QMF are the Console, the Agent, and the Broker. Console components are the "managing" components of QMF and agent components are the "managed" parts. The broker is a central (possibly distributed, clustered and fault-tolerant) component that manages name spaces and caches schema information. A console application may be a command-line utility, a three-tiered web-based GUI, a collection and storage device, a specialized application that monitors and reacts to events and conditions, or anything else somebody wishes to develop that uses QMF management data. An agent application is any application that has been enhanced to allow itself to be managed via QMF. +-++-++---++---+ | CLI utility || Web app || Audit storage || Event correlation | +-++-++---++---+ ^^ ^^ | || || | vv vv v +-+ |Qpid Messaging Bus (with QMF Broker capability) | +-+ ^ ^ ^ | | | v v v ++++++ | Manageable app || Manageable app || Manageable app | ++++++ In the above diagram, the Manageable apps are agents, the CLI utility, Web app, and Audit storage are consoles, and Event correlation is both a console and an agent because it can create events based on the aggregation of what it sees. Schema A schema describes the structure of management data. Each agent provides a schema that describes its management model including the object classes, methods, events, etc. that it provides. In the current QMF distribution, the agent's schema is codified in an XML document. In the near future, there will be ways to programatically create QMF schemata. Package Each agent that exports a schema identifies itself using a package name. The package provides a unique namespace for the classes in the agent's schema that prevent collisions with identically named classes in other agents' schemata. Package names are in "reverse domain name" form with levels of hierarchy separated by periods. For example, the Qpid messaging broker uses package "org.apache.qpid.broker" and the Access Control List plugin for the broker uses package "org.apache.qpid.acl". In general, the package name should be the reverse of the internet domain name assigned to the organization that owns the agent software. Object Classes Properties, Statistics, and Methods Data Types Event Classes Object Identifiers Class Keys and Class Versioning How to Write a QMF Console Please see the QMF Python Console Tutorial for information about using the console API with Python. How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/
[CONF] Apache Qpid: Qpid Management Framework (page edited)
quot;> "vhostRef" type="objId" references="Vhost" access="RC" index="y" parentRef="y"/> "name" type="sstr" access="RC" index="y"/> "type" type="sstr" access="RO"/> "durable"type="bool" access="RC"/> "arguments" type="map" access="RO" desc="Arguments supplied in exchange.declare"/> "producerCount" type="hilo32" desc="Current producers on exchange"/> "bindingCount" type="hilo32" desc="Current bindings"/> "msgReceives" type="count64" desc="Total messages received"/> "msgDrops" type="count64" desc="Total messages dropped (no matching key)"/> "msgRoutes" type="count64" desc="Total routed messages"/> "byteReceives" type="count64" desc="Total bytes received"/> "byteDrops" type="count64" desc="Total bytes dropped (no matching key)"/> "byteRoutes"type="count64" desc="Total routed bytes"/> Properties, Statistics, and Methods Properties, statistics, and methods are the building blocks of an object class. Properties and statistics are both object attributes, though they are treated differently. If an object attribute is defining, seldom or never changes, or is large in size, it should be defined as a property. If an attribute is rapidly changing or is used to instrument the object (counters, etc.), it should be defined as a statistic. The XML syntax for and have the following XML-attributes: Attribute Meaning name Y Y The name of the attribute type Y Y The data type of the attribute unit Y Y Optional unit name - use the singular (i.e. MByte) desc Y Y Description to annotate the attribute references Y If the type is "objId", names the referenced class access Y Access rights (RC, RW, RO) index Y "y" if this property is used to uniquely identify the object. There may be more than one index property in a class parentRef Y "y" if this property references an object in which this object is in a child-parent relationship. optional Y "y" if this property is optional (i.e. may be NULL/not-present) min Y Minimum value of a numeric attribute max Y Maximum value of a numeric attribute maxLen Y Maximum length of a string attribute Data Types Event Classes Object Identifiers Class Keys and Class Versioning How to Write a QMF Console Please see the QMF Python Console Tutorial for information about using the console API with Python. How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Carl Trieloff (Jan 30, 2009). (View changes) Content: How to documentation Qpid Java Broker topics Getting Started Guide Qpid Java FAQ Qpid Java How To qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Getting Started Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Management Tools Java Broker Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Carl Trieloff (Jan 30, 2009). (View changes) Content: How to documentation Qpid Java Broker topics Getting Started Guide Qpid Java FAQ Qpid Java How To qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Getting Started Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework (QMF) Protocol Java Broker Management Tools Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Management Framework (page edited)
ng the tag. An object class is composed of properties, statistics, and methods. "Exchange"> "vhostRef" type="objId" references="Vhost" access="RC" index="y" parentRef="y"/> "name" type="sstr" access="RC" index="y"/> "type" type="sstr" access="RO"/> "durable"type="bool" access="RC"/> "arguments" type="map" access="RO" desc="Arguments supplied in exchange.declare"/> "producerCount" type="hilo32" desc="Current producers on exchange"/> "bindingCount" type="hilo32" desc="Current bindings"/> "msgReceives" type="count64" desc="Total messages received"/> "msgDrops" type="count64" desc="Total messages dropped (no matching key)"/> "msgRoutes" type="count64" desc="Total routed messages"/> "byteReceives" type="count64" desc="Total bytes received"/> "byteDrops" type="count64" desc="Total bytes dropped (no matching key)"/> "byteRoutes"type="count64" desc="Total routed bytes"/> Properties and Statistics Properties, statistics, and methods are the building blocks of an object class. Properties and statistics are both object attributes, though they are treated differently. If an object attribute is defining, seldom or never changes, or is large in size, it should be defined as a property. If an attribute is rapidly changing or is used to instrument the object (counters, etc.), it should be defined as a statistic. The XML syntax for and have the following XML-attributes: Attribute Meaning name Y Y The name of the attribute type Y Y The data type of the attribute unit Y Y Optional unit name - use the singular (i.e. MByte) desc Y Y Description to annotate the attribute references Y If the type is "objId", names the referenced class access Y Access rights (RC, RW, RO) index Y "y" if this property is used to uniquely identify the object. There may be more than one index property in a class parentRef Y "y" if this property references an object in which this object is in a child-parent relationship. optional Y "y" if this property is optional (i.e. may be NULL/not-present) min Y Minimum value of a numeric attribute max Y Maximum value of a numeric attribute maxLen Y Maximum length of a string attribute Methods Event Classes Data Types Object attributes, method arguments, and event arguments have data types. The data types are based on the rich data typing system provided by the AMQP messaging protocol. The following table describes the data types available for QMF: QMF Type Description REF QMF Object ID - Used to reference another QMF object. U8 8-bit unsigned integer U16 16-bit unsigned integer U32 32-bit unsigned integer U64 64-bit unsigned integer S8 8-bit signed integer S16 16-bit signed integer S32 32-bit signed integer S64 64-bit signed integer BOOL Boolean - True or False SSTR Short String - String of up to 255 bytes LSTR Long String - String of up to 65535 bytes ABSTIME Absolute time since the epoch in nanoseconds (64-bits) DELTATIME Delta time in nanoseconds (64-bits) FLOAT Single precision floating point number DOUBLE Double precision floating point number UUID UUID - 128 bits FTABLE Field-table - std::map in C++, dictionary in Python In the XML schema definition, types go by different names and there are a number of special cases. This is because the XML schema is used in code-generation for the agent API. It provides options that control what kind of accessors are generated for attributes of different types. The following table enumerates the types available in the XML format, which QMF types they map to, and other special handling that occurs. XML Type QMF Type Accessor Style Special Characteristics objId REF Direct (get, set) uint8,16,32,64 U8,16,32,64 Direct (get, set) int8,16,32,64 S8,16,32,64 Direct (get, set) bool BOOL Direct (get, set) sstr SSTR Direct (get, set) lstr LSTR Direct (get, set) absTime ABSTIME Direct (get, set) deltaTime DELTATIME Direct (get, set) float FLOAT Direct (get, set) double DOUBLE Direct (get, set) uuid UUID Direct (get, set) map FTABLE Direct (get, set) hilo8,16,32,64 U8,16,32,64 Counter (inc, dec) Generates value, valueMin, valueMax count8,16,32,64 U8,16,32,64 Counter (inc, dec) mma32,64 U32,64 Direct Generates valueMin, valueMax, valueAverage, valueSamples mmaTime DELTATIME Direct Generates
[CONF] Apache Qpid: Qpid Management Framework (page edited)
ng the tag. An object class is composed of properties, statistics, and methods. "Exchange"> "vhostRef" type="objId" references="Vhost" access="RC" index="y" parentRef="y"/> "name" type="sstr" access="RC" index="y"/> "type" type="sstr" access="RO"/> "durable"type="bool" access="RC"/> "arguments" type="map" access="RO" desc="Arguments supplied in exchange.declare"/> "producerCount" type="hilo32" desc="Current producers on exchange"/> "bindingCount" type="hilo32" desc="Current bindings"/> "msgReceives" type="count64" desc="Total messages received"/> "msgDrops" type="count64" desc="Total messages dropped (no matching key)"/> "msgRoutes" type="count64" desc="Total routed messages"/> "byteReceives" type="count64" desc="Total bytes received"/> "byteDrops" type="count64" desc="Total bytes dropped (no matching key)"/> "byteRoutes"type="count64" desc="Total routed bytes"/> Properties and Statistics Properties, statistics, and methods are the building blocks of an object class. Properties and statistics are both object attributes, though they are treated differently. If an object attribute is defining, seldom or never changes, or is large in size, it should be defined as a property. If an attribute is rapidly changing or is used to instrument the object (counters, etc.), it should be defined as a statistic. The XML syntax for and have the following XML-attributes: Attribute Meaning name Y Y The name of the attribute type Y Y The data type of the attribute unit Y Y Optional unit name - use the singular (i.e. MByte) desc Y Y Description to annotate the attribute references Y If the type is "objId", names the referenced class access Y Access rights (RC, RW, RO) index Y "y" if this property is used to uniquely identify the object. There may be more than one index property in a class parentRef Y "y" if this property references an object in which this object is in a child-parent relationship. optional Y "y" if this property is optional (i.e. may be NULL/not-present) min Y Minimum value of a numeric attribute max Y Maximum value of a numeric attribute maxLen Y Maximum length of a string attribute Methods Event Classes Data Types Object attributes, method arguments, and event arguments have data types. The data types are based on the rich data typing system provided by the AMQP messaging protocol. The following table describes the data types available for QMF: QMF Type Description REF QMF Object ID - Used to reference another QMF object. U8 8-bit unsigned integer U16 16-bit unsigned integer U32 32-bit unsigned integer U64 64-bit unsigned integer S8 8-bit signed integer S16 16-bit signed integer S32 32-bit signed integer S64 64-bit signed integer BOOL Boolean - True or False SSTR Short String - String of up to 255 bytes LSTR Long String - String of up to 65535 bytes ABSTIME Absolute time since the epoch in nanoseconds (64-bits) DELTATIME Delta time in nanoseconds (64-bits) FLOAT Single precision floating point number DOUBLE Double precision floating point number UUID UUID - 128 bits FTABLE Field-table - std::map in C++, dictionary in Python In the XML schema definition, types go by different names and there are a number of special cases. This is because the XML schema is used in code-generation for the agent API. It provides options that control what kind of accessors are generated for attributes of different types. The following table enumerates the types available in the XML format, which QMF types they map to, and other special handling that occurs. XML Type QMF Type Accessor Style Special Characteristics objId REF Direct (get, set) uint8,16,32,64 U8,16,32,64 Direct (get, set) int8,16,32,64 S8,16,32,64 Direct (get, set) bool BOOL Direct (get, set) sstr SSTR Direct (get, set) lstr LSTR Direct (get, set) absTime ABSTIME Direct (get, set) deltaTime DELTATIME Direct (get, set) float FLOAT Direct (get, set) double DOUBLE Direct (get, set) uuid UUID Direct (get, set) map FTABLE Direct (get, set) hilo8,16,32,64 U8,16,32,64 Counter (inc, dec) Generates value, valueMin, valueMax count8,16,32,64 U8,16,32,64 Counter (inc, dec) mma32,64 U32,64 Direct Generates valueMin, valueMax, valueAverage, valueSamples mmaTime DELTATIME Direct
[CONF] Apache Qpid: Qpid Management Framework (page edited)
, and other special handling that occurs. XML Type QMF Type Accessor Style Special Characteristics objId REF Direct (get, set) uint8,16,32,64 U8,16,32,64 Direct (get, set) int8,16,32,64 S8,16,32,64 Direct (get, set) bool BOOL Direct (get, set) sstr SSTR Direct (get, set) lstr LSTR Direct (get, set) absTime ABSTIME Direct (get, set) deltaTime DELTATIME Direct (get, set) float FLOAT Direct (get, set) double DOUBLE Direct (get, set) uuid UUID Direct (get, set) map FTABLE Direct (get, set) hilo8,16,32,64 U8,16,32,64 Counter (inc, dec) Generates value, valueMin, valueMax count8,16,32,64 U8,16,32,64 Counter (inc, dec) mma32,64 U32,64 Direct Generates valueMin, valueMax, valueAverage, valueSamples mmaTime DELTATIME Direct Generates valueMin, valueMax, valueAverage, valueSamples Important When writing a schema using the XML format, types used in or must be types that have Direct accessor style. Any type may be used in tags. Object Identifiers Class Keys and Class Versioning How to Write a QMF Console Please see the QMF Python Console Tutorial for information about using the console API with Python. How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Carl Trieloff (Jan 31, 2009). (View changes) Content: How to documentation Qpid Java Broker topics Getting Started Guide Qpid Java FAQ Qpid Java How To qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Getting Started Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework Qpid Management Framework (QMF) Protocol Java Broker Management Tools Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Carl Trieloff (Jan 31, 2009). (View changes) Content: How to documentation Qpid Java Broker topics Getting Started Guide Qpid Java FAQ Qpid Java How To qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Getting Started Manage anything with Qpid - QMF Python Console Tutorial Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework Qpid Management Framework (QMF) Protocol Java Broker Management Tools Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: QMF Python Console Tutorial (page edited)
in. sess = Session(MyConsole(), manageConnections=True, rcvEvents=False, userBindings=True) # Register to receive updates for broker:queue objects. sess.bindClass("org.apache.qpid.broker", "queue") The above code is illustrative of the way a console application can tune its use of the QMF bus. Note that rcvEvents is set to False. This prevents the reception of events. Note also the use of userBindings=True and the call to sess.bindClass. If userBindings is set to False (its default), the session will receive object updates for all classes of object. In the case above, the application is only interested in broker:queue objects and reduces its bus bandwidth usage by requesting updates to only that class. bindClass may be called as many times as desired to add classes to the list of subscribed classes. Discovering what Kinds of Objects are Available Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: AMQP compatibility (page edited)
Page Edited : qpid : AMQP compatibility AMQP compatibility has been edited by Carl Trieloff (Jan 31, 2009). (View changes) Content: Qpid provides the most complete and compatible implementation of AMQP. And is the most aggressive in implementing the latest version of the specification. Qpid can be downloaded here There are two brokers: C++ with support for AMQP 0-10 Java with support for AMQP 0-8 and 0-9 (0-10 planned) There are client libraries for C++, Java (JMS), .Net (written in C#), python and ruby. All clients support 0-10 and interoperate with the C++ broker. The JMS client supports 0-8, 0-9 and 0-10 and interoperates with both brokers. The python and ruby clients will also support all versions, but the API is dynamically driven by the specification used and so differs between versions. To work with the Java broker you must use 0-8 or 0-9, to work with the C++ broker you must use 0-10. There are two separate C# clients, one for 0-8 that interoperates with the Java broker, one for 0-10 that inteoperates with the C++ broker. QMF Management is supported in Ruby, Python, C++, and via QMan for Java JMX & WS-DM. AMQP Compatibility of Qpid releases: Qpid implements the AMQP Specification, and as the specification has progressed Qpid is keeping up with the updates. This means that different Qpid versions support different versions of AMQP. Here is a simple guide on what use. Here is a matrix that describes the different versions supported by each release Y = supported N = unsupported IP = in progress P = planned Component Spec M2.1 M3 M4 java client 0-10 Y Y 0-9 Y Y Y 0-8 Y Y Y java broker 0-10 P 0-9 Y Y Y 0-8 Y Y Y c++ client/broker 0-10 Y Y 0-9 Y python client 0-10 Y Y 0-9 Y Y Y 0-8 Y Y Y ruby client 0-10 Y 0-8 Y Y Y C# client 0-10 Y 0-8 Y Y Interop table by AMQP specification version Above table represented in another format. release 0-8 0-9 0-10 java client M3 Y Y Y java client M2.1 Y Y N java broker M3 Y Y N java broker trunk Y Y P java broker M2.1 Y Y N c++ client/broker M3 N N Y c++ client/broker M2.1 N Y N python client M3 Y Y Y python client M2.1 Y Y N ruby client M3 Y Y N ruby client trunk Y Y P C# client M3 Y N N C# client trunk Y N Y Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (attachment added)
New files attached to: qpid : Java Broker Design - Flow to Disk Java Broker Design - Flow to Disk by Martin Ritchie . Attached file(s): Flow2Disk-QueueList.jpg (image/jpeg, 32 kb) Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (page edited)
startInhaler Pseudo-Code - Delivery to Subscriber addToQueue(message) if (flowed) flowToDisk(message) else if (_queueInMemory > _queueMaxMemory) setFlowed startPurger The additional overhead of checking state is done after the message deliveries have been performed and are simple calculations compared to the existing message flow paths. As a result the non-flowed state performance should not be affected. QueueBacking The flow to disk implementation will be performed on a queue by queue basis so a new QueueBacking will be created to handle the flowing of messages to and from disk. +-QueueBacking-+ | flow | | recover | | delete | +--+ When a message is dequeue then it must also be removed from QueueBacking. NOTE: care must be taken here for the NO_ACK mode as the dequeue is performed before delivery so the message must be in memory before that occurs or the data will be lost. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (attachment added)
New files attached to: qpid : Java Broker Design - Flow to Disk Java Broker Design - Flow to Disk by Martin Ritchie . Attached file(s): Flow2Disk-QueueList.jpg (image/jpeg, 32 kb) Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (page edited)
ode - Delivery to Queue addToQueue(message) if (flowed) flowToDisk(message) else if (_queueInMemory > _queueMaxMemory) setFlowed startPurger The additional overhead of checking state is done after the message deliveries have been performed and are simple calculations compared to the existing message flow paths. As a result the non-flowed state performance should not be affected. QueueBacking The flow to disk implementation will be performed on a queue by queue basis so a new QueueBacking will be created to handle the flowing of messages to and from disk. +-QueueBacking-+ | flow | | recover | | delete | +--+ When a message is dequeue then it must also be removed from QueueBacking. NOTE: care must be taken here for the NO_ACK mode as the dequeue is performed before delivery so the message must be in memory before that occurs or the data will be lost. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Qpid Management Framework (page edited)
, and other special handling that occurs. XML Type QMF Type Accessor Style Special Characteristics objId REF Direct (get, set) uint8,16,32,64 U8,16,32,64 Direct (get, set) int8,16,32,64 S8,16,32,64 Direct (get, set) bool BOOL Direct (get, set) sstr SSTR Direct (get, set) lstr LSTR Direct (get, set) absTime ABSTIME Direct (get, set) deltaTime DELTATIME Direct (get, set) float FLOAT Direct (get, set) double DOUBLE Direct (get, set) uuid UUID Direct (get, set) map FTABLE Direct (get, set) hilo8,16,32,64 U8,16,32,64 Counter (inc, dec) Generates value, valueMin, valueMax count8,16,32,64 U8,16,32,64 Counter (inc, dec) mma32,64 U32,64 Direct Generates valueMin, valueMax, valueAverage, valueSamples mmaTime DELTATIME Direct Generates valueMin, valueMax, valueAverage, valueSamples Important When writing a schema using the XML format, types used in or must be types that have Direct accessor style. Any type may be used in tags. Object Identifiers Every object, or instance of an object class, managed by QMF is assigned a unique object ID. The object ID is a structured 128-bit field. The bits of the object ID are laid out as follows: first uint_64: 63 60 5948 4728 27 0 +---++++ | flags | sequence | broker bank| agent bank | +---++++ second uint_64: 63 0 +--+ |object number | +--+ Object Id Fields: Field Name Size (bits) Description flags 4 Flags bits - all reserved (must be zero) sequence 12 Agent Restart Sequence - For persistent objects, this value must be zero. For transient objects, this value is a the restart sequence of the agent. broker bank 20 Bank number of assigning broker agent bank 28 Bank number of assigning agent object number 64 Number assigned to the object Class Keys and Class Versioning How to Write a QMF Console Please see the QMF Python Console Tutorial for information about using the console API with Python. How to Write a QMF Agent Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (page edited)
Page Edited : qpid : IP Whitelisting IP Whitelisting has been edited by Aidan Skinner (Feb 02, 2009). (View changes) Content: While using a properly configured firewall is the obvious way to restrict access to a broker, it's occasionally desireable to do this on the broker itself. Configuration Everybody loves XML. Elements inside would be or path"/>. would read the file specified at path, which would contain an . would contain further entries, but not . If the host attribute was specified the broker would check it's hostname against the attribute and cause a fatal error on startup if it did not match. would have action, virtualhost, hostname and network attributes. Action and one of host or network would be mandatory. Virtualhost would be optional, if specified the rule would apply only to that virtualhost. The action attribute would be either allow or deny. Host contains a comma seperated list of regexps against which it would match the reverse dns lookup of the connecting IP. Network contains a comma seperated list of of CIDR networks against which the IP would be matched. The first which matched the connection would apply. If no rules applied, the default-action would apply. For example, the following could appear in config.xml: default-action="" class="code-quote">"deny"> "allow" hostname="*.qpid.apache.org" virtualhost="dev"/> "/path/to/file" /> "allow" network="192.168.1.0/24" /> "allow" network="10.0.0.0/8" /> and /path/to/file could contain: "broker1.qpid.apache.org"> "deny" newtork="192.168.1.0/24" virtualhost="prod"/> any machine in the qpid.apache.org domain could access dev. Any machine in the 192.168.1.0/24 network would be allowed access to any virtualhost other than prod Any machine in the 10.0.0.0/8 network would be allowed access to any virtual host Any other machine would be denied access. Changes would be possible while broker was running via commons-configuration magic when the file is editted. Existing connections would be unaffected by a new rule. Implementation An IPRestriction class would extend ACLPlugin which listens for ConnectionOpen and checks against the list of rules. If the changes described at http://qpid.apache.org/java-authorization-plugins.html were implemented it would use that mechanism. IPRestriction would parse the config file, compiling into an ordered list of Rule classes, which would have two methods: boolean match(InetAddress IPAddress) and boolean allow(). During the authorization phase it would iterate through these Rules until match() returns true when it will authorize or not according to the value returned by allow(). Because of the way that Java pre-6 caches dns forever, a small value for networkaddress.cache.ttl is necessary. QPID-1583 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (comment added)
Comment Added : qpid : Re: Java Broker Design - Flow to Disk Java Broker Design - Flow to Disk commented on by Aidan Skinner (Feb 02, 2009). Comment: Copy-per-queue is incredibly expensive when dealing with topics, and changes our memory usage there from O(*subscribers) to O(*subscribers). It also involves a lot (N = subscribers) of copies in memory, which aren't nearly as cheap as you'd hope. We don't need to actually implement copy-per-queue to use that as a simplifying assumption when calculating queue usage, and I totally agree that trying to acurately gauge queue memory usage within the overall context of the broker is futile. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (page edited)
for the second case and to handle queues where the position of the incoming message is not known then the Purger thread will be required. The Purger simply needs to start at the front of the queue and record the amount of data still in memory on the Queue when queueMaxMemory is reached all subsequent messages are flowed. Inhaler The Inhaler is an optimisation to ensure that the broker returns to peek performance after a flow to disk event. Lazily loading messages on demand would be quite slow; so on delivery to a subscriber a check can be performed to see if the current queueInMemory is less than the queueMinMemory which would indicate that there is room to reload older messages. The Inhaler can then begin to load messages from disk until queueMaxMemory has been reached or all messages are back in memory. If all the messages are back in memory then the queue flow state can be reset allowing incoming messages to stay in memory. NOTE: as there are no locks a second check by the Inhaler is required to ensure a message was not flowed between the last load and the change of queue state. The updates to delivery to the queue and to the subscriber are expected to be updated in the following ways: Pseudo-Code - Delivery to Subscriber while (message in queue) subscriber.deliver(message) if (flowed) flowToDisk(message) if (_queueInMemory < _queueMinMemory) startInhaler Pseudo-Code - Delivery to Queue addToQueue(message) if (flowed) flowToDisk(message) else if (_queueInMemory > _queueMaxMemory) setFlowed startPurger The additional overhead of checking state is done after the message deliveries have been performed and are simple calculations compared to the existing message flow paths. As a result the non-flowed state performance should not be affected. QueueBacking The flow to disk implementation will be performed on a queue by queue basis so a new QueueBacking will be created to handle the flowing of messages to and from disk. +-QueueBacking-+ | flow | | recover | | delete | +--+ When a message is dequeue then it must also be removed from QueueBacking. NOTE: care must be taken here for the NO_ACK mode as the dequeue is performed before delivery so the message must be in memory before that occurs or the data will be lost. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (page edited)
Page Edited : qpid : IP Whitelisting IP Whitelisting has been edited by Aidan Skinner (Feb 02, 2009). (View changes) Content: While using a properly configured firewall is the obvious way to restrict access to a broker, it's occasionally desireable to do this on the broker itself. Configuration Everybody loves XML. Elements inside would be or path"/>. would read the file specified at path, which would contain an . would contain further entries, but not . If the host attribute was specified the broker would check it's hostname against the attribute and cause a fatal error on startup if it did not match. would have action, virtualhost, hostname and network attributes. Action and one of host or network would be mandatory. Virtualhost would be optional, if specified the rule would apply only to that virtualhost. The action attribute would be either allow or deny. Host contains a comma seperated list of regexps against which it would match the reverse dns lookup of the connecting IP. Network contains a comma seperated list of of CIDR networks against which the IP would be matched. The first which matched the connection would apply. If no rules applied, the default-action would apply. For example, the following could appear in config.xml: default-action="" class="code-quote">"deny"> "allow" hostname="*.qpid.apache.org" virtualhost="dev"/> "/path/to/file" /> "allow" network="192.168.1.0/24" /> "allow" network="10.0.0.0/8" /> and /path/to/file could contain: "broker1.qpid.apache.org"> "deny" newtork="192.168.1.0/24" virtualhost="prod"/> any machine in the qpid.apache.org domain could access dev. Any machine in the 192.168.1.0/24 network would be allowed access to any virtualhost other than prod Any machine in the 10.0.0.0/8 network would be allowed access to any virtual host Any other machine would be denied access. QPID-1583 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Developer Pages (page edited)
Page Edited : qpid : Developer Pages Developer Pages has been edited by Aidan Skinner (Feb 02, 2009). (View changes) Content: Developer Pages Process Notes Release Process Design Notes Management Design notes - The layered AMQP management protocol for mgmt tools (currently in the M3 C++ broker) AMQPVersion - Multiple AMQP version support design notes ClusteringHA - Federation, HA, and Clustering design notes AMQP0-9-DesignNotes - Design notes for AMQP 0-9 implementation Queue Replay - Adding replay to queues. Interop Testing Specification - Common test cases to ensure all clients and brokers interop. The AMQP Distributed Transaction Classes - The+AMQP+Distributed+Transaction+Classes Producer flow control - Java Broker producer flow control ACL - design page QMF - The Qpid Management Framework Java Broker Modularisation IP Whitelisting Weekly Developer Meeting Minutes The agenda for this can be produced from review/agenda.py -r The Chair rotates weekly through: Aidan Skinner Arnaud Simon Martin Ritchie Rafael Schloming Robert Godfrey Qpid Java Meeting Minutes 2008-03-28 Qpid Java Meeting Minutes 2008-04-04 Qpid Java Meeting Minutes 2008-04-11 Qpid Java Meeting Minutes 2008-04-18 Qpid Java Meeting Minutes 2008-05-02 Qpid Java Meeting Minutes 2008-05-09 Qpid Java Meeting Minutes 2008-05-16 Qpid Java Meeting Minutes 2008-05-23 Qpid Java Meeting Minutes 2008-05-30 Qpid Java Meeting Minutes 2008-06-20 Qpid Java Meeting Minutes 2008-06-27 Qpid Java Meeting Minutes 2008-07-11 Qpid Java Meeting Minutes 2008-07-25 Qpid Java Meeting Minutes 2008-08-01 Qpid Java Meeting Minutes 2008-08-08 Qpid Java Meeting Minutes 2008-08-15 Qpid Java Meeting Minutes 2008-08-22 Qpid Java Meeting Minutes 2008-08-29 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (page edited)
Page Edited : qpid : IP Whitelisting IP Whitelisting has been edited by Aidan Skinner (Feb 02, 2009). (View changes) Content: While using a properly configured firewall is the obvious way to restrict access to a broker, it's occasionally desireable to do this on the broker itself. Configuration Everybody loves XML. Elements inside would be or path"/>. would read the file specified at path, which would contain an . would contain further entries, but not . If the host attribute was specified the broker would check it's hostname against the attribute and cause a fatal error on startup if it did not match. would have action, virtualhost, hostname and network attributes. Action and one of host or network would be mandatory. Virtualhost would be optional, if specified the rule would apply only to that virtualhost. The action attribute would be either allow or deny. Host contains a comma seperated list of regexps against which it would match the reverse dns lookup of the connecting IP. Network contains a comma seperated list of of CIDR networks against which the IP would be matched. The first which matched the connection would apply. If no rules applied, the default-action would apply. For example, the following could appear in config.xml: default-action="" class="code-quote">"deny"> "allow" hostname="*.qpid.apache.org" virtualhost="dev"/> "/path/to/file" /> "allow" network="192.168.1.0/24" /> "allow" network="10.0.0.0/8" /> and /path/to/file could contain: "broker1.qpid.apache.org"> "deny" newtork="192.168.1.0/24" virtualhost="prod"/> any machine in the qpid.apache.org domain could access dev. Any machine in the 192.168.1.0/24 network would be allowed access to any virtualhost other than prod Any machine in the 10.0.0.0/8 network would be allowed access to any virtual host Any other machine would be denied access. Changes would be possible while broker was running via commons-configuration magic when the file is editted. Existing connections would be unaffected by a new rule. Implementation An IPRestriction class would extend ACLPlugin which listens for ConnectionOpen and checks against the list of rules. If the changes described at http://qpid.apache.org/java-authorization-plugins.html were implemented it would use that mechanism. QPID-1583 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Configuration Design (page edited)
Page Edited : qpid : Java Broker Configuration Design Java Broker Configuration Design has been edited by Martin Ritchie (Feb 02, 2009). (View changes) Content: Java Broker Configuration Design The Java broker configuration xml files have grown in complexity through M4 and reached a state where we need to look at the simplifying the design to help both our users and our selves. QPID-1612 Current Issues We use an XML format but don't validate the XML. We can't validate because we use dynamic tags in the Virutalhost sections. We don't ensure that all configuration values are used in the code. We have two three locations where virtualhost information is declared. Information is duplicated rather than defaulted, such as Virtualhost store class. Advanced configuration options are available and highlighted via the config file but we would never advocate their use. Improvement Plans As we are currently using Commons Configuration it would make sense to made use to use as much of their code rather than writing our own. Steps to improving design: Start using a ConfigurationFactory Allows us to split up our configuration moving the Virtualhost sections to it's own file. Allows validation of the main configuration file. Allows an optional user-config.xml file to be included where users can easily override default values. Redesign Virtualhost file to allow validation Allow default values for all Virtualhosts Investigate mechanism to allow plugins and broker elements to identify sections of configuration they use. Fail to start broker if there are missing sections of the configuration. Fail to start broker if there are unused sections of the configuration. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (page created)
Page Created : qpid : IP Whitelisting IP Whitelisting has been created by Aidan Skinner (Feb 02, 2009). Content: While using a properly configured firewall is the obvious way to restrict access to a broker, it's occasionally desireable to do this on the broker itself. .h2 Configuration Everybody loves XML. Elements inside would be or path"/>. would read the file specified at path, which would contain an . would contain further entries, but not . If the host attribute was specified the broker would check it's hostname against the attribute and cause a fatal error on startup if it did not match. would have action, virtualhost, hostname and network attributes. Action and one of host or network would be mandatory. Virtualhost would be optional, if specified it would match one of the virtualhosts. The action attribute would be either allow or deny. host would be a regexp against which it would match the reverse dns lookup of the connecting IP. network would be a CIDR against which the IP would be matched. The first which matched the connection would apply. If no rules applied, the default-action would apply. For example, the following could appear in config.xml: default-action="" class="code-quote">"deny"> "allow" hostname="*.qpid.apache.org" virtualhost="dev"/> "/path/to/file" /> "allow" network="192.168.1.0/24" /> "allow" network="10.0.0.0/8" /> and /path/to/file could contain: "broker1.qpid.apache.org"> "deny" newtork="192.168.1.0/24" virtualhost="prod"/> any machine in the qpid.apache.org domain could access dev. Any machine in the 192.168.1.0/24 network would be allowed access to any virtualhost other than prod Any machine in the 10.0.0.0/8 network would be allowed access to any virtual host Any other machine would be denied access. QPID-1583 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: AMQP compatibility (page edited)
Page Edited : qpid : AMQP compatibility AMQP compatibility has been edited by Aidan Skinner (Feb 03, 2009). (View changes) Content: Qpid provides the most complete and compatible implementation of AMQP. And is the most aggressive in implementing the latest version of the specification. Qpid can be downloaded here There are two brokers: C++ with support for AMQP 0-10 Java with support for AMQP 0-8 and 0-9 (0-10 planned) There are client libraries for C++, Java (JMS), .Net (written in C#), python and ruby. All clients support 0-10 and interoperate with the C++ broker. The JMS client supports 0-8, 0-9 and 0-10 and interoperates with both brokers. The python and ruby clients will also support all versions, but the API is dynamically driven by the specification used and so differs between versions. To work with the Java broker you must use 0-8 or 0-9, to work with the C++ broker you must use 0-10. There are two separate C# clients, one for 0-8 that interoperates with the Java broker, one for 0-10 that inteoperates with the C++ broker. QMF Management is supported in Ruby, Python, C++, and via QMan for Java JMX & WS-DM. AMQP Compatibility of Qpid releases: Qpid implements the AMQP Specification, and as the specification has progressed Qpid is keeping up with the updates. This means that different Qpid versions support different versions of AMQP. Here is a simple guide on what use. Here is a matrix that describes the different versions supported by each release Y = supported N = unsupported IP = in progress P = planned Component Spec M2.1 M3 M4 java client 0-10 Y Y 0-9 Y Y Y 0-8 Y Y Y java broker 0-10 P 0-9 Y Y Y 0-8 Y Y Y c++ client/broker 0-10 Y Y 0-9 Y python client 0-10 Y Y 0-9 Y Y Y 0-8 Y Y Y ruby client 0-10 Y 0-8 Y Y Y C# client 0-10 Y 0-8 Y Y Y Interop table by AMQP specification version Above table represented in another format. release 0-8 0-9 0-10 java client M3 Y Y Y java client M2.1 Y Y N java broker M3 Y Y N java broker trunk Y Y P java broker M2.1 Y Y N c++ client/broker M3 N N Y c++ client/broker M2.1 N Y N python client M3 Y Y Y python client M2.1 Y Y N ruby client M3 Y Y N ruby client trunk Y Y P C# client M3 Y N N C# client trunk Y N Y Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (page edited)
xMemory, queueMinMemory, queueInMemory and isFlowed added. It is proposed that only the data size is used for flow to disk calculations as counting messages will not give us the control that we need over memory usage. These new variables will be used to control two new threads Inhaler and Purger. Purger When queueMaxMemory is reached the queue is set to flow and all new messages on to the queue are sent straight to disk. As messages are sent to a subscriber there are a couple of possibilities when the queue is in a flowed state: The messages are also flowed to disk. A number or percentage of the queueMaxMemory could be kept to handle rollbacks. Using the first mechanism we do not need to have a Purger thread for the simple queue case. However for the second case and to handle queues where the position of the incoming message is not known then the Purger thread will be required. The Purger simply needs to start at the front of the queue and record the amount of data still in memory on the Queue when queueMaxMemory is reached all subsequent messages are flowed. Inhaler The Inhaler is an optimisation to ensure that the broker returns to peek performance after a flow to disk event. Lazily loading messages on demand would be quite slow; so on delivery to a subscriber a check can be performed to see if the current queueInMemory is less than the queueMinMemory which would indicate that there is room to reload older messages. The Inhaler can then begin to load messages from disk until queueMaxMemory has been reached or all messages are back in memory. If all the messages are back in memory then the queue flow state can be reset allowing incoming messages to stay in memory. NOTE: as there are no locks a second check by the Inhaler is required to ensure a message was not flowed between the last load and the change of queue state. The updates to delivery to the queue and to the subscriber are expected to be updated in the following ways: Pseudo-Code - Delivery to Subscriber while (message in queue) subscriber.deliver(message) if (flowed) flowToDisk(message) if (_queueInMemory < _queueMinMemory) startInhaler Pseudo-Code - Delivery to Queue addToQueue(message) if (flowed) flowToDisk(message) else if (_queueInMemory > _queueMaxMemory) setFlowed startPurger The additional overhead of checking state is done after the message deliveries have been performed and are simple calculations compared to the existing message flow paths. As a result the non-flowed state performance should not be affected. QueueBacking The flow to disk implementation will be performed on a queue by queue basis so a new QueueBacking will be created to handle the flowing of messages to and from disk. +-QueueBacking-+ | flow | | recover | | delete | +--+ When a message is dequeue then it must also be removed from QueueBacking. NOTE: care must be taken here for the NO_ACK mode as the dequeue is performed before delivery so the message must be in memory before that occurs or the data will be lost. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (page edited)
Page Edited : qpid : IP Whitelisting IP Whitelisting has been edited by Aidan Skinner (Feb 03, 2009). (View changes) Content: While using a properly configured firewall is the obvious way to restrict access to a broker, it's occasionally desireable to do this on the broker itself. Configuration Everybody loves XML. Elements inside would be or path"/>. would read the file specified at path, which would contain an . would contain further entries, but not . If the host attribute was specified the broker would check it's hostname against the attribute and cause a fatal error on startup if it did not match. would have action, virtualhost, hostname and network attributes. Action and one of host or network would be mandatory. Virtualhost would be optional, if specified the rule would apply only to that virtualhost. The action attribute would be either allow or deny. Host contains a comma seperated list of regexps against which it would match the reverse dns lookup of the connecting IP. Network contains a comma seperated list of of CIDR networks against which the IP would be matched. The first which matched the connection would apply. If no rules applied, the default-action would apply. For example, the following could appear in config.xml: default-action="" class="code-quote">"deny"> "allow" hostname="*.qpid.apache.org" virtualhost="dev"/> "/path/to/file" /> "allow" network="192.168.1.0/24" /> "allow" network="10.0.0.0/8" /> and /path/to/file could contain: "broker1.qpid.apache.org"> "deny" newtork="192.168.1.0/24" virtualhost="prod"/> any machine in the qpid.apache.org domain could access dev. Any machine in the 192.168.1.0/24 network would be allowed access to any virtualhost other than prod Any machine in the 10.0.0.0/8 network would be allowed access to any virtual host Any other machine would be denied access. Changes would be possible while broker was running via commons-configuration magic when the file is editted. Existing connections would be unaffected by a new rule. Implementation An IPRestriction class would extend ACLPlugin which listens for ConnectionOpen and checks against the list of rules. If the changes described at http://qpid.apache.org/java-authorization-plugins.html were implemented it would use that mechanism. IPRestriction would parse the config file, compiling into an ordered list of Rule classes, which would have two methods: boolean match(InetAddress IPAddress) and boolean allow(). During the authorization phase it would iterate through these Rules until match() returns true when it will authorize or not according to the value returned by allow(). Because of the way that Java pre-6 caches dns forever, a small value for networkaddress.cache.ttl is necessary. QPID-1583 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Design - Flow to Disk (page edited)
proposed that only the data size is used for flow to disk calculations as counting messages will not give us the control that we need over memory usage. These new variables will be used to control two new threads Inhaler and Purger. Purger When queueMaxMemory is reached the queue is set to flow and all new messages on to the queue are sent straight to disk. As messages are sent to a subscriber there are a couple of possibilities when the queue is in a flowed state: The messages are also flowed to disk. A number or percentage of the queueMaxMemory could be kept to handle rollbacks. Using the first mechanism we do not need to have a Purger thread for the simple queue case. However for the second case and to handle queues where the position of the incoming message is not known then the Purger thread will be required. The Purger simply needs to start at the front of the queue and record the amount of data still in memory on the Queue when queueMaxMemory is reached all subsequent messages are flowed. Inhaler The Inhaler is an optimisation to ensure that the broker returns to peek performance after a flow to disk event. Lazily loading messages on demand would be quite slow; so on delivery to a subscriber a check can be performed to see if the current queueInMemory is less than the queueMinMemory which would indicate that there is room to reload older messages. The Inhaler can then begin to load messages from disk until queueMaxMemory has been reached or all messages are back in memory. If all the messages are back in memory then the queue flow state can be reset allowing incoming messages to stay in memory. NOTE: as there are no locks a second check by the Inhaler is required to ensure a message was not flowed between the last load and the change of queue state. The updates to delivery to the queue and to the subscriber are expected to be updated in the following ways: Pseudo-Code - Delivery to Subscriber while (message in queue) subscriber.deliver(message) if (flowed) flowToDisk(message) if (_queueInMemory < _queueMinMemory) startInhaler Pseudo-Code - Delivery to Queue addToQueue(message) if (flowed) flowToDisk(message) else if (_queueInMemory > _queueMaxMemory) setFlowed startPurger The additional overhead of checking state is done after the message deliveries have been performed and are simple calculations compared to the existing message flow paths. As a result the non-flowed state performance should not be affected. QueueBacking The flow to disk implementation will be performed on a queue by queue basis so a new QueueBacking will be created to handle the flowing of messages to and from disk. +-QueueBacking-+ | flow | | recover | | delete | +--+ When a message is dequeue then it must also be removed from QueueBacking. NOTE: care must be taken here for the NO_ACK mode as the dequeue is performed before delivery so the message must be in memory before that occurs or the data will be lost. BackingFormat The initial implementation of the QueueBacking will be FileQueueBacking. This will need a new configuration parameter 'flow-to-disk-path' it will default to '$QPID_WORK/queueBacking'. In this directory a new directory will be created to match the queue name that this backing represents. It is in this directory that the queue contents will be written. Each message will be written to its own file which will include the header and body. So the resulting file structure will be as follows: QPID_WORK/ /queueBacking/ // // Whilst NTFS can store over 4M files per directory, FAT32 is limited to 65534 and ext3 only 32000. That coupled with the fact that looking up a file in a large directory is not efficient it makes most sense to implement a hash map on disk using the MessageID as the key. Using the least significant 8 bits as the hashing function will give us 512 bins to evenly spread the messages on disk. This approach will improve look ups times and allow us to write over 16M messages per queue before we hit any file system limits. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: M4 Release Process Notes (page edited)
Page Edited : qpid : M4 Release Process Notes M4 Release Process Notes has been edited by Marnie McCormack (Feb 03, 2009). (View changes) Content: Release notes generated from Jira are incomplete/inaccurate Release note text files are included in the artifacts, so can only contain things which are known in advanced Releases shouldn't be scheduled right before the holiday break Trunk was closed for a long time Was difficult to know what the status of the release was due to Jira inaccuracies Lack of clear documentation about release artifacts Lack of interest in fixing problems with some artifacts Many java commits unreviewed: jiras randomly set to resolved, sat in in-progress for ages etc. Addition of GPL library as dependency branching and tagging conventions are inconsistent across releases windows build files require manual updates was a problem MM stuff added: We should be time boxed or scope bound Test profiles needs to be ok against defined set before RC spun (inc TCK) System testing & smoke testing (cross-platform) needs to be defined and signed up too/off before RC vote Criteria should be defined for RC sign off thus making the signing off more useful for the RM JIRAs for a release should be scoped in as work starts on the task, scoped out as they get dropped Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Carl Trieloff (Feb 03, 2009). (View changes) Content: How to documentation Qpid Java Broker topics Getting Started Guide Qpid Java FAQ Qpid Java How To qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options [Using Broker Federation|] How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Getting Started Manage anything with Qpid - QMF Python Console Tutorial Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework Qpid Management Framework (QMF) Protocol Java Broker Management Tools Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Documentation (page edited)
Page Edited : qpid : Documentation Documentation has been edited by Carl Trieloff (Feb 03, 2009). (View changes) Content: How to documentation Qpid Java Broker topics Getting Started Guide Qpid Java FAQ Qpid Java How To qpidd - C++ Broker topics Running an AMQP 0-10 C++ broker Configuring Queue Options Configuring Exchange Options Using Broker Federation How to use SSL Understanding Last Value Queues (LVQ) Queue State Replication Getting Started Manage anything with Qpid - QMF Python Console Tutorial Common Topics Understanding ACLs API & Tutorial Documentation & User guides Client API Documentation C++ Client API documentation Python Client API documentation .NET Topics .NET client user guide .NET client Excel plug-in The WCF interface for the .NET client Currently the .NET code base provides two client libraries that are compatible respectively with AMQP 0.8 and 0.10. The 0.8 client is located in qpid\dotnet and the 0.10 client in: qpid\dotnet\client-010 You will need an AMQP broker to fully use those client libraries. Use M4 or later C++ broker for AMQP 0.10 or Java broker for AMQP 0.8/0.9. Management Tools Managing the C++ Broker C++ Broker Management Tools QMan - Qpid Management bridge Qpid Management Framework Qpid Management Framework (QMF) Protocol Java Broker Management Tools Management Tools Eclipse Management Console MessageStore Tool Qpid Java Broker Management CLI Interoperability Documentation Qpid Interoperability Documentation Implementation Documentation This section links to the language specific documentation pages. Our project documentation is definitely a work in progress. This would be a very valuable area to contribute a patch. Qpid .Net Documentation Qpid Java Documentation Qpid 'C++' Documentation Qpid Python Test Framework Development Tools Build Creator Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (comment added)
Comment Added : qpid : Re: IP Whitelisting IP Whitelisting commented on by Aidan Skinner (Feb 04, 2009). Comment: [3:42 pm] partychat4 ["rhs"] aidan: so a .. sort of thing would actually be a blacklist, would it not? [3:45 pm] aidan.x.skinner rhs: yes [3:48 pm] aidan.x.skinner rhs: I've been pondering dropping default-action and just letting having a rule with no match attribute at the end serve that purpouse [3:48 pm] aidan.x.skinner (and default to deny if not specified) [3:48 pm] partychat4 ["rob"] but if you have no whitelist at all the default action is allow? [3:49 pm] aidan.x.skinner yeah [3:49 pm] aidan.x.skinner i guess that probably makes allow a more sensible default? [3:49 pm] aidan.x.skinner also, ideas for calling something else would be gratefully recieved [3:49 pm] partychat4 ["rob"] I'm not sure there is a sensible default which is why I think you should force the user to set one [3:49 pm] partychat4 ["rhs"] accesslist? [3:50 pm] aidan.x.skinner rob: we could demand one empty rule at the end? [3:50 pm] aidan.x.skinner rhs: i thought about that but considered it a little too close to ACL [3:51 pm] partychat4 ["rhs"] ? [3:51 pm] partychat4 ["rob"] aidan: I'm pretty relaxed really [3:51 pm] partychat4 ["rhs"] ... might make some sense [3:51 pm] partychat4 ["rhs"] er, default-action rather [3:52 pm] aidan.x.skinner firewall sounds reasonable [3:52 pm] partychat4 ["rhs"] I'm also fairly relaxed, I just had the urge to mock your usage of the term whitelist. [3:52 pm] aidan.x.skinner it's not a great term really. but greylists are something else again [3:53 pm] aidan.x.skinner whiteandblacklist seemed a little unwieldy [3:54 pm] partychat4 ["rhs"] but I'm not particularly fussy either way [3:54 pm] aidan.x.skinner firewall is more accurate, i'm going to go with that [4:06 pm] partychat4 ["marnie"] honest answers, does anyone here really care about what we call it ? [4:07 pm] partychat4 ["marnie"] cos I know some people who do [6:13 pm] partychat4 [jonathan.ro...@gmail.com] i care that what we call it is easy to explain [6:13 pm] partychat4 [jonathan.ro...@gmail.com] i think the sub elements might be and , i don't know what to call the containing element Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (comment added)
Comment Added : qpid : Re: IP Whitelisting IP Whitelisting commented on by Jonathan Robie (Feb 04, 2009). Comment: Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (comment added)
Comment Added : qpid : Re: IP Whitelisting IP Whitelisting commented on by Jonathan Robie (Feb 04, 2009). Comment: I prefer to call this an "access list for a server". It's not a firewall - you clearly say that in your description. And I think we're moving into calling these things servers rather than brokers, for consistency with AMQP. An access list contains access elements. Each access element specifies the permissions for a network or a hostname: As for the virtualhost idea, I think I would do that by nesting accesslist: Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java Broker Configuration Design (page edited)
Page Edited : qpid : Java Broker Configuration Design Java Broker Configuration Design has been edited by Martin Ritchie (Feb 04, 2009). (View changes) Content: Java Broker Configuration Design The Java broker configuration xml files have grown in complexity through M4 and reached a state where we need to look at the simplifying the design to help both our users and our selves. QPID-1612 Current Issues We use an XML format but don't validate the XML. We can't validate because we use dynamic tags in the Virutalhost sections. We don't ensure that all configuration values are used in the code. We have two three locations where virtualhost information is declared. Information is duplicated rather than defaulted, such as Virtualhost store class. Advanced configuration options are available and highlighted via the config file but we would never advocate their use. Improvement Plans As we are currently using Commons Configuration it would make sense to made use to use as much of their code rather than writing our own. Steps to improving design: Start using a ConfigurationFactory Allows us to split up our configuration moving the Virtualhost sections to it's own file. Allows validation of the main configuration file. Allows an optional user-config.xml file to be included where users can easily override default values. Redesign Virtualhost file to allow validation Allow default values for all Virtualhosts Investigate mechanism to allow plugins and broker elements to identify sections of configuration they use. Fail to start broker if there are missing sections of the configuration. Fail to start broker if there are unused sections of the configuration. Example for new config.xml that would work with Commons ConfigurationFactory: Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (comment added)
Comment Added : qpid : Re: IP Whitelisting IP Whitelisting commented on by Jonathan Robie (Feb 04, 2009). Comment: Here is an alternative for those who prefer "firewall" and "rule" elements: As for the virtualhost idea, I think I would do that by nesting firewall: Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (comment added)
Comment Added : qpid : Re: IP Whitelisting IP Whitelisting commented on by Jonathan Robie (Feb 04, 2009). Comment: Here's a variant for those who prefer "firewall" and "rule": As for the virtualhost idea, I think I would do that by nesting firewall: Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Download (page edited)
Page Edited : qpid : Download Download has been edited by Marnie McCormack (Feb 05, 2009). (View changes) Content: Production Releases These releases are well tested and appropriate for production use. M4 is the latest release of Qpid. Qpid supports the latest version of AMQP, 0-10, and some components also the AMQP 0-8 and 0-9, earlier versions. For details on compatibility among releases, see: AMQP Release Compatibility for Qpid If you have any questions about these releases, please mail the user list user list M4 Release Management tools cmd line (packaged with python) http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz QMan JMX bridge, WS-DM (packaged with Java) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz Broker & Clients Full release & keys http://www.apache.org/dist/qpid/M4/ C++ broker & client http://www.apache.org/dist/qpid/M4/qpid-cpp-M4.tar.gz Java broker & client http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz C# (.NET, WCF, Excel) 0-10 client (C++ Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-10-M4.zip C# (.NET) 0-8 client (Java Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-8-M4.zip Ruby client http://www.apache.org/dist/qpid/M4/qpid-ruby-M4.tar.gz Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz Pre-built Linux Packages Fedora 8, 9, 10 On Fedora, Qpid can be installed using yum. Because Java RPMs are not yet available in Fedora repos, the Java client is not in these distributions. To install the server: # yum install qpidd To install C++ and Python clients: # yum install qpidc-devel # yum install amqp python-qpid To install documentation: # yum install rhm-docs To install persistence using an external store module: # yum install rhm Development Releases Development releases are intended for testing and previewing new features. They have been tested and meet reasonable quality standards. The development builds have been moved. We will soon post information on how to access them. Source Code Repository The latest version of the code is always available in the Source Repository. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Download (page edited)
Page Edited : qpid : Download Download has been edited by Marnie McCormack (Feb 05, 2009). (View changes) Content: Production Releases These releases are well tested and appropriate for production use. M4 is the latest release of Qpid. Qpid supports the latest version of AMQP, 0-10, and some components also the AMQP 0-8 and 0-9, earlier versions. For details on compatibility among releases, see: AMQP Release Compatibility for Qpid If you have any questions about these releases, please mail the user list user list M4 Release Broker & Clients Full release & keys http://www.apache.org/dist/qpid/M4/ C++ broker & client http://www.apache.org/dist/qpid/M4/qpid-cpp-M4.tar.gz Java broker & client http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz C# (.NET, WCF, Excel) 0-10 client (C++ Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-10-M4.zip C# (.NET) 0-8 client (Java Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-8-M4.zip Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz Ruby client http://www.apache.org/dist/qpid/M4/qpid-ruby-M4.tar.gz Management tools cmd line (packaged with python) http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz QMan JMX bridge, WS-DM (packaged with Java) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz C++ Convenience Packages Pre-built Linux Packages Fedora 8, 9, 10 On Fedora, Qpid can be installed using yum. Because Java RPMs are not yet available in Fedora repos, the Java client is not in these distributions. To install the server: # yum install qpidd To install C++ and Python clients: # yum install qpidc-devel # yum install amqp python-qpid To install documentation: # yum install rhm-docs To install persistence using an external store module: # yum install rhm Development Releases Development releases are intended for testing and previewing new features. They have been tested and meet reasonable quality standards. The development builds have been moved. We will soon post information on how to access them. Source Code Repository The latest version of the code is always available in the Source Repository. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Download (page edited)
Page Edited : qpid : Download Download has been edited by Marnie McCormack (Feb 05, 2009). (View changes) Content: Production Releases These releases are well tested and appropriate for production use. M4 is the latest release of Qpid. Qpid supports the latest version of AMQP, 0-10, and some components also the AMQP 0-8 and 0-9, earlier versions. For details on compatibility among releases, see: AMQP Release Compatibility for Qpid If you have any questions about these releases, please mail the user list user list M4 Release Broker & Clients Full release & keys http://www.apache.org/dist/qpid/M4/ C++ broker & client http://www.apache.org/dist/qpid/M4/qpid-cpp-M4.tar.gz Java broker & client http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz C# (.NET, WCF, Excel) 0-10 client (C++ Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-10-M4.zip C# (.NET) 0-8 client (Java Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-8-M4.zip Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz Ruby client http://www.apache.org/dist/qpid/M4/qpid-ruby-M4.tar.gz Management tools cmd line (packaged with python) http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz QMan JMX bridge, WS-DM (packaged with Java) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz C++ Convenience Packages Pre-built Linux Packages Fedora 8, 9, 10 On Fedora, Qpid can be installed using yum. Because Java RPMs are not yet available in Fedora repos, the Java client is not in these distributions. To install the server: # yum install qpidd To install C++ and Python clients: # yum install qpidc-devel # yum install amqp python-qpid To install documentation: # yum install rhm-docs To install persistence using an external store module: # yum install rhm Development Releases Development releases are intended for testing and previewing new features. They have been tested and meet reasonable quality standards. The development builds have been moved. We will soon post information on how to access them. Source Code Repository The latest version of the code is always available in the Source Repository. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (comment added)
Comment Added : qpid : Re: IP Whitelisting IP Whitelisting commented on by Aidan Skinner (Feb 05, 2009). Comment: I'm going to put firewall into the virtualhosts section and one in the main section>. Virtualhosts will get evaluated first, then the global one. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (page edited)
Page Edited : qpid : IP Whitelisting IP Whitelisting has been edited by Aidan Skinner (Feb 05, 2009). (View changes) Content: While using a properly configured firewall is the obvious way to restrict access to a broker, it's occasionally desireable to do this on the broker itself. Configuration The access restrictions apply either to the server as a whole or too a particular virtualhost. Rules are evaluated in the virtualhost first, then the server as a whole (most-specific to least-specific). This allows whole netblocks to be restricted from all but one virtualhost. A element would appear in either the section or inside the equivalent element. Elements inside would be or path"/>. would read the file specified at path, which would contain an . would contain further entries, but not . If the host attribute was specified the broker would check it's hostname against the attribute and cause a fatal error on startup if it did not match. would have action, hostname and network attributes. Action and one of host or network would be mandatory. The action attribute would be either allow or deny. Host contains a comma seperated list of regexps against which it would match the reverse dns lookup of the connecting IP. Network contains a comma seperated list of of CIDR networks against which the IP would be matched. The first which matched the connection would apply. If no rules applied, the default-action would apply. For example, the following could appear in config.xml: default-action="" class="code-quote">"deny"> "allow" hostname="*.qpid.apache.org"/> "/path/to/file" /> "allow" network="192.168.1.0/24" /> "allow" network="10.0.0.0/8" /> and /path/to/file could contain: "broker1.qpid.apache.org"> "deny" network="192.168.1.0/24" virtualhost="prod"/> any machine in the qpid.apache.org domain could access dev. Any machine in the 192.168.1.0/24 network would be allowed access to any virtualhost other than prod Any machine in the 10.0.0.0/8 network would be allowed access to any virtual host Any other machine would be denied access. Changes would be possible while broker was running via commons-configuration magic when the file is editted. Existing connections would be unaffected by a new rule. Implementation An IPRestriction class would extend ACLPlugin which listens for ConnectionOpen and checks against the list of rules. It will use the mechanism described at http://qpid.apache.org/java-authorization-plugins.html. IPRestriction would parse the config file, compiling into an ordered list of Rule classes, which would have two methods: boolean match(InetAddress IPAddress) and boolean allow(). During the authorization phase it would iterate through these Rules until match() returns true when it will authorize or not according to the value returned by allow(). Because of the way that Java pre-6 caches dns forever, a small value for networkaddress.cache.ttl is necessary. QPID-1583 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (page edited)
Page Edited : qpid : IP Whitelisting IP Whitelisting has been edited by Aidan Skinner (Feb 05, 2009). (View changes) Content: While using a properly configured firewall is the obvious way to restrict access to a broker, it's occasionally desireable to do this on the broker itself. Configuration The access restrictions apply either to the server as a whole or too a particular virtualhost. Rules are evaluated in the virtualhost first, then the server as a whole (most-specific to least-specific). This allows whole netblocks to be restricted from all but one virtualhost. A element would appear in either the section or inside the equivalent element. Elements inside would be or path"/>. would read the file specified at path, which would contain an . would contain further entries, but not . If the host attribute was specified the broker would check it's hostname against the attribute and cause a fatal error on startup if it did not match. would have action, hostname and network attributes. Action and one of host or network would be mandatory. The action attribute would be either allow or deny. Host contains a comma seperated list of regexps against which it would match the reverse dns lookup of the connecting IP. Network contains a comma seperated list of of CIDR networks against which the IP would be matched. The first which matched the connection would apply. If no rules applied, the default-action would apply. For example, the following could appear in config.xml: default-action="" class="code-quote">"deny"> "allow" hostname="*.qpid.apache.org"/> "/path/to/file" /> "allow" network="192.168.1.0/24" /> "allow" network="10.0.0.0/8" /> and /path/to/file could contain: "broker1.qpid.apache.org"> "deny" newtork="192.168.1.0/24" virtualhost="prod"/> any machine in the qpid.apache.org domain could access dev. Any machine in the 192.168.1.0/24 network would be allowed access to any virtualhost other than prod Any machine in the 10.0.0.0/8 network would be allowed access to any virtual host Any other machine would be denied access. Changes would be possible while broker was running via commons-configuration magic when the file is editted. Existing connections would be unaffected by a new rule. Implementation An IPRestriction class would extend ACLPlugin which listens for ConnectionOpen and checks against the list of rules. It will use the mechanism described at http://qpid.apache.org/java-authorization-plugins.html. IPRestriction would parse the config file, compiling into an ordered list of Rule classes, which would have two methods: boolean match(InetAddress IPAddress) and boolean allow(). During the authorization phase it would iterate through these Rules until match() returns true when it will authorize or not according to the value returned by allow(). Because of the way that Java pre-6 caches dns forever, a small value for networkaddress.cache.ttl is necessary. QPID-1583 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Java authorization plugins (page edited)
Page Edited : qpid : Java authorization plugins Java authorization plugins has been edited by Aidan Skinner (Feb 05, 2009). (View changes) Content: It would be useful to provide pluggable authorization mechanisms. A SecurityManager interface would collect all the available plugins from OSGi and present a singelton interface to frame handlers and JMX methods. Methods such as boolean allowAccess(Session session, VirtualHost host) or boolean allowBind(Session session, Exchange exch, String routingkey, Queue queue) would be called and return true or false depending on if the action was allowed. Each plugin would be processed until one returned false, at which point access would be denied. If all plugins allowed access, true would be returned. This would allow arbitrary and custom authorization mechanisms to be plugged into the broker, potentially including things like access restricted by IP Address or looking up information in LDAP. Or capriciously allowing or denying access based on a PRNG. At broker startup each child tag in the section of the server configuration would be parsed and the plugins queried if they supported it. If they did, then they would be added to the list of global plugins. When a virtualhost is instantiated the section of the virtualhost's configuration would be parsed, the relevant plugins would be passed in that configuration section and added to a per-virtualhost list of plugins in the security manager. When evaluating the plugins, the virtualhost specific plugins would be evaluated first, then the global list of plugins. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Download (page edited)
Page Edited : qpid : Download Download has been edited by Carl Trieloff (Feb 05, 2009). (View changes) Content: Production Releases These releases are well tested and appropriate for production use. M4 is the latest release of Qpid. Qpid supports the latest version of AMQP 0-10, and some components also the AMQP 0-8 and 0-9, earlier versions. The Java Broker and Client provide protocol negotiation. For details on cross component compatibility among releases, see: AMQP Release Compatibility for Qpid If you have any questions about these releases, please mail the user list user list M4 Release Broker & Clients Component Download AMQP 0-10 AMQP 0-8/0-9 Full release & keys http://www.apache.org/dist/qpid/M4/ Y Y C++ broker & client http://www.apache.org/dist/qpid/M4/qpid-cpp-M4.tar.gz Y Java broker & client http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz client Y C# (.NET, WCF, Excel) 0-10 client (C++ Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-10-M4.zip Y C# (.NET) 0-8 client (Java Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-8-M4.zip Y Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz Y Y Ruby client http://www.apache.org/dist/qpid/M4/qpid-ruby-M4.tar.gz Y Y Management tools for AMQP 0-10 cmd line (packaged with python) http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz QMan JMX bridge, WS-DM (packaged with Java) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz C++ Convenience Packages Pre-built Linux Packages Fedora 8, 9, 10 On Fedora, Qpid can be installed using yum. Because Java RPMs are not yet available in Fedora repos, the Java client is not in these distributions. To install the server: # yum install qpidd To install C++ and Python clients: # yum install qpidc-devel # yum install amqp python-qpid To install documentation: # yum install rhm-docs To install persistence using an external store module: # yum install rhm Development Releases Development releases are intended for testing and previewing new features. They have been tested and meet reasonable quality standards. The development builds have been moved. We will soon post information on how to access them. Source Code Repository The latest version of the code is always available in the Source Repository. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: Download (page edited)
Page Edited : qpid : Download Download has been edited by Carl Trieloff (Feb 05, 2009). (View changes) Content: Production Releases These releases are well tested and appropriate for production use. M4 is the latest release of Qpid. Qpid supports the latest version of AMQP 0-10, and some components also the AMQP 0-8 and 0-9, earlier versions. The Java Broker and Client provide protocol negotiation. For details on cross component compatibility among releases, see: AMQP Release Compatibility for Qpid If you have any questions about these releases, please mail the user list user list M4 Release Broker & Clients Component Download AMQP 0-10 AMQP 0-8/0-9 Full release & keys http://www.apache.org/dist/qpid/M4/ Y Y C++ broker & client http://www.apache.org/dist/qpid/M4/qpid-cpp-M4.tar.gz Y Java broker & client http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz client Y C# (.NET, WCF, Excel) 0-10 client (C++ Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-10-M4.zip Y C# (.NET) 0-8 client (Java Broker Compatible) http://www.apache.org/dist/qpid/M4/qpid-dotnet-0-8-M4.zip Y Python client http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz Y Y Ruby client http://www.apache.org/dist/qpid/M4/qpid-ruby-M4.tar.gz Y Y Management tools Component Download AMQP 0-10 cmd line (packaged with python) http://www.apache.org/dist/qpid/M4/qpid-python-M4.tar.gz Y QMan JMX bridge, WS-DM (packaged with Java) http://www.apache.org/dist/qpid/M4/qpid-java-M4.tar.gz Y C++ Convenience Packages Pre-built Linux Packages Fedora 8, 9, 10 On Fedora, Qpid can be installed using yum. Because Java RPMs are not yet available in Fedora repos, the Java client is not in these distributions. To install the server: # yum install qpidd To install C++ and Python clients: # yum install qpidc-devel # yum install amqp python-qpid To install documentation: # yum install rhm-docs To install persistence using an external store module: # yum install rhm Development Releases Development releases are intended for testing and previewing new features. They have been tested and meet reasonable quality standards. The development builds have been moved. We will soon post information on how to access them. Source Code Repository The latest version of the code is always available in the Source Repository. Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org
[CONF] Apache Qpid: IP Whitelisting (page edited)
Page Edited : qpid : IP Whitelisting IP Whitelisting has been edited by Aidan Skinner (Feb 05, 2009). (View changes) Content: While using a properly configured firewall is the obvious way to restrict access to a broker, it's occasionally desireable to do this on the broker itself. Configuration The access restrictions apply either to the server as a whole or too a particular virtualhost. Rules are evaluated in the virtualhost first, then the server as a whole (most-specific to least-specific). This allows whole netblocks to be restricted from all but one virtualhost. A element would appear in either the section or inside the equivalent element. Elements inside would be or path"/>. would read the file specified at path, which would contain an . would contain further entries, but not . If the host attribute was specified the broker would check it's hostname against the attribute and cause a fatal error on startup if it did not match. would have action, virtualhost, hostname and network attributes. Action and one of host or network would be mandatory. Virtualhost would be optional, if specified the rule would apply only to that virtualhost. The action attribute would be either allow or deny. Host contains a comma seperated list of regexps against which it would match the reverse dns lookup of the connecting IP. Network contains a comma seperated list of of CIDR networks against which the IP would be matched. The first which matched the connection would apply. If no rules applied, the default-action would apply. For example, the following could appear in config.xml: default-action="" class="code-quote">"deny"> "allow" hostname="*.qpid.apache.org" virtualhost="dev"/> "/path/to/file" /> "allow" network="192.168.1.0/24" /> "allow" network="10.0.0.0/8" /> and /path/to/file could contain: "broker1.qpid.apache.org"> "deny" newtork="192.168.1.0/24" virtualhost="prod"/> any machine in the qpid.apache.org domain could access dev. Any machine in the 192.168.1.0/24 network would be allowed access to any virtualhost other than prod Any machine in the 10.0.0.0/8 network would be allowed access to any virtual host Any other machine would be denied access. Changes would be possible while broker was running via commons-configuration magic when the file is editted. Existing connections would be unaffected by a new rule. Implementation An IPRestriction class would extend ACLPlugin which listens for ConnectionOpen and checks against the list of rules. It will use the mechanism described at http://qpid.apache.org/java-authorization-plugins.html. IPRestriction would parse the config file, compiling into an ordered list of Rule classes, which would have two methods: boolean match(InetAddress IPAddress) and boolean allow(). During the authorization phase it would iterate through these Rules until match() returns true when it will authorize or not according to the value returned by allow(). Because of the way that Java pre-6 caches dns forever, a small value for networkaddress.cache.ttl is necessary. QPID-1583 Powered by Atlassian Confluence (Version: 2.2.9 Build:#527 Sep 07, 2006) - Bug/feature request Unsubscribe or edit your notifications preferences - Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org