diff --git a/2007-april.md b/2007-april.md new file mode 100644 index 0000000..3a988fe --- /dev/null +++ b/2007-april.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- 2007 April + +[Developers](developers.html) > [Board Reports](board-reports.html) > [2007 April](2007-april.html) + + +April 2007 Report +----------------- + +* [ActiveMQ 4.1.1 Released](#) +* voted in a new committer, John Heitmann +* the developer and user lists continue to be very active + diff --git a/40-rc-1-guide.md b/40-rc-1-guide.md new file mode 100644 index 0000000..a6943a0 --- /dev/null +++ b/40-rc-1-guide.md @@ -0,0 +1,47 @@ +Apache ActiveMQ ™ -- 4.0 RC 1 Guide + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Release Plans](release-plans.html) > [4.0 RC 1 Guide](40-rc-1-guide.html) + + +ActiveMQ 4.0-RC-1 Release Guide +=============================== + +General Release Information +--------------------------- + +* [Current RoadMap](http://jira.activemq.org/jira/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Release Guide](release-guide.html) +* [Signing Releases](http://wiki.apache.org/incubator/SigningReleases) +* [Apache Mirror Guidelines](http://apache.org/dev/mirrors.html) + +Release Manager +--------------- + +**Hiram Chirino** + +Special issues +-------------- + +We are still in the Incubator so need to ensure that all the proper disclaimers are in place and that the artifacts are all properly named **incubator-activemq**. + +Open Issues Holding up the Release +---------------------------------- + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +JIRA Issues Macro: Macro params are invalid + +Issues Resolved for this Release +-------------------------------- + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +JIRA Issues Macro: Macro params are invalid + +How to Help +----------- + +Everyone in the ActiveMQ community can help with releases; users, developers, commmiters are all encouraged to test out a release and post any comments to the [activemq-dev@ mailing list](mailing-lists.html) or create a [JIRA](https://issues.apache.org/activemq/browse/AMQ) issue. + +ActiveMQ is available in both source and binary distributions. See [Getting Started](getting-started.html). + diff --git a/58-migration-guide.md b/58-migration-guide.md new file mode 100644 index 0000000..b707d0a --- /dev/null +++ b/58-migration-guide.md @@ -0,0 +1,54 @@ +Apache ActiveMQ ™ -- 5.8 Migration Guide + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.8.0 Release](activemq-580-release.html) > [5.8 Migration Guide](58-migration-guide.html) + + +There are some changes in 5.8 that may require some code change + +1. New modules may effect your maven pom dependencies + `activemq-core` has been replaced with `activemq-client` and `activemq-broker`. The various message stores have their own activemq-xx-store module. The uber module `activemq-all` remains. +2. Changed JMX Mbean ObjectNames will effect scripts or tools that directly reference Mbean names + All mbeans now share the type=Broker attribute, which gives them containment. In this way, consumers hang off of destinations, which hang off the broker. + The different Mbean types are identified by the presence of specific identifiers in their ObjectNames. The mapping from old to new ObjectName is as follows: + + Type + + Old Name + + New Name + + Broker + + Type=Broker + + type=Broker + + Destination + + Type=Queue|Topic,Destination= + + type=Broker,destinationType=Queue|Topic,destinationName= + + Connector + + Type=Connector + + type=Broker,connector=clientConnectors + + NetworkConnector + + Type=NetworkConnector + + type=Broker,connector=networkConnectors + + Connection + + Type=Connection + + type=Broker,connector=*,connectionViewType=remoteAddress|clientId + +3. OSGi integration has changed. The full details are at [OSGi Integration](osgi-integration.html). In summary: + 1. There is a single uber OSGI bundle + 2. The broker and webconsole are now configured via config admin pid files through an OSGi managed service factory. +4. The ActiveMQ binary file `bin/run.jar` has been renamed to `bin/activemq.jar`. + diff --git a/59-migration-guide.md b/59-migration-guide.md new file mode 100644 index 0000000..9bd3c11 --- /dev/null +++ b/59-migration-guide.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- 5.9 Migration Guide + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.9.0 Release](activemq-590-release.html) > [5.9 Migration Guide](59-migration-guide.html) + + +There are some changes in 5.9 that may require user intervention + +1. Schema change to JDBC Persistence Adapter. XID column type change. + +* If you use XA transactions you need to ensure there are no XA transactions pending completion before you upgrade. Some mode detail in [AMQ-4628](https://issues.apache.org/jira/browse/AMQ-4628) + diff --git a/HEADER.md b/HEADER.md new file mode 100644 index 0000000..52369ea --- /dev/null +++ b/HEADER.md @@ -0,0 +1,6 @@ +Apache ActiveMQ XML Schemas +=========================== + +This site contains all the various versions of the XML Schema Documents for the [Apache ActiveMQ project](http://activemq.apache.org/) + +For details of how to use the XML Schema files, particularly with Spring, please see the [XML Reference](http://activemq.apache.org/xml-reference.html) \ No newline at end of file diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..52369ea --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,6 @@ +Apache ActiveMQ XML Schemas +=========================== + +This site contains all the various versions of the XML Schema Documents for the [Apache ActiveMQ project](http://activemq.apache.org/) + +For details of how to use the XML Schema files, particularly with Spring, please see the [XML Reference](http://activemq.apache.org/xml-reference.html) \ No newline at end of file diff --git a/activation-spec-properties.md b/activation-spec-properties.md new file mode 100644 index 0000000..670f371 --- /dev/null +++ b/activation-spec-properties.md @@ -0,0 +1,199 @@ +Apache ActiveMQ ™ -- Activation Spec Properties + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Resource Adapter](resource-adapter.html) > [Activation Spec Properties](activation-spec-properties.html) + + +An Activation Spec is used to configure the message delivery to an MDB. The ejb-jar.xml deployment descriptor needs to include a element inside the element like: + + + + destination + queue.testQueue + + + destinationType + javax.jms.Queue + + + +Here, the value for destination is the physical name of the desired destination. The value for destinationType is the class name that defines the type of destination. It should be javax.jms.Queue or javax.jms.Topic. +  + +The Activation Spec properties that can be configured are: + +Property Name + +Required + +Default Value + +Description + +acknowledgeMode + +no + +Auto-acknowledge + +The JMS Acknowledgement mode to use. Valid values are: Auto-acknowledge or Dups-ok-acknowledge + +clientId + +no + +set in resource adapter + +The JMS Client ID to use (only really required for durable topics) + +destinationType + +yes + +null + +The type of destination; a queue or topic + +destination + +yes + +null + +The destination name (queue or topic name) + +enableBatch + +no + +false + +Used to enable transaction batching for increased performance + +maxMessagesPerBatch + +no + +10 + +The number of messages per transaction batch + +maxMessagesPerSessions + +no + +10 + +This is actually the prefetch size for the subscription. (Yes, badly named). + +maxSessions + +no + +10 + +The maximum number of concurrent sessions to use + +messageSelector + +no + +null + +The JMS [Message Selector](selectors.html) to use on the subscription to perform content based routing filtering the messages + +noLocal + +no + +false + +Only required for topic subscriptions; indicates if locally published messages should be included in the subscription or not + +password + +no + +set in resource adapter + +The password for the JMS connection + +subscriptionDurability + +no + +NonDurable + +Whether or not a durable (topic) subscription is required. Valid values are: Durable or NonDurable + +subscriptionName + +no + +null + +The name of the durable subscriber. Only used for durable topics and combined with the clientID to uniquely identify the durable topic subscription + +userName + +no + +set in resource adapter + +The user for the JMS connection + +useRAManagedTransaction + +no + +false + +Typically, a resource adapter delivers messages to an endpoint which is managed by a container. Normally, this container likes to be the one that wants to control the transaction that the inbound message is being delivered on. But sometimes, you want to deliver to a simpler container system that will not be controlling the inbound transaction. In these cases, if you set useRAManagedTransaction to true, the resource adapter will commit the transaction if no exception was generated from the MessageListener and rollback if an exception is thrown. + +initialRedeliveryDelay + +no + +1000 + +The delay before redeliveries start. Also configurable on the ResourceAdapter + +maximumRedeliveries + +no + +5 + +The maximum number of redeliveries or -1 for no maximum. Also configurable on the ResourceAdapter + +redeliveryBackOffMultiplier + +no + +5 + +The multiplier to use if exponential back off is enabled. Also configurable on the ResourceAdapter + +redeliveryUseExponentialBackOff + +no + +false + +To enable exponential backoff. Also configurable on the ResourceAdapter + +useJndi + +no + +false + +when true, use destination as a jndi name + +Maximising Throughput of MDBs + +If you want to maximise throughput of MDBs you should really set the **maxSessions** to something fairly large to increase the concurrency. Then set **maxMessagesPerSessions** to something big (say) 1000. + +This assumes you have large numbers of messages available (say more than **maxSessions** \* **maxMessagesPerSession**). Otherwise the [prefetch](what-is-the-prefetch-limit-for.html) will end up [starving other consumers](i-do-not-receive-messages-in-my-second-consumer.html). + +So if you don't have that many messages available, but maybe they take a while to process then you might want to set a lower value of **maxMessagesPerSessions** + diff --git a/active-groups.md b/active-groups.md new file mode 100644 index 0000000..a7f1182 --- /dev/null +++ b/active-groups.md @@ -0,0 +1,23 @@ +Apache ActiveMQ ™ -- Active Groups + +[Features](features.html) > [Active Groups](active-groups.html) + + +Active Groups is a dynamic collaboration framework so simplify message passing and shared state between members of the group. It is available in ActiveMQ 6.0 + +Active Groups includes the following: + +* Dynamic membership information +* broadcast messaging +* point-to-point +* in boxes +* Distributed state (Map) +* Map change listeners +* write locks +* lock expiration +* optional state and lock removal when a member leaves +* automatic state and lock replication and failover +* configurable heartbeats + +Active Groups is peer based collaboration only - though the underlying transport is JMS (which can be peer based too). Although any JMS provider can be used, ActiveGroups can use the membership information available through ActiveMQ to supplement its heart beat infrastructure. + diff --git a/active-groups.md:qq b/active-groups.md:qq new file mode 100644 index 0000000..870bcfd --- /dev/null +++ b/active-groups.md:qq @@ -0,0 +1,23 @@ +Apache ActiveMQ ™ -- Active Groups + +[Features](features.html) > [Active Groups](active-groups.html) + + +Active Groups is a dynamic collaboration framework so simplify message passing and shared state between members of the group. It is available in ActiveMQ 6.0 + +Active Groups includes the following: + +* Dynamic membership information +* broadcast messaging +* point-to-point +* in boxes +* Distributed state (Map) +* Map change listeners +* write locks +* lock expiration +* optional state and lock removal when a member leaves +* automatic state and lock replication and failover +* configurable heartbeats + +Active Groups is peer based collaboration only - though the underlying transport is JMS (which can be peer based too). Although any JMS provider can be used, ActiveGroups can use the membership information available through ActiveMQ to supplement its heart beat infrastructure. + diff --git a/active-groups.md:qq:qq b/active-groups.md:qq:qq new file mode 100644 index 0000000..870bcfd --- /dev/null +++ b/active-groups.md:qq:qq @@ -0,0 +1,23 @@ +Apache ActiveMQ ™ -- Active Groups + +[Features](features.html) > [Active Groups](active-groups.html) + + +Active Groups is a dynamic collaboration framework so simplify message passing and shared state between members of the group. It is available in ActiveMQ 6.0 + +Active Groups includes the following: + +* Dynamic membership information +* broadcast messaging +* point-to-point +* in boxes +* Distributed state (Map) +* Map change listeners +* write locks +* lock expiration +* optional state and lock removal when a member leaves +* automatic state and lock replication and failover +* configurable heartbeats + +Active Groups is peer based collaboration only - though the underlying transport is JMS (which can be peer based too). Although any JMS provider can be used, ActiveGroups can use the membership information available through ActiveMQ to supplement its heart beat infrastructure. + diff --git a/active-groups2.md b/active-groups2.md new file mode 100644 index 0000000..a6e1414 --- /dev/null +++ b/active-groups2.md @@ -0,0 +1 @@ +[object Object] \ No newline at end of file diff --git a/activemq-11-release.md b/activemq-11-release.md new file mode 100644 index 0000000..35406f6 --- /dev/null +++ b/activemq-11-release.md @@ -0,0 +1,55 @@ +Apache ActiveMQ ™ -- ActiveMQ 1.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 1.1 Release](activemq-11-release.html) + + +New and Noteworthy +------------------ + +This release represents a major increase in functionality; the new features in this release are:- + +* distributed queues and topics and clusters of message brokers +* auto-reconnection of clients across a cluster of brokers +* support for high performance non-durable queues +* wildcard support on queues (as well as topics) +* transaction log and JDBC persistence in addition to JDBM and BDB +* JNDI support for easy integration +* HTTP tunnelling support +* auto-broker discovery using Zeroconf (Apple Rendezvous) for a peer based network using high performance pointcast +* composite destinations support (allowing a publish or subscribe operation on several queues and/or topics in one atomic operation, such as writing to N queues in one operation) +* simpler pure-Java configuration API +* heaps of bug fixes and new test cases + +Download Here +------------- + +Download + +Description + +[activemq-1.1.zip](http://dist.codehaus.org/activemq/distributions/activemq-1.1.zip) + +Binary Distribution in zip package + +[activemq-1.1-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-1.1-src.zip) + +Source Distribution in zip package + +[activemq-1.1.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-1.1.tar.gz) + +Binary Distribution in gz package + +\[activemq-1.1-src.tar.gz + +http://dist.codehaus.org/activemq/distributions/activemq-1.1-src.tar.gz +\] + +Source Distribution in gz package + +Changelog +--------- + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=10632) + diff --git a/activemq-12-release.md b/activemq-12-release.md new file mode 100644 index 0000000..12eb4d5 --- /dev/null +++ b/activemq-12-release.md @@ -0,0 +1,47 @@ +Apache ActiveMQ ™ -- ActiveMQ 1.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 1.2 Release](activemq-12-release.html) + + +New and Noteworthy +------------------ + +This release represents a major increase in functionality; the new features in this release are:- + +* heaps of bug fixes and new test cases + +Download Here +------------- + +Download + +Description + +[activemq-release-1.2.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-1.2.zip) + +Binary Distribution in zip package + +[activemq-release-1.2-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-1.2-src.zip) + +Source Distribution in zip package + +[activemq-release-1.2.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-release-1.2.tar.gz) + +Binary Distribution in gz package + +\[activemq-release-1.2-src.tar.gz + +http://dist.codehaus.org/activemq/distributions/activemq-release-1.2-src.tar.gz +\] + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11120&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-11-release.html) + diff --git a/activemq-13-release.md b/activemq-13-release.md new file mode 100644 index 0000000..fb42784 --- /dev/null +++ b/activemq-13-release.md @@ -0,0 +1,47 @@ +Apache ActiveMQ ™ -- ActiveMQ 1.3 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 1.3 Release](activemq-13-release.html) + + +New and Noteworthy +------------------ + +This release represents a major increase in functionality; the new features in this release are:- + +* heaps of bug fixes and new test cases + +Download Here +------------- + +Download + +Description + +[activemq-release-1.3.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-1.3.zip) + +Binary Distribution in zip package + +[activemq-release-1.3-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-1.3-src.zip) + +Source Distribution in zip package + +[activemq-release-1.3.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-release-1.3.tar.gz) + +Binary Distribution in gz package + +\[activemq-release-1.3-src.tar.gz + +http://dist.codehaus.org/activemq/distributions/activemq-release-1.3-src.tar.gz +\] + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11270&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-12-release.html) + diff --git a/activemq-14-release.md b/activemq-14-release.md new file mode 100644 index 0000000..5ad24cf --- /dev/null +++ b/activemq-14-release.md @@ -0,0 +1,47 @@ +Apache ActiveMQ ™ -- ActiveMQ 1.4 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 1.4 Release](activemq-14-release.html) + + +New and Noteworthy +------------------ + +This release represents a major increase in functionality; the new features in this release are:- + +* heaps of bug fixes and new test cases + +Download Here +------------- + +Download + +Description + +[activemq-release-1.4.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-1.4.zip) + +Binary Distribution in zip package + +[activemq-release-1.4-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-1.4-src.zip) + +Source Distribution in zip package + +[activemq-release-1.4.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-release-1.4.tar.gz) + +Binary Distribution in gz package + +\[activemq-release-1.4-src.tar.gz + +http://dist.codehaus.org/activemq/distributions/activemq-release-1.4-src.tar.gz +\] + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11390&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-13-release.html) + diff --git a/activemq-15-release.md b/activemq-15-release.md new file mode 100644 index 0000000..530b638 --- /dev/null +++ b/activemq-15-release.md @@ -0,0 +1,47 @@ +Apache ActiveMQ ™ -- ActiveMQ 1.5 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 1.5 Release](activemq-15-release.html) + + +New and Noteworthy +------------------ + +This release is mostly a bug fix release:- + +* A few bug fixes for J2EE compliance + +Download Here +------------- + +Download + +Description + +[activemq-release-1.5.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-1.5.zip) + +Binary Distribution in zip package + +[activemq-release-1.5-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-1.5-src.zip) + +Source Distribution in zip package + +[activemq-release-1.5.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-release-1.5.tar.gz) + +Binary Distribution in gz package + +\[activemq-release-1.5-src.tar.gz + +http://dist.codehaus.org/activemq/distributions/activemq-release-1.5-src.tar.gz +\] + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11422&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-14-release.html) + diff --git a/activemq-20-release.md b/activemq-20-release.md new file mode 100644 index 0000000..dfa9cbf --- /dev/null +++ b/activemq-20-release.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- ActiveMQ 2.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 2.0 Release](activemq-20-release.html) + + +New and Noteworthy +------------------ + +This is a major release including lots of new functionality and performance improvements: + +This release includes + +* advisory messages so you can listen to the state of the message fabric +* optimised wire format for higher throughput +* improved persistence engine and closer integration with Apache Derby as the default implementation +* chunking of large messages on transports (transport independent but particularly useful for UDP and multicast or for multiplexing over TCP) +* new message compression support +* full dead letter queue support +* numerous improvements for distributed and remote destinations +* various performance improvements +* improved Message Driven POJO support via the JCA Container +* improvements in the JCA Resource Adapter for easier integration into Geronimo, JBoss and WebLogic + +This new 2.0 wire format is incompatible with previous releases, so when upgrading please be sure to upgrade across your system. The wire format should not change now for some time, certainly not until another major release. + +Download Here +------------- + +Download + +Description + +[activemq-release-2.0.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-2.0.zip) + +Binary Distribution in zip package + +[activemq-release-2.0-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-2.0-src.zip) + +Source Distribution in zip package + +[activemq-release-2.0.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-release-2.0.tar.gz) + +Binary Distribution in gz package + +\[activemq-release-2.0-src.tar.gz + +http://dist.codehaus.org/activemq/distributions/activemq-release-2.0-src.tar.gz +\] + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11420&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-15-release.html) + diff --git a/activemq-21-release.md b/activemq-21-release.md new file mode 100644 index 0000000..5df6f82 --- /dev/null +++ b/activemq-21-release.md @@ -0,0 +1,47 @@ +Apache ActiveMQ ™ -- ActiveMQ 2.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 2.1 Release](activemq-21-release.html) + + +New and Noteworthy +------------------ + +This release includes full support for the high performance journal. Our default persistence mechanism is now the journal for short term persistence and then JDBC (via Apache Derby by default) for long term storage. The journal is regularly checkpointed with the database for high performance and high resiliency. + +This new release includes a number of performance enhancements in both durable and non durable messaging as well as a number of bug fixes. + +Download Here +------------- + +Download + +Description + +[activemq-release-2.1.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-2.1.zip) + +Binary Distribution in zip package + +[activemq-release-2.1-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-release-2.1-src.zip) + +Source Distribution in zip package + +[activemq-release-2.1.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-release-2.1.tar.gz) + +Binary Distribution in gz package + +\[activemq-release-2.1-src.tar.gz + +http://dist.codehaus.org/activemq/distributions/activemq-release-2.1-src.tar.gz +\] + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11499&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-20-release.html) + diff --git a/activemq-3-networks-of-brokers.md b/activemq-3-networks-of-brokers.md new file mode 100644 index 0000000..e7f49ca --- /dev/null +++ b/activemq-3-networks-of-brokers.md @@ -0,0 +1,175 @@ +Apache ActiveMQ ™ -- ActiveMQ 3 Networks of Brokers + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [Previous Versions](previous-versions.html) > [ActiveMQ 3 Networks of Brokers](activemq-3-networks-of-brokers.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Old Link +-------- + +Please see [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/activemq-3-transport-configurations.md b/activemq-3-transport-configurations.md new file mode 100644 index 0000000..ac54b3e --- /dev/null +++ b/activemq-3-transport-configurations.md @@ -0,0 +1,427 @@ +Apache ActiveMQ ™ -- ActiveMQ 3 Transport Configurations + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [Previous Versions](previous-versions.html) > [ActiveMQ 3 Transport Configurations](activemq-3-transport-configurations.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Some of the transports support configuration, such as timeout values, maximum retry count and so forth. To configure the transports you can use the URI query syntax. e.g. + + + +If you are using a list of URLs like above with the _list_ and _reliable_ protocols you can wrap the list in parens to be able to configure the list. e.g. + + + +### Generic configuration options + +Option Name + +Default Value + +Type + +brokerXmlConfig + +null + +String + +cachingEnabled + +true + +boolean + +clientID + +null + +String + +copyMessageOnSend + +true + +boolean + +disableTimeStampsByDefault + +false + +boolean + +doMessageCompression + +true + +boolean + +doMessageFragmentation + +true + +boolean + +messageCompressionLimit + +32768 + +int + +messageCompressionStrategy + +0 + +int + +messageFragmentationLimit + +65536 + +int + +optimizedMessageDispatch + +false + +boolean + +password + +null + +String + +prepareMessageBodyOnSend + +true + +boolean + +turboBoost + +true + +boolean + +useAsyncSend + +true + +boolean + +useEmbeddedBroker + +false + +boolean + +userName + +null + +String + +wireFormat + +default + +String + +noDelay + +false + +boolean + +#### brokerXmlConfig + +Sets the [Xml Configuration](xml-configuration.html "Xml Configuration") file used to configure the ActiveMQ broker via Spring if using embedded mode. The filename is assumed to be on the classpath unless a URL is specified. So a value of + + + +would be assumed to be on the classpath whereas + + + +would use the file system. Any valid URL string is supported. + +#### cachingEnabled + +Provides optimisations on the wire format (caching data at each end and using references to it to minmise the message size + +#### clientID + +Used to set the JMS clientID of connection. + +#### copyMessageOnSend + +Use to avoid the overhead of doing a deep copy of the JMS message everytime the message is sent. + +#### disableTimeStampsByDefault + +Use to avoid the overhead of setting a timestamp on each message produced. + +#### doMessageCompression + +If messages should be compressed. + +#### doMessageFragmentation + +If messages should be chunked into smaller fragments on the clients side. + +#### messageCompressionLimit + +Data size above which compression will be used + +#### messageCompressionStrategy + +The compression strategy to use when compressing messages. Defaults to the value of java.util.zip.Deflater.DEFAULT_STRATEGY (0). + +#### messageFragmentationLimit + +Data size above which message fragmentation will be used + +#### optimizedMessageDispatch + +#### password + +The user password used to authenticate with the broker. + +#### prepareMessageBodyOnSend + +Causes pre-serialization of messages before send. + +#### turboBoost + +Enables a number of performance enhancements which are disabled by default to ensure J2EE certification. turboBoost turns on a bunch of optimisations: disableTimeStampsByDefault, useAsyncSend, cachingEnabled, and optimizedMessageDispatch and then disables copyMessageOnSend and prepareMessageBodyOnSend + +#### useAsyncSend + +Used to enable asynchronous sending, which boost performance by using another thread to handle sending of messages to the socket. + +#### useEmbeddedBroker + +Set to true if you want start an embeded broker when the first connection is created. + +#### userName + +The user name used to authenticate with the broker. + +#### wireFormat + +Allows a custom wire format to be used; otherwise the default Java wire format is used which is designed for minimum size and maximum speed on the Java platform. + +#### noDelay + +Used to indicate whether messages are dispatched as quickly as possible or not. (The latency versus throughput trade off). When using TCP based transport this option is a means of disabling Nagles which can often improve performance on synchronous sends. + +### TCP configuration options + +* soTimeout (long) sets the [SO_TIMEOUT](http://java.sun.com/j2se/1.4.2/docs/api/java/net/Socket.html#setSoTimeout(int)) value (in milliseconds) on the socket +* socketBufferSize (int) the size of the buffer size on the socket + +### SSL configuration options + +Same as TCP. SSL certificates are configured at the VM level. See [How do I use SSL](how-do-i-use-ssl.html "How do I use SSL") + +### List configuration options + +* maximumRetries (int) the maximum number of times that this protocol will attempt to make a connection on a failure before giving up completely and throwing an exception up to the JMS client. Set this value to zero (or -1) to force an infinite reconnection loop. **Warning**: setting an infinite reconnection loop could hang your JMS client program indefinitely. + +* failureSleepTime (long) the amout of time that the transport will sleep before trying to reconnect again + +* establishConnectionTimeout (long) the timeout value for which a connection must start by on connection start - otherwise the start connection will fail + +* incrementTimeout (boolean) should the timeout increase, exponentially as connection attempts are made + +* maximumTimeout (long) the maximum timeout value that it should increase to (if enabled) + +### Reliable and Remote configuration options + +Same as the List configuration options above - plus + +* keepAliveTimeout (long) the amount of time without receiving a keep alive ping before the connection is considered dead. + +### Peer configuration options + +* discoveryURI (string) the URI used to discover find other nodes; which defaults to using multicast discovery + +* remoteUserName, removePassword (string) the optional login/password to connect to the remote brokers with + +* peerURIs (string) the hard coded URIs of peers to connect to + +### Discovery configuration options + +* channelName (string) provides a way to separate out different logical groups of nodes in the cluster + +### Multicast configuration options + +* timeToLive (int) defaults to 1 so we don't send multicast messages beyond our own local subnet. + +* loopbackMode (boolean) defaults to false so we don't see our own messages + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/activemq-30-release.md b/activemq-30-release.md new file mode 100644 index 0000000..598f832 --- /dev/null +++ b/activemq-30-release.md @@ -0,0 +1,49 @@ +Apache ActiveMQ ™ -- ActiveMQ 3.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 3.0 Release](activemq-30-release.html) + + +New and Noteworthy +------------------ + +This new release includes the following + +* a new 'discovery' transport [protocol](uri-protocols.html) for a pure client-only peer network - a self discovering cluster which automatically finds the brokers available on the network (as opposed to the 'peer' protocol which is a complete peer based JMS network). +* migrated from the org.activemq to org.activemq package name hierarchy +* improved support for more JDBC databases for persistence +* an optimised wire protocol (which is unfortunately not compatible with 2.x) +* more test cases and fixes of the [JCA Container](jca-container.html) +* various performance enhancements and bug fixes + +Download Here +------------- + +Download + +Description + +[activemq-3.0.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.0.zip) + +Binary Distribution in zip package + +[activemq-3.0-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.0-src.zip) + +Source Distribution in zip package + +[activemq-3.0.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.0.tar.gz) + +Binary Distribution in gz package + +[activemq-3.0-src.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.0-src.tar.gz) + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11500&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-21-release.html) + diff --git a/activemq-31-release.md b/activemq-31-release.md new file mode 100644 index 0000000..8057995 --- /dev/null +++ b/activemq-31-release.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- ActiveMQ 3.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 3.1 Release](activemq-31-release.html) + + +New and Noteworthy +------------------ + +This new release includes the following + +* New [Stomp](http://stomp.codehaus.org/) support to make it easy to create cross language clients such as for Ruby or Perl etc. (Python, C and .Net coming soon) +* XPath based selectors and demand based publishing, making it easy to implement [WS-Notification](http://servicemix.org/WS+Notification) on top of ActiveMQ +* a pooling JMS ConnectionFactory for better support of the Spring JMSTemplate outside of a JCA container +* improved JNDI support to allow easy dynamic creation of Queues and Topics, to handle different connection settings and to reuse standard JNDI properties +* Increased support for the number of [databases and JDBC drivers](jdbc-support.html) to include + * Apache Derby + * Oracle + * Sybase + * DB2 + * SQLServer + * Postgresql + * MySQL + * Axion + * HSQL +* improved authentication at the connection and destination level +* More flexible prefetch policy configurations for more control over queue dispatching and performance tuning +* improved support for priority message ordering +* cleaner servlet integration +* better XA integration to allow outbound producers to reuse inbound JMS sessions +* improved support for WebSphere and JBoss +* easier journal file size and checkpoint period configuration +* jabber transport +* various performance enhancements and bug fixes + +Download Here +------------- + +Download + +Description + +[activemq-3.1.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.1.zip) + +Binary Distribution in zip package + +[activemq-3.1-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.1-src.zip) + +Source Distribution in zip package + +[activemq-3.1.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.1.tar.gz) + +Binary Distribution in gz package + +[activemq-3.1-src.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.1-src.tar.gz) + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11501&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-30-release.html) + diff --git a/activemq-32-release.md b/activemq-32-release.md new file mode 100644 index 0000000..f099ead --- /dev/null +++ b/activemq-32-release.md @@ -0,0 +1,50 @@ +Apache ActiveMQ ™ -- ActiveMQ 3.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 3.2 Release](activemq-32-release.html) + + +New and Noteworthy +------------------ + +This new release includes the following + +* Improved [Stomp](http://stomp.codehaus.org/) 1.0 support to make it easy to create cross language clients such as for C, C#, Python, Ruby, Perl and Pike. +* Ajax support now uses OpenRico as the default Ajax library +* the Resource Adaptor now supports batching +* demand based store and forward in networks +* support for Informix JDBC +* updated DTD for the latest Spring +* various performance enhancements and bug fixes + +Download Here +------------- + +Download + +Description + +[activemq-3.2.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.2.zip) + +Binary Distribution in zip package + +[activemq-3.2-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.2-src.zip) + +Source Distribution in zip package + +[activemq-3.2.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.2.tar.gz) + +Binary Distribution in gz package + +[activemq-3.2-src.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.2-src.tar.gz) + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11610&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-31-release.html) + diff --git a/activemq-321-release.md b/activemq-321-release.md new file mode 100644 index 0000000..1c9d3a2 --- /dev/null +++ b/activemq-321-release.md @@ -0,0 +1,42 @@ +Apache ActiveMQ ™ -- ActiveMQ 3.2.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 3.2.1 Release](activemq-321-release.html) + + +New and Noteworthy +------------------ + +This release is a bug fix release and users of previous versions of 3.2 are encouraged to upgrade to this version. + +Download Here +------------- + +Download + +Description + +[activemq-3.2.1.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.2.1.zip) + +Binary Distribution in zip package + +[activemq-3.2.1-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.2.1-src.zip) + +Source Distribution in zip package + +[activemq-3.2.1.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.2.1.tar.gz) + +Binary Distribution in gz package + +[activemq-3.2.1-src.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.2.1-src.tar.gz) + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11715&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-32-release.html) + diff --git a/activemq-322-release.md b/activemq-322-release.md new file mode 100644 index 0000000..fd3ff6c --- /dev/null +++ b/activemq-322-release.md @@ -0,0 +1,42 @@ +Apache ActiveMQ ™ -- ActiveMQ 3.2.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 3.2.2 Release](activemq-322-release.html) + + +New and Noteworthy +------------------ + +This release is a bug fix release and users of previous versions of 3.2 are encouraged to upgrade to this version. + +Download Here +------------- + +Download + +Description + +[activemq-3.2.2.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.2.2.zip) + +Binary Distribution in zip package + +[activemq-3.2.2-src.zip](http://dist.codehaus.org/activemq/distributions/activemq-3.2.2-src.zip) + +Source Distribution in zip package + +[activemq-3.2.2.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.2.2.tar.gz) + +Binary Distribution in gz package + +[activemq-3.2.2-src.tar.gz](http://dist.codehaus.org/activemq/distributions/activemq-3.2.2-src.tar.gz) + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?version=11723&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +You may also want to look at [the previous Changelog](activemq-321-release.html) + diff --git a/activemq-4-connection-uris.md b/activemq-4-connection-uris.md new file mode 100644 index 0000000..7851bf1 --- /dev/null +++ b/activemq-4-connection-uris.md @@ -0,0 +1,251 @@ +Apache ActiveMQ ™ -- ActiveMQ 4 Connection URIs + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Using ActiveMQ 4](using-activemq-4.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ 4 Connection URIs](activemq-4-connection-uris.html) + + +Transport configuration options +------------------------------- + +One of the first kinds of URI you are likely to use is a transport URI to connect to a broker using a kind of transport. Generally TCP or VM are the first transports you'll use. + +Be careful about whitespace + +All of the following URI configurations are based on the java.net.URI class which does not allow whitespace to be used. So if you are using **failover:** or **static:** URIs, do not put any whitespace around the **,** symbol. + +### The AUTO Transport + +Starting with 5.13.0 ActiveMQ has support for automatic wire protocol detection over TCP, SSL, NIO, and NIO SSL.  OpenWire, STOMP, AMQP, and MQTT are supported.  For details see the [AUTO](auto.html) Transport Reference. + +### The VM Transport + +The VM transport allows clients to connect to each other inside the VM without the overhead of the network communication. The connection used is not that of a socket connection but instead uses direct method invocations to enable a high performance embedded messaging system. + +The first client to use the VM connection will boot an embedded broker. Subsequent connections will attach that the same broker. Once all VM connections to the broker have been closed, the embedded broker will automatically shutdown. + +For more information see the [VM Transport Reference](vm-transport-reference.html) + +### The AMQP Transport + +As of 5.8.0 ActiveMQ has support for AMQP. For details see the [AMQP](amqp.html) Transport Reference. + +### The MQTT Transport + +Starting with 5.6.0 ActiveMQ also supports [MQTT](http://mqtt.org/). Its a light weight publish/subscribe messaging transport. See the [MQTT](mqtt.html) Transport Reference for details. + +### The TCP Transport + +The TCP transport allows clients to connect a remote ActiveMQ using a a TCP socket. + +For more information see the [TCP Transport Reference](tcp-transport-reference.html) + +### The NIO Transport + +Same as the TCP transport, except that the [New I/O (NIO)](http://en.wikipedia.org/wiki/New_I/O) package is used, which may provide better performance. The Java NIO package should not be confused with IBM's [AIO4J](http://java.sys-con.com/read/46658.htm) package. + +To switch from TCP to NIO, simply change the scheme portion of the URI. Here's an example as defined within a broker's XML configuration file. + + + ... + + + + ... + + +Trying to use nio transport url on the client side will instantiate the regular TCP transport. + +For more information see the [NIO Transport Reference](nio-transport-reference.html) + +### The SSL Transport + +This allows you to talk over TCP using SSL. + +For more information see the [SSL Transport Reference](ssl-transport-reference.html) + +### The NIO SSL Transport + +Availability + +Available since 5.6 + +Implementing SSL transport over NIO. This allows you to connect large number of SSL clients to a single broker instance. It's server side transport-option only + + + ... + + + + ... + + +Trying to use `nio+ssl` transport url on the client side will instantiate the regular SSL transport. + +### The Peer Transport + +The Peer transport provides a peer-to-peer network with ActiveMQ. What actually happens is the peer transport uses the VM transport to create and connect to a local embedded broker but which configures the embedded broker to establish network connections to other peer embedded brokers. + +For more information see the [Peer Transport Reference](peer-transport-reference.html) + +### The UDP Transport + +This allows you to talk over UDP. + +For more information see the [UDP Transport Reference](udp-transport-reference.html) + +### The Multicast Transport + +This allows you to talk over Multicast. + +For more information see the [Multicast Transport Reference](multicast-transport-reference.html) + +### The HTTP and HTTPS Transport + +This allows the ActiveMQ client and broker to tunnel over HTTP. If the client is not JMS you might want to look at [REST](rest.html) or [Ajax](ajax.html) support instead. + +For more information see the [HTTP and HTTPs Transports Reference](http-and-https-transports-reference.html) + +### The WebSockets Transport + +This transport uses the new HTML5 WebSockets to exchange messages with the broker. For more information see the [WebSockets](websockets.html) Transport Reference + +### The Stomp Transport + +A plain text transport that can be used with many languages. See [Stomp](stomp.html) for more details. + +General Purpose URIs +-------------------- + +You can configure other features via the URI syntax as follows... + +### Connection Configuration URI + +Any Apache ActiveMQ JMS connection can be configured using the URL or explicitly setting properties on the [ActiveMQConnection](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html) or [ActiveMQConnectionFactory](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) objects themselves. + +For more information see [Connection Configuration URI](connection-configuration-uri.html) + +### Destination Options + +You can configure various consumer related options using [Destination Options](destination-options.html) which allow you to configure destinations using URI syntax. + +### Broker Configuration URI + +You can use a [Broker Configuration URI](broker-configuration-uri.html) to configure an embedded broker, either using the BrokerFactory helper class from Java or using the activemq shell script. For more details see [How to Run a Broker](run-broker.html) + +### Configuring Wire Formats + +Any transport which involves marshalling messages onto some kind of network transport like TCP or UDP will typically use the [OpenWire](openwire.html) format. This is configurable to customize how things appear on the wire. + +For more information see [Configuring Wire Formats](configuring-wire-formats.html) + +High Level Protocol URIs +------------------------ + +The following higher level protocols can be configured via URI + +### The Failover Transport + +The Failover transport layers reconnect logic on top of any of the other transports. This is what used to be the Reliable transport in ActiveMQ 3. Its configuration syntax allows you to specify any number of composite URIs. The Failover transport randomly chooses one of the composite URIs and attempts to establish a connection to it. If it does not succeed or if it subsequently fails, a new connection is established to one of the other URIs in the list. + +For more information see the [Failover Transport Reference](failover-transport-reference.html) + +### The Fanout Transport + +The Fanout transport layers reconnect and replicate logic on top of any of the other transports. It is used replicate commands to multiple brokers. + +For more information see the [Fanout Transport Reference](fanout-transport-reference.html) + +Using Discovery +--------------- + +Often when using transports like TCP you want to use [Discovery](discovery.html) to locate the available brokers. This is different from using, say, [Multicast](multicast-transport-reference.html) \- as the actual main communication is over TCP but multicast is purely used to discover the location of brokers. + +### The Discovery Transport + +The Discovery transport works just like the reliable transport, except that it uses a discovery agent to locate the list of URIs to connect to. + +For more information see the [Discovery Transport Reference](discovery-transport-reference.html) + +### The ZeroConf Transport + +The ZeroConf transport provides [Discovery](discovery.html) and it works like the [Discovery Transport](discovery-transport-reference.html) but rather than using our own multicast based discovery mechanism (which allows you to configure the exact multicast address and port, etc.), the [ZeroConf](zeroconf.html) transport is used instead. + +For more information see the [ZeroConf Transport Reference](zeroconf-transport-reference.html) + +### Server side options + +There are a number of options that can be used for changing behaviour on the server for the TransportConnector in the ActiveMQ broker configuration. These are: + +property name + +default + +description + +uri + +null + +the bind address for the transport + +name + +null + +the name of the TransportConnector instance + +discoveryURI + +null + +if set, the multicast discovery address for client connections to find the broker + +enableStatusMonitor + +false + +will monitor connections to determine if they are blocked + +updateClusterClients + +false + +if enabled, will update client connections (if they use the failover:// transport) of changes to the broker cluster + +rebalanceClusterClients + +false + +will automatically rebalance clients across the cluster on changes of topology + +updateClusterClientsOnRemove + +false + +will update clients if a broker is removed from the cluster + +updateClusterFilter + +null + +comma separated list of regular expressions. Brokers with the a name matching the pattern will be included for client updates + +allowLinkStealing + +false + +this is enabled for default for mqtt transport. Link Stealing is where the last of two or more connections with the same id (clinetId for JMS) is deemed the valid connection and the older one is closed by the broker. + +Note: properties in red are version 5.10 (and higher) options only. + +An example configuration would be: + + + ... + + + + ... + + diff --git a/activemq-4.0.xsd.md b/activemq-4.0.xsd.md new file mode 100644 index 0000000..9712308 --- /dev/null +++ b/activemq-4.0.xsd.md @@ -0,0 +1,913 @@ +Schema for namespace: http://activemq.org/config/1.0 + +Root Element +============ + +Element + +Description + +Class + +[broker](#broker) + +An ActiveMQ Message Broker which consists of a number of transport connectors, network connectors and a persistence adaptor + +org.activemq.xbean.XBeanBrokerService + +Element Summary +=============== + +Element + +Description + +Class + +[broker](#broker) + +An ActiveMQ Message Broker which consists of a number of transport connectors, network connectors and a persistence adaptor + +org.activemq.xbean.XBeanBrokerService + +[demandForwardingBridge](#demandForwardingBridge) + +Forwards messages from the local broker to the remote broker based on demand. + +org.activemq.network.DemandForwardingBridge + +[fixedSizedSubscriptionRecoveryPolicy](#fixedSizedSubscriptionRecoveryPolicy) + +This implementation of {@link SubscriptionRecoveryPolicy} will keep a fixed amount of memory available in RAM for message history which is evicted in time order. + +org.activemq.broker.region.policy.FixedSizedSubscriptionRecoveryPolicy + +[forwardingBridge](#forwardingBridge) + +Forwards all messages from the local broker to the remote broker. + +org.activemq.network.ForwardingBridge + +[inboundQueueBridge](#inboundQueueBridge) + +Create an Inbound Queue Bridge + +org.activemq.network.jms.InboundQueueBridge + +[inboundTopicBridge](#inboundTopicBridge) + +Create an Inbound Topic Bridge + +org.activemq.network.jms.InboundTopicBridge + +[jdbcPersistenceAdapter](#jdbcPersistenceAdapter) + +A {@link PersistenceAdapter} implementation using JDBC for persistence storage. This persistence adapter will correctly remember prepared XA transactions, but it will not keep track of local transaction commits so that operations performed against the Message store are done as a single uow. + +org.activemq.store.jdbc.JDBCPersistenceAdapter + +[jmsQueueConnector](#jmsQueueConnector) + +A Bridge to other JMS Queue providers + +org.activemq.network.jms.JmsQueueConnector + +[jmsTopicConnector](#jmsTopicConnector) + +A Bridge to other JMS Topic providers + +org.activemq.network.jms.JmsTopicConnector + +[journalPersistenceAdapter](#journalPersistenceAdapter) + +An implementation of {@link PersistenceAdapter} designed for use with a {@link Journal} and then check pointing asynchronously on a timeout with some other long term persistent storage. + +org.activemq.store.journal.JournalPersistenceAdapter + +[journaledJDBC](#journaledJDBC) + +Creates a default persistence model using the Journal and JDBC + +org.activemq.store.PersistenceAdapterFactoryBean + +[lastImageSubscriptionRecoveryPolicy](#lastImageSubscriptionRecoveryPolicy) + +This implementation of {@link SubscriptionRecoveryPolicy} will only keep the last message. + +org.activemq.broker.region.policy.LastImageSubscriptionRecoveryPolicy + +[managementContext](#managementContext) + +A Flow provides different dispatch policies within the NMR + +org.activemq.broker.jmx.ManagementContext + +[memoryPersistenceAdapter](#memoryPersistenceAdapter) + +org.activemq.store.memory.MemoryPersistenceAdapter + +[networkConnector](#networkConnector) + +org.activemq.network.NetworkConnector + +[noSubscriptionRecoveryPolicy](#noSubscriptionRecoveryPolicy) + +This is the default Topic recovery policy which does not recover any messages. + +org.activemq.broker.region.policy.NoSubscriptionRecoveryPolicy + +[outboundQueueBridge](#outboundQueueBridge) + +Create an Outbound Queue Bridge + +org.activemq.network.jms.OutboundQueueBridge + +[outboundTopicBridge](#outboundTopicBridge) + +Create an Outbound Topic Bridge + +org.activemq.network.jms.OutboundTopicBridge + +[policyEntry](#policyEntry) + +Represents an entry in a {@link PolicyMap} for assigning policies to a specific destination or a hierarchial wildcard area of destinations. + +org.activemq.broker.region.policy.PolicyEntry + +[policyMap](#policyMap) + +Represents a destination based configuration of policies so that individual destinations or wildcard hierarchies of destinations can be configured using different policies. + +org.activemq.broker.region.policy.PolicyMap + +[proxyConnector](#proxyConnector) + +org.activemq.proxy.ProxyConnector + +[quickJournalPersistenceAdapter](#quickJournalPersistenceAdapter) + +An implementation of {@link PersistenceAdapter} designed for use with a {@link Journal} and then check pointing asynchronously on a timeout with some other long term persistent storage. + +org.activemq.store.journal.QuickJournalPersistenceAdapter + +[roundRobinDispatchPolicy](#roundRobinDispatchPolicy) + +Simple dispatch policy that sends a message to every subscription that matches the message. + +org.activemq.broker.region.policy.RoundRobinDispatchPolicy + +[simpleDispatchPolicy](#simpleDispatchPolicy) + +Simple dispatch policy that sends a message to every subscription that matches the message. + +org.activemq.broker.region.policy.SimpleDispatchPolicy + +[simpleJmsMessageConvertor](#simpleJmsMessageConvertor) + +Converts Message from one JMS to another + +org.activemq.network.jms.SimpleJmsMessageConvertor + +[strictOrderDispatchPolicy](#strictOrderDispatchPolicy) + +Dispatch policy that causes every subscription to see messages in the same order. + +org.activemq.broker.region.policy.StrictOrderDispatchPolicy + +[timedSubscriptionRecoveryPolicy](#timedSubscriptionRecoveryPolicy) + +This implementation of {@link SubscriptionRecoveryPolicy} will keep a timed buffer of messages around in memory and use that to recover new subscriptions. + +org.activemq.broker.region.policy.TimedSubscriptionRecoveryPolicy + +[transportConnector](#transportConnector) + +org.activemq.broker.TransportConnector + +[usageManager](#usageManager) + +Used to keep track of how much of something is being used so that a productive working set usage can be controlled. Main use case is manage memory usage. + +org.activemq.memory.UsageManager + +Element Detail +============== + +Element: broker +--------------- + +Attribute + +Type + +Description + +start + +xs:boolean + +Element + +Type + +Description + +abstractApplicationContext + + + +Element: demandForwardingBridge +------------------------------- + +Attribute + +Type + +Description + +clientId + +xs:string + +destinationFilter + +xs:string + +dispatchAsync + +xs:boolean + +prefetchSize + +xs:integer + +Element + +Type + +Description + +localBroker + + + +remoteBroker + + + +Element: fixedSizedSubscriptionRecoveryPolicy +--------------------------------------------- + +Attribute + +Type + +Description + +maximumSize + +xs:integer + +Sets the maximum amount of RAM in bytes that this buffer can hold in RAM + +useSharedBuffer + +xs:boolean + +Element + +Type + +Description + +buffer + + + +Element: forwardingBridge +------------------------- + +Attribute + +Type + +Description + +clientId + +xs:string + +destinationFilter + +xs:string + +dispatchAsync + +xs:boolean + +prefetchSize + +xs:integer + +Element + +Type + +Description + +localBroker + + + +remoteBroker + + + +Element: inboundQueueBridge +--------------------------- + +Attribute + +Type + +Description + +inboundQueueName + +xs:string + +Element: inboundTopicBridge +--------------------------- + +Attribute + +Type + +Description + +inboundTopicName + +xs:string + +Element: jdbcPersistenceAdapter +------------------------------- + +Attribute + +Type + +Description + +adapterClass + +xs:string + +cleanupPeriod + +xs:integer + +useExternalMessageReferences + +xs:boolean + +Element + +Type + +Description + +adapter + + + +dataSource + + + +ds + + + +scheduledThreadPoolExecutor + + + +wireFormat + + + +Element: jmsQueueConnector +-------------------------- + +Attribute + +Type + +Description + +localConnectionFactoryName + +xs:string + +localPassword + +xs:string + +localUsername + +xs:string + +outboundPassword + +xs:string + +outboundQueueConnectionFactoryName + +xs:string + +outboundUsername + +xs:string + +replyToDestinationCacheSize + +xs:integer + +Element + +Type + +Description + +inboundQueueBridges + +([inboundQueueBridge](#inboundQueueBridge))* + +localQueueConnection + + + +localQueueConnectionFactory + + + +outboundQueueBridges + +([outboundQueueBridge](#outboundQueueBridge))* + +outboundQueueConnection + + + +outboundQueueConnectionFactory + + + +Element: jmsTopicConnector +-------------------------- + +Attribute + +Type + +Description + +localConnectionFactoryName + +xs:string + +localPassword + +xs:string + +localUsername + +xs:string + +outboundPassword + +xs:string + +outboundTopicConnectionFactoryName + +xs:string + +outboundUsername + +xs:string + +replyToDestinationCacheSize + +xs:integer + +Element + +Type + +Description + +inboundTopicBridges + +([inboundTopicBridge](#inboundTopicBridge))* + +localTopicConnection + + + +localTopicConnectionFactory + + + +outboundTopicBridges + +([outboundTopicBridge](#outboundTopicBridge))* + +outboundTopicConnection + + + +outboundTopicConnectionFactory + + + +Element: journalPersistenceAdapter +---------------------------------- + +Attribute + +Type + +Description + +maxCheckpointMessageAddSize + +xs:integer + +maxCheckpointWorkers + +xs:integer + +useExternalMessageReferences + +xs:boolean + +Element + +Type + +Description + +journal + + + +longTermPersistence + + + +memManager + +[usageManager](#usageManager) + +taskRunnerFactory + + + +Element: journaledJDBC +---------------------- + +Element: lastImageSubscriptionRecoveryPolicy +-------------------------------------------- + +Element: managementContext +-------------------------- + +Attribute + +Type + +Description + +connectorPath + +xs:string + +connectorPort + +xs:integer + +createConnector + +xs:boolean + +createMBeanServer + +xs:boolean + +jmxDomainName + +xs:string + +useMBeanServer + +xs:boolean + +Element + +Type + +Description + +server + + + +Element: memoryPersistenceAdapter +--------------------------------- + +Attribute + +Type + +Description + +useExternalMessageReferences + +xs:boolean + +Element: networkConnector +------------------------- + +Attribute + +Type + +Description + +brokerName + +xs:string + +localURI + +xsd:string + +localUri + +xsd:string + +uri + +xsd:string + +Element + +Type + +Description + +discoveryAgent + + + +Element: noSubscriptionRecoveryPolicy +------------------------------------- + +Element: outboundQueueBridge +---------------------------- + +Attribute + +Type + +Description + +outboundQueueName + +xs:string + +Element: outboundTopicBridge +---------------------------- + +Attribute + +Type + +Description + +outboundTopicName + +xs:string + +Element: policyEntry +-------------------- + +Element + +Type + +Description + +dispatchPolicy + + + +redeliveryPolicy + + + +subscriptionRecoveryPolicy + + + +Element: policyMap +------------------ + +Element + +Type + +Description + +defaultEntry + +[policyEntry](#policyEntry) + +policyEntries + +()* + +Sets the individual entries on the policy map + +Element: proxyConnector +----------------------- + +Attribute + +Type + +Description + +bind + +xsd:string + +localUri + +xsd:string + +remote + +xsd:string + +Element + +Type + +Description + +server + + + +Element: quickJournalPersistenceAdapter +--------------------------------------- + +Attribute + +Type + +Description + +maxCheckpointMessageAddSize + +xs:integer + +maxCheckpointWorkers + +xs:integer + +useExternalMessageReferences + +xs:boolean + +Element + +Type + +Description + +journal + + + +longTermPersistence + + + +memManager + +[usageManager](#usageManager) + +taskRunnerFactory + + + +Element: roundRobinDispatchPolicy +--------------------------------- + +Element: simpleDispatchPolicy +----------------------------- + +Element: simpleJmsMessageConvertor +---------------------------------- + +Element: strictOrderDispatchPolicy +---------------------------------- + +Element: timedSubscriptionRecoveryPolicy +---------------------------------------- + +Attribute + +Type + +Description + +recoverDuration + +xs:long + +Element: transportConnector +--------------------------- + +Attribute + +Type + +Description + +brokerName + +xs:string + +uri + +xsd:string + +Sets the server transport URI to use if there is not a {@link TransportServer} configured via the {@link #setServer(TransportServer)} method. This value is used to lazy create a {@link TransportServer} instance + +Element + +Type + +Description + +broker + + + +brokerInfo + + + +server + + + +taskRunnerFactory + + + +Element: usageManager +--------------------- + +Attribute + +Type + +Description + +limit + +xs:long + +percentUsage + +xs:integer + +percentUsageMinDelta + +xs:integer + +Sets the minimum number of percentage points the usage has to change before a UsageListener event is fired by the manager. + +Element + +Type + +Description + +parent + +[usageManager](#usageManager) \ No newline at end of file diff --git a/activemq-40-m4-release.md b/activemq-40-m4-release.md new file mode 100644 index 0000000..a3df2b5 --- /dev/null +++ b/activemq-40-m4-release.md @@ -0,0 +1,42 @@ +Apache ActiveMQ ™ -- ActiveMQ 4.0 M4 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 4.0 M4 Release](activemq-40-m4-release.html) + + +New and Noteworthy +------------------ + +This is the first milestone release of 4.x since the move to Apache so the package names have changed from org.activemq to org.apache.activemq. For a full list see the [Changes in 4.0](changes-in-40.html). + +This release of ActiveMQ includes a large number of [new features](changes-in-40.html) such as [MasterSlave](masterslave.html) and [Message Groups](message-groups.html) together with numerous bug fixes. + +Download Here +------------- + +Download + +Description + +[activemq-4.0-M4.zip](http://cvs.apache.org/repository/incubator-activemq/distributions/activemq-4.0-M4.zip) + +Binary Distribution in zip package + +[activemq-4.0-M4-src.zip](http://cvs.apache.org/repository/incubator-activemq/distributions/activemq-4.0-M4-src.zip) + +Source Distribution in zip package + +[activemq-4.0-M4.tar.gz](http://cvs.apache.org/repository/incubator-activemq/distributions/activemq-4.0-M4.tar.gz) + +Binary Distribution in gz package + +[activemq-4.0-M4-src.tar.gz](http://cvs.apache.org/repository/incubator-activemq/distributions/activemq-4.0-M4-src.tar.gz) + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://jira.activemq.org/jira/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=11726) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + diff --git a/activemq-40-rc2-release.md b/activemq-40-rc2-release.md new file mode 100644 index 0000000..632a4e4 --- /dev/null +++ b/activemq-40-rc2-release.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- ActiveMQ 4.0 RC2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 4.0 RC2 Release](activemq-40-rc2-release.html) + + +New and Noteworthy +------------------ + +This is the second release candiate release of 4.0. + +This release of ActiveMQ includes a large number of [new features](changes-in-40.html) such as [MasterSlave](masterslave.html) and [Message Groups](message-groups.html) together with numerous bug fixes. + +### Warnings + +When upgrading from a previous release you are advised to clear down the journal files and persistent database first before upgrading to this jar as the binary format of messages is not compatible with 3.x or earlier 4.x releases. + +### What has changed + +The 4.x branch of ActiveMQ has now moved to the Apache Incubator so the package names have changed from org.activemq to org.apache.activemq. For a full list see the [Changes in 4.0](changes-in-40.html). + +Download Here +------------- + +Download + +Description + +[activemq-4.0-RC2.zip](http://cvs.apache.org/repository/incubator-activemq/distributions/activemq-4.0-RC2.zip) + +Binary Distribution in zip package + +[activemq-4.0-RC2-src.zip](http://cvs.apache.org/repository/incubator-activemq/distributions/activemq-4.0-RC2-src.zip) + +Source Distribution in zip package + +[activemq-4.0-RC2.tar.gz](http://cvs.apache.org/repository/incubator-activemq/distributions/activemq-4.0-RC2.tar.gz) + +Binary Distribution in gz package + +[activemq-4.0-RC2-src.tar.gz](http://cvs.apache.org/repository/incubator-activemq/distributions/activemq-4.0-RC2-src.tar.gz) + +Source Distribution in gz package + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=11750) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +Also see the previous [ActiveMQ 4.0 M4 Release](activemq-40-m4-release.html) + diff --git a/activemq-40-release.md b/activemq-40-release.md new file mode 100644 index 0000000..8da3ec5 --- /dev/null +++ b/activemq-40-release.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- ActiveMQ 4.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 4.0 Release](activemq-40-release.html) + + +New and Noteworthy +------------------ + +This is the 4.0 release of Apache ActiveMQ. This release of Apache ActiveMQ includes a large number of [new features](changes-in-40.html) such as [MasterSlave](masterslave.html) and [Message Groups](message-groups.html) together with numerous bug fixes. + +### Warnings + +When upgrading from a previous release you are advised to clear down the journal files and persistent database first before upgrading to this jar as the binary format of messages is not compatible with 3.x or earlier 4.0 milestone releases. + +### Known issues + +Some folks have found issues with acknowledgements, particularly when using auto-ack mode. This has been fixed in 4.0.1 which will be released shortly. Until then we recommend you disable [optimizeAcknowledge](connection-configuration-uri.html). e.g. connect via + +tcp://localhost:61616?jms.optimizeAcknowledge=false + +The source distributions do not build as is anymore due to changes in the way the maven repo is now setup at Apache. You must first apply the following [patch](activemq-40-release.data/amq4-build.patch?version=1&modificationDate=1150318678000&api=v2) before doing the build. You will need to download the patch and apply it using the patch command. + +cd ${path-to-activemq-source-distro} +patch -p 0 < ${path-to-amq4-build.patch} + +### What has changed + +The 4.x branch of Apache ActiveMQ has now moved to the Apache Incubator so the package names have changed from org.activemq to org.apache.activemq. For a full list see the [Changes in 4.0](changes-in-40.html). + +Download Here +------------- + +Download + +Description + +[incubator-activemq-4.0.zip](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.zip) + +Binary Distribution in zip package + +[incubator-activemq-4.0-src.zip](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0-src.zip) + +Source Distribution in zip package + +[incubator-activemq-4.0.tar.gz](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.tar.gz) + +Binary Distribution in gz package + +[incubator-activemq-4.0-src.tar.gz](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0-src.tar.gz) + +Source Distribution in gz package + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/incubator/activemq/tags/activemq-4.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/IssueNavigator.jspa?reset=true&pid=10520&fixfor=11660) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +Also see the previous [ActiveMQ 4.0 RC2 Release](activemq-40-rc2-release.html) + diff --git a/activemq-401-release.md b/activemq-401-release.md new file mode 100644 index 0000000..a36309b --- /dev/null +++ b/activemq-401-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ 4.0.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 4.0.1 Release](activemq-401-release.html) + + +New and Noteworthy +------------------ + +This is a minor bug fix release. All previous installations of Apache ActiveMQ 4.0 are recommended to upgrade to this release. + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Binary for Windows + +[incubator-activemq-4.0.1.zip](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.1.zip) + +[incubator-activemq-4.0.1.zip.asc](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.1.zip.asc) + +Source code for Windows + +[incubator-activemq-4.0.1-src.zip](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.1-src.zip) + +[incubator-activemq-4.0.1-src.zip.asc](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.1-src.zip.asc) + +Binary for Unix + +[incubator-activemq-4.0.1.tar.gz](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.1.tar.gz) + +[incubator-activemq-4.0.1.tar.gz.asc](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.1.tar.gz.asc) + +Source code for Unix + +[incubator-activemq-4.0.1-src.tar.gz](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.1-src.tar.gz) + +[incubator-activemq-4.0.1-src.tar.gz.asc](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/incubator/activemq/tags/activemq-4.0.1 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11780&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +Also see the previous [ActiveMQ 4.0 Release](activemq-40-release.html) + diff --git a/activemq-402-release.md b/activemq-402-release.md new file mode 100644 index 0000000..9ed6014 --- /dev/null +++ b/activemq-402-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ 4.0.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 4.0.2 Release](activemq-402-release.html) + + +New and Noteworthy +------------------ + +This is a minor bug fix release. All previous installations of Apache ActiveMQ 4.0.1 are recommended to upgrade to this release. + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Binary for Windows + +[incubator-activemq-4.0.2.zip](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.2.zip) + +[incubator-activemq-4.0.2.zip.asc](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.2.zip.asc) + +Source code for Windows + +[incubator-activemq-4.0.2-src.zip](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.2-src.zip) + +[incubator-activemq-4.0.2-src.zip.asc](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.2-src.zip.asc) + +Binary for Unix + +[incubator-activemq-4.0.2.tar.gz](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.2.tar.gz) + +[incubator-activemq-4.0.2.tar.gz.asc](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.2.tar.gz.asc) + +Source code for Unix + +[incubator-activemq-4.0.2-src.tar.gz](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.2-src.tar.gz) + +[incubator-activemq-4.0.2-src.tar.gz.asc](http://people.apache.org/repository/incubator-activemq/distributions/incubator-activemq-4.0.2-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/incubator/activemq/tags/activemq-4.0.2 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11783&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +Also see the previous [ActiveMQ 4.0.1 Release](activemq-401-release.html) + diff --git a/activemq-410-release.md b/activemq-410-release.md new file mode 100644 index 0000000..cbc2e32 --- /dev/null +++ b/activemq-410-release.md @@ -0,0 +1,55 @@ +Apache ActiveMQ ™ -- ActiveMQ 4.1.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 4.1.0 Release](activemq-410-release.html) + + +![](http://activemq.apache.org/activemq-410-release.data/activemq-4.1-box-reflection.png) + +New and Noteworthy +------------------ + +This is release contains several major enhancements such as: + +* Virtual Destinations +* JDBC based Master/Slave locking +* XMPP/Jabber Support - ActiveMQ can now send and receive message from a XMPP network. +* enhanced SSL support +* Improved STOMP support + +It also contains a slew of bug fixes that are tracked in the change log. + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Binary for Windows + +[apache-activemq-4.1.0-incubator.zip](http://people.apache.org/repo/m2-incubating-repository/org/apache/activemq/apache-activemq/4.1.0-incubator/apache-activemq-4.1.0-incubator.zip) + +[incubator-activemq-4.1.0.zip.asc](http://people.apache.org/repo/m2-incubating-repository/org/apache/activemq/apache-activemq/4.1.0-incubator/apache-activemq-4.1.0-incubator.zip.asc) + +Binary for Unix/Linux/Cygwin + +[apache-activemq-4.1.0-incubator.tar.gz](http://people.apache.org/repo/m2-incubating-repository/org/apache/activemq/apache-activemq/4.1.0-incubator/apache-activemq-4.1.0-incubator.tar.gz) + +[incubator-activemq-4.1.0.tar.gz.asc](http://people.apache.org/repo/m2-incubating-repository/org/apache/activemq/apache-activemq/4.1.0-incubator/apache-activemq-4.1.0-incubator.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/tags/activemq-4.1.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11691&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Unable to locate JIRA server for this macro. It may be due to Application Link configuration. + +Also see the previous [ActiveMQ 4.0.2 Release](activemq-402-release.html) + diff --git a/activemq-411-release.md b/activemq-411-release.md new file mode 100644 index 0000000..dd85fe8 --- /dev/null +++ b/activemq-411-release.md @@ -0,0 +1,80 @@ +Apache ActiveMQ ™ -- ActiveMQ 4.1.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 4.1.1 Release](activemq-411-release.html) + + +![](http://activemq.apache.org/activemq-410-release.data/activemq-4.1-box-reflection.png) + +New and Noteworthy +------------------ + +Contains slew of bug fixes that are tracked in the change log. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-4.1.1.zip](http://archive.apache.org/dist/activemq/apache-activemq/4.1.1/apache-activemq-4.1.1.zip) + +[apache-activemq-4.1.1.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/4.1.1/apache-activemq-4.1.1.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-4.1.1.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/4.1.1/apache-activemq-4.1.1.tar.gz) + +[apache-activemq-4.1.1.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/4.1.1/apache-activemq-4.1.1.tar.gz.asc) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 4.1.1 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[apache-activemq-4.1.1-src.zip](http://archive.apache.org/dist/activemq/apache-activemq/4.1.1/apache-activemq-4.1.1-src.zip) + +[apache-activemq-4.1.1-src.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/4.1.1/apache-activemq-4.1.1-src.zip.asc) + +Source for Unix/Linux/Cygwin + +[apache-activemq-4.1.1-src.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/4.1.1/apache-activemq-4.1.1-src.tar.gz) + +[apache-activemq-4.1.1-src.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/4.1.1/apache-activemq-4.1.1-src.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-4.1.1 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11800&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +Also see the previous [ActiveMQ 4.1.0 Release](activemq-410-release.html) + diff --git a/activemq-412-release.md b/activemq-412-release.md new file mode 100644 index 0000000..fa3c598 --- /dev/null +++ b/activemq-412-release.md @@ -0,0 +1,80 @@ +Apache ActiveMQ ™ -- ActiveMQ 4.1.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 4.1.2 Release](activemq-412-release.html) + + +![](http://activemq.apache.org/activemq-410-release.data/activemq-4.1-box-reflection.png) + +New and Noteworthy +------------------ + +Contains slew of bug fixes that are tracked in the change log. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-4.1.2-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/4.1.2/apache-activemq-4.1.2-bin.zip) + +[apache-activemq-4.1.2-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/4.1.2/apache-activemq-4.1.2-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-4.1.2-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/4.1.2/apache-activemq-4.1.2-bin.tar.gz) + +[apache-activemq-4.1.2-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/4.1.2/apache-activemq-4.1.2-bin.tar.gz.asc) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 4.1.2 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[apache-activemq-4.1.2-src.zip](http://archive.apache.org/dist/activemq/apache-activemq/4.1.2/apache-activemq-4.1.2-src.zip) + +[apache-activemq-4.1.2-src.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/4.1.2/apache-activemq-4.1.2-src.zip.asc) + +Source for Unix/Linux/Cygwin + +[apache-activemq-4.1.2-src.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/4.1.2/apache-activemq-4.1.2-src.tar.gz) + +[apache-activemq-4.1.2-src.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/4.1.2/apache-activemq-4.1.2-src.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-4.1.2 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11801&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +Also see the previous [ActiveMQ 4.1.1 Release](activemq-411-release.html) + diff --git a/activemq-500-release.md b/activemq-500-release.md new file mode 100644 index 0000000..1911f44 --- /dev/null +++ b/activemq-500-release.md @@ -0,0 +1,94 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.0.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.0.0 Release](activemq-500-release.html) + + +![](activemq-500-release.data/activemq-5.x-box-reflection.png) + +New Features in 5.0 +------------------- + +In the 5.0 release of Apache ActiveMQ there are the following new features: + +* [AMQ Message Store](amq-message-store.html) (Faster Persistence!) +* [Message Cursors](message-cursors.html) (To handle very large number of stored messages) +* [Blob Messages](blob-messages.html) +* [Command Agent](command-agent.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) via [Camel Integration](http://activemq.apache.org/camel/) +* [Logging a warning if you forget to start a Connection](logging-a-warning-if-you-forget-to-start-a-connection.html) +* [Message Transformation](message-transformation.html) +* [Mirrored Queues](mirrored-queues.html) +* [Producer Flow Control](producer-flow-control.html) + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.0.0.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.0.0/apache-activemq-5.0.0.zip) + +[apache-activemq-5.0.0.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.0.0/apache-activemq-5.0.0.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.0.0.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.0.0/apache-activemq-5.0.0.tar.gz) + +[apache-activemq-5.0.0.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.0.0/apache-activemq-5.0.0.tar.gz.asc) + +Do not use Safari to download, the above URLs use redirection + +The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using [FireFox](http://www.mozilla.com/en-US/firefox/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.0.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[apache-activemq-5.0.0-src.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.0.0/apache-activemq-5.0.0-src.zip) + +[apache-activemq-5.0.0-src.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.0.0/apache-activemq-5.0.0-src.zip.asc) + +Source for Unix/Linux/Cygwin + +[apache-activemq-5.0.0-src.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.0.0/apache-activemq-5.0.0-src.tar.gz) + +[apache-activemq-5.0.0-src.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.0.0/apache-activemq-5.0.0-src.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.0.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11712&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +Also see the previous [ActiveMQ 4.1.1 Release](activemq-411-release.html) + diff --git a/activemq-510-release.md b/activemq-510-release.md new file mode 100644 index 0000000..22ecde6 --- /dev/null +++ b/activemq-510-release.md @@ -0,0 +1,144 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.1.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.1.0 Release](activemq-510-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +New Features in 5.1 +------------------- + +In the 5.1.x release of Apache ActiveMQ there are the following new features: + +* You can use the new [DestinationSource](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/advisory/DestinationSource.html) on an ActiveMQConnection to access the available queues or topics or listen to queues/topics being created or deleted. + + New Features in 5.1 + ------------------- + +* Support for more graceful handling of [timeouts within MessageProducer.send](http://issues.apache.org/activemq/browse/AMQ-1517) +* Add the option for a [backup channel that is already connected for the Failover transport](http://issues.apache.org/activemq/browse/AMQ-1572) +* ActiveMQ configuration can now validate against an XSD which means that it can be embedded in a spring configuration file. +* Stomp can now handle delivering Map and Object messages. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.1.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.1.0/apache-activemq-5.1.0-bin.zip) + +[apache-activemq-5.1.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/apache-activemq-5.1.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.1.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.1.0/apache-activemq-5.1.0-bin.tar.gz) + +[apache-activemq-5.1.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.1.0/apache-activemq-5.1.0-bin.tar.gz.asc) + +Do not use Safari to download, the above URLs use redirection + +The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using [FireFox](http://www.mozilla.com/en-US/firefox/) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Error When Expanding Tarballs + +When expanding the binary tarballs you might wind up experiencing the following: + + +$ tar zxvf /path/to/apache-activemq-5.1.0-bin.tar.gz +apache-activemq-5.1.0/bin/run.jar +apache-activemq-5.1.0/activemq-all-5.1.0.jar +... +apache-activemq-5.1.0/webapps/fileserver/WEB-INF/web.xml +apache-activemq-5.1.0/webapps/fileserver/WEB-INF/classes/org/apache/activemq/util/FilenameGuardFilter.class +apache-activemq-5.1.0/webapps/fileserver/WEB-INF/classes/org/apache/activemq/util/FilenameGuardFilter$GuardedHttpServletRequest.class +apache-activemq-5.1.0/webapps/fileserver/WEB-INF/classes/org/apache/activemq/util/RestFilter.class +tar: Unexpected EOF in archive +tar: A lone zero block at 61740 +tar: Error exit delayed from previous errors + +These errors are a product of an open [bug in Maven](http://jira.codehaus.org/browse/MASSEMBLY-302) and are innocuous and won't affect anything. + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.1.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[apache-activemq-5.1.0-src.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.1.0/apache-activemq-5.1.0-src.zip) + +[apache-activemq-5.1.0-src.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.1.0/apache-activemq-5.1.0-src.zip.asc) + +Source for Unix/Linux/Cygwin + +[apache-activemq-5.1.0-src.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.1.0/apache-activemq-5.1.0-src.tar.gz) + +[apache-activemq-5.1.0-src.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.1.0/apache-activemq-5.1.0-src.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.1.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11802&styleName=Html&projectId=10520&Create=Create) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +Also see the previous [ActiveMQ 5.0.0 Release](activemq-500-release.html) + diff --git a/activemq-5100-release.md b/activemq-5100-release.md new file mode 100644 index 0000000..5fc1f85 --- /dev/null +++ b/activemq-5100-release.md @@ -0,0 +1,120 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.10.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.10.0 Release](activemq-5100-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.10.0 Release +----------------------- + +Apache ActiveMQ 5.10.0 resolves [more than 234 issues](https://issues.apache.org/jira/browse/AMQ-5061?jql=project%20%3D%20AMQ%20AND%20fixVersion%20%3D%205.10.0%20ORDER%20BY%20status%20DESC%2C%20priority%20DESC), mostly bug fixes and improvements. It has the following new features: + +### New Features and noteworthy improvements and fixes + +* Java 8 support +* Apache Shiro Security Plugin - [http://activemq.apache.org/shiro.html](http://activemq.apache.org/shiro.html) +* Hardened MQTT support +* Hardened AMQP support +* Hardened LevelDB store +* Improved RAR/JCA adapter +* Improved Runtime configuration plugin +* Improved Web console + +### Migration Guide + +* Removed `org.apache.activemq.camel.converter.IdentityMessageReuseConverter` class from the `activemq-camel` component. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.10.0-bin.zip](http://archive.apache.org/dist/activemq/5.10.0/apache-activemq-5.10.0-bin.zip) + +[apache-activemq-5.10.0-bin.zip.asc](http://archive.apache.org/dist/activemq/5.10.0/apache-activemq-5.10.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.10.0-bin.tar.gz](http://archive.apache.org/dist/activemq/5.10.0/apache-activemq-5.10.0-bin.tar.gz) + +[apache-activemq-5.10.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/5.10.0/apache-activemq-5.10.0-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.10.0 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.10.0-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.10.0/activemq-parent-5.10.0-source-release.zip) + +[activemq-parent-5.10.0-source-release.zip.asc](https://www.apache.org/dist/activemq/5.10.0/activemq-parent-5.10.0-source-release.zip.asc) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.10.0](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.10.0) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12324950) + +Also see the previous [ActiveMQ 5.9.0 Release](activemq-590-release.html) + diff --git a/activemq-5101-release.md b/activemq-5101-release.md new file mode 100644 index 0000000..b859a5e --- /dev/null +++ b/activemq-5101-release.md @@ -0,0 +1,104 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.10.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.10.1 Release](activemq-5101-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.10.1 Release +----------------------- + +Apache ActiveMQ 5.10.1 resolves [33 issues](https://issues.apache.org/jira/browse/AMQ-5514?jql=fixVersion%20%3D%205.10.1%20AND%20project%20%3D%20AMQ), mostly bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.10.1-bin.zip](http://archive.apache.org/dist/activemq/5.10.1/apache-activemq-5.10.1-bin.zip) + +[apache-activemq-5.10.1-bin.zip.asc](http://archive.apache.org/dist/activemq/5.10.1/apache-activemq-5.10.1-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.10.1-bin.tar.gz](http://archive.apache.org/dist/activemq/5.10.1/apache-activemq-5.10.1-bin.tar.gz) + +[apache-activemq-5.10.1-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/5.10.1/apache-activemq-5.10.1-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.10.1 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.10.1-source-release.zip](http://archive.apache.org/dist/activemq/5.10.1/activemq-parent-5.10.1-source-release.zip) + +[activemq-parent-5.10.1-source-release.zip.asc](https://archive.apache.org/dist/activemq/5.10.1/activemq-parent-5.10.1-source-release.zip.asc) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.10.1](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.10.1) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12326456) + +Also see the previous [ActiveMQ 5.10.0 Release](activemq-5100-release.html) + diff --git a/activemq-5102-release.md b/activemq-5102-release.md new file mode 100644 index 0000000..10e119d --- /dev/null +++ b/activemq-5102-release.md @@ -0,0 +1,104 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.10.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.10.2 Release](activemq-5102-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.10.2 Release +----------------------- + +Apache ActiveMQ 5.10.2 resolves [2 issues](https://issues.apache.org/jira/issues/?jql=project%20%3D%20AMQ%20AND%20fixVersion%20%3D%205.10.2), both bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.10.2-bin.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.10.2/apache-activemq-5.10.2-bin.zip) + +[apache-activemq-5.10.2-bin.zip.asc](https://www.apache.org/dist/activemq/5.10.2/apache-activemq-5.10.2-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.10.2-bin.tar.gz](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.10.2/apache-activemq-5.10.2-bin.tar.gz) + +[apache-activemq-5.10.2-bin.tar.gz.asc](https://www.apache.org/dist/activemq/5.10.2/apache-activemq-5.10.2-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.10.2 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.10.2-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.10.2/activemq-parent-5.10.2-source-release.zip) + +[activemq-parent-5.10.2-source-release.zip.asc](https://www.apache.org/dist/activemq/5.10.2/activemq-parent-5.10.2-source-release.zip.asc) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.10.2](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.10.2) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329390) + +Also see the previous [ActiveMQ 5.10.1 Release](activemq-5100-release.html) + diff --git a/activemq-5110-release.md b/activemq-5110-release.md new file mode 100644 index 0000000..643bca7 --- /dev/null +++ b/activemq-5110-release.md @@ -0,0 +1,116 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.11.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.11.0 Release](activemq-5110-release.html) + + +ActiveMQ 5.11.0 Release +----------------------- + +Apache ActiveMQ 5.11.0 resolves [more than 130 issues](https://issues.apache.org/jira/issues/?jql=fixVersion%20%3D%205.11.0%20AND%20project%20%3D%20AMQ), mostly bug fixes and improvements. It is build with and requires jdk 1.7 + +New Features in 5.11.0 +---------------------- + +* Destination import/export for lock down mode [AMQ-5218](https://issues.apache.org/jira/browse/AMQ-5218) +* Dynamic camel root loading [AMQ-5351](https://issues.apache.org/jira/browse/AMQ-5351) + +* MQTT - QOS2 mapped to virtual topics [AMQ-5290](https://issues.apache.org/jira/browse/AMQ-5290) + +* start scripts simplification [AMQ-5378](https://issues.apache.org/jira/browse/AMQ-5378) +* Recover scheduler database option [AMQ-3758](https://issues.apache.org/jira/browse/AMQ-3758) +* Jetty 8 +* Karaf 2.4.1 + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.11.0-bin.zip](http://archive.apache.org/dist/activemq/5.11.0/apache-activemq-5.11.0-bin.zip) + +[apache-activemq-5.11.0-bin.zip.asc](http://archive.apache.org/dist/activemq/5.11.0/apache-activemq-5.11.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.11.0-bin.tar.gz](http://archive.apache.org/dist/activemq/5.11.0/apache-activemq-5.11.0-bin.tar.gz) + +[apache-activemq-5.11.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/5.11.0/apache-activemq-5.11.0-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.11.0 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.11.0-source-release.zip](http://archive.apache.org/dist/activemq/5.11.0/activemq-parent-5.11.0-source-release.zip) + +[activemq-parent-5.11.0-source-release.zip.asc](https://archive.apache.org/dist/activemq/5.11.0/activemq-parent-5.11.0-source-release.zip.asc) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.11.0](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.11.0) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12324951&projectId=12311210) + +Also see the previous [ActiveMQ 5.10.0 Release](activemq-5100-release.html) + diff --git a/activemq-5111-release.md b/activemq-5111-release.md new file mode 100644 index 0000000..e19e2a7 --- /dev/null +++ b/activemq-5111-release.md @@ -0,0 +1,104 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.11.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.11.1 Release](activemq-5111-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.11.1 Release +----------------------- + +Apache ActiveMQ 5.11.1 resolves [6 issues](https://issues.apache.org/jira/issues/?jql=project%20%3D%20AMQ%20AND%20fixVersion%20%3D%205.11.1), mostly bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.11.1-bin.zip](http://archive.apache.org/dist/activemq/5.11.1/apache-activemq-5.11.1-bin.zip) + +[apache-activemq-5.11.1-bin.zip.asc](https://www.apache.org/dist/activemq/5.11.1/apache-activemq-5.11.1-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.11.1-bin.tar.gz](http://archive.apache.org/dist/activemq/5.11.1/apache-activemq-5.11.1-bin.tar.gz) + +[apache-activemq-5.11.1-bin.tar.gz.asc](https://www.apache.org/dist/activemq/5.11.1/apache-activemq-5.11.1-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.11.1 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.11.1-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.11.1/activemq-parent-5.11.1-source-release.zip) + +[activemq-parent-5.11.1-source-release.zip.asc](https://www.apache.org/dist/activemq/5.11.1/activemq-parent-5.11.1-source-release.zip.asc) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.11.1](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.11.1) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329382) + +Also see the previous [ActiveMQ 5.11.0 Release](activemq-5110-release.html) + diff --git a/activemq-5112-release.md b/activemq-5112-release.md new file mode 100644 index 0000000..e842a25 --- /dev/null +++ b/activemq-5112-release.md @@ -0,0 +1,104 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.11.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.11.2 Release](activemq-5112-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.11.2 Release +----------------------- + +Apache ActiveMQ 5.11.2 resolves several [issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329669), mostly bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.11.2-bin.zip](https://archive.apache.org/dist/activemq/5.11.2/apache-activemq-5.11.2-bin.zip) + +[apache-activemq-5.11.2-bin.zip.asc](https://archive.apache.org/dist/activemq/5.11.2/apache-activemq-5.11.2-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.11.2-bin.tar.gz](https://archive.apache.org/dist/activemq/5.11.2/apache-activemq-5.11.2-bin.tar.gz) + +[apache-activemq-5.11.2-bin.tar.gz.asc](https://archive.apache.org/dist/activemq/5.11.2/apache-activemq-5.11.2-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.11.2 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.11.2-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.11.2/activemq-parent-5.11.2-source-release.zip) + +[activemq-parent-5.11.2-source-release.zip.asc](https://www.apache.org/dist/activemq/5.11.2/activemq-parent-5.11.2-source-release.zip.asc) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.11.1](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.11.2) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329669) + +Also see the previous [ActiveMQ 5.11.1 Release](activemq-5111-release.html) + diff --git a/activemq-5113-release.md b/activemq-5113-release.md new file mode 100644 index 0000000..8cea659 --- /dev/null +++ b/activemq-5113-release.md @@ -0,0 +1,104 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.11.3 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.11.3 Release](activemq-5113-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.11.3 Release +----------------------- + +Apache ActiveMQ 5.11.3 resolves several [issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329669), mostly bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.11.3-bin.zip](https://archive.apache.org/dist/activemq/5.11.3/apache-activemq-5.11.3-bin.zip) + +[apache-activemq-5.11.3-bin.zip.asc](https://archive.apache.org/dist/activemq/5.11.3/apache-activemq-5.11.3-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.11.3-bin.tar.gz](https://archive.apache.org/dist/activemq/5.11.3/apache-activemq-5.11.3-bin.tar.gz) + +[apache-activemq-5.11.3-bin.tar.gz.asc](https://archive.apache.org/dist/activemq/5.11.3/apache-activemq-5.11.3-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.11.3 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.11.3-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.11.3/activemq-parent-5.11.3-source-release.zip) + +[activemq-parent-5.11.3-source-release.zip.asc](https://www.apache.org/dist/activemq/5.11.3/activemq-parent-5.11.3-source-release.zip.asc) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.11.3](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.11.3) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12333254) + +Also see the previous [ActiveMQ 5.11.2 Release](activemq-5112-release.html) + diff --git a/activemq-5120-release.md b/activemq-5120-release.md new file mode 100644 index 0000000..a41d7ca --- /dev/null +++ b/activemq-5120-release.md @@ -0,0 +1,104 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.12.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.12.0 Release](activemq-5120-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.12.0 Release +----------------------- + +Apache ActiveMQ 5.12.0 resolves several [issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329258), and provides significant improves to the [AMQP](amqp.html) and [MQTT](mqtt.html) support in the broker as well as fixing issues with [STOMP](stomp.html) and [MQTT](mqtt.html) over WebSockets plus much much more. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.12.0-bin.zip](https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.12.0-bin.tar.gz](https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.12.0 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.12.0-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.12.0/activemq-parent-5.12.0-source-release.zip) + +[ASC](https://www.apache.org/dist/activemq/5.12.0/activemq-parent-5.12.0-source-release.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.12.0/activemq-parent-5.12.0-source-release.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.12.0/activemq-parent-5.12.0-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.12.0](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.12.0) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329258) + +Also see the previous [ActiveMQ 5.11.2 Release](activemq-5112-release.html) + diff --git a/activemq-5121-release.md b/activemq-5121-release.md new file mode 100644 index 0000000..9356825 --- /dev/null +++ b/activemq-5121-release.md @@ -0,0 +1,104 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.12.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.12.1 Release](activemq-5121-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.12.1 Release +----------------------- + +Apache ActiveMQ 5.12.1 includes several improvements and resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12333269) + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.12.1-bin.zip](https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.12.1-bin.tar.gz](https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.12.1/apache-activemq-5.12.1-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.12.1 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.12.1-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.12.1/activemq-parent-5.12.1-source-release.zip) + +[ASC](https://www.apache.org/dist/activemq/5.12.1/activemq-parent-5.12.1-source-release.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.12.1/activemq-parent-5.12.1-source-release.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.12.1/activemq-parent-5.12.1-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.12.1](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.12.1) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12333269) + +Also see the previous [ActiveMQ 5.12.0 Release](activemq-5120-release.html) + diff --git a/activemq-5122-release.md b/activemq-5122-release.md new file mode 100644 index 0000000..257e462 --- /dev/null +++ b/activemq-5122-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.12.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.12.2 Release](activemq-5122-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.12.2 Release +----------------------- + +Apache ActiveMQ 5.12.2 includes several improvements and resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12333269) + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.12.2-bin.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.12.2/apache-activemq-5.12.2-bin.zip) + +[ASC](https://www.apache.org/dist/activemq/5.12.2/apache-activemq-5.12.2-bin.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.12.2/apache-activemq-5.12.2-bin.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.12.2/apache-activemq-5.12.2-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.12.2-bin.tar.gz](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.12.2/apache-activemq-5.12.2-bin.tar.gz) + +[ASC](https://www.apache.org/dist/activemq/5.12.2/apache-activemq-5.12.2-bin.tar.gz.asc), [MD5](https://www.apache.org/dist/activemq/5.12.2/apache-activemq-5.12.2-bin.tar.gz.md5), [SHA1](https://www.apache.org/dist/activemq/5.12.2/apache-activemq-5.12.2-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.12.2 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.12.2-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.12.2/activemq-parent-5.12.2-source-release.zip) + +[ASC](https://www.apache.org/dist/activemq/5.12.2/activemq-parent-5.12.2-source-release.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.12.2/activemq-parent-5.12.2-source-release.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.12.2/activemq-parent-5.12.2-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.12.2](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.12.2) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12333874) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.12.1 Release](activemq-5121-release.html) + diff --git a/activemq-5130-release.md b/activemq-5130-release.md new file mode 100644 index 0000000..c5ecf27 --- /dev/null +++ b/activemq-5130-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.13.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.13.0 Release](activemq-5130-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.13.0 Release +----------------------- + +Apache ActiveMQ 5.13.0 includes several resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329848) as well as new features such as the new [auto transport](auto.html) protocol, [dynamic network support for virtual destinations](networks-of-brokers.html), and much more. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.13.0-bin.zip](https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.13.0-bin.tar.gz](https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.tar.gz.md5), [SHA1](https://www.apache.org/dist/activemq/5.13.0/apache-activemq-5.13.0-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.13.0 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.13.0-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.13.0/activemq-parent-5.13.0-source-release.zip) + +[ASC](https://www.apache.org/dist/activemq/5.13.0/activemq-parent-5.13.0-source-release.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.13.0/activemq-parent-5.13.0-source-release.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.13.0/activemq-parent-5.13.0-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.0](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.0) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12329848) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.12.1 Release](activemq-5121-release.html) + diff --git a/activemq-5131-release.md b/activemq-5131-release.md new file mode 100644 index 0000000..784a0ed --- /dev/null +++ b/activemq-5131-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.13.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.13.1 Release](activemq-5131-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.13.1 Release +----------------------- + +Apache ActiveMQ 5.13.1 includes over 40 resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12334251) and improvements. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.13.1-bin.zip](https://archive.apache.org/dist/activemq/5.13.1/apache-activemq-5.13.1-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.13.1/apache-activemq-5.13.1-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.1/apache-activemq-5.13.1-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.1/apache-activemq-5.13.1-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.13.1-bin.tar.gz](https://archive.apache.org/dist/activemq/5.13.1/apache-activemq-5.13.1-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.13.1/apache-activemq-5.13.1-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.1/apache-activemq-5.13.1-bin.tar.gz.md5), [SHA1](https://www.apache.org/dist/activemq/5.13.1/apache-activemq-5.13.1-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.13.1 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.13.1-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.13.1/activemq-parent-5.13.1-source-release.zip) + +[ASC](https://www.apache.org/dist/activemq/5.13.1/activemq-parent-5.13.1-source-release.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.13.1/activemq-parent-5.13.1-source-release.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.13.1/activemq-parent-5.13.1-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.1](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.1) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12334251) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.13.0 Release](activemq-5130-release.html) + diff --git a/activemq-5132-release.md b/activemq-5132-release.md new file mode 100644 index 0000000..6893719 --- /dev/null +++ b/activemq-5132-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.13.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.13.2 Release](activemq-5132-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.13.2 Release +----------------------- + +Apache ActiveMQ 5.13.2 includes over 15 resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12334774) and improvements. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.13.2-bin.zip](https://archive.apache.org/dist/activemq/5.13.2/apache-activemq-5.13.2-bin.zip) + +[ASC](https://www.apache.org/dist/activemq/5.13.2/apache-activemq-5.13.2-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.2/apache-activemq-5.13.2-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.2/apache-activemq-5.13.2-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.13.2-bin.tar.gz](https://archive.apache.org/dist/activemq/5.13.2/apache-activemq-5.13.2-bin.tar.gz) + +[ASC](https://www.apache.org/dist/activemq/5.13.2/apache-activemq-5.13.2-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.2/apache-activemq-5.13.2-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.2/apache-activemq-5.13.2-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.13.2 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.13.2-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.13.2/activemq-parent-5.13.2-source-release.zip) + +[ASC](https://www.apache.org/dist/activemq/5.13.2/activemq-parent-5.13.2-source-release.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.13.2/activemq-parent-5.13.2-source-release.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.13.2/activemq-parent-5.13.2-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.2](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.2) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12334774) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.13.1 Release](activemq-5131-release.html) + diff --git a/activemq-5133-release.md b/activemq-5133-release.md new file mode 100644 index 0000000..6a55cb0 --- /dev/null +++ b/activemq-5133-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.13.3 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.13.3 Release](activemq-5133-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.13.3 Release +----------------------- + +Apache ActiveMQ 5.13.3 includes over 25 resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12335045) and improvements. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.13.3-bin.zip](https://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.13.3-bin.tar.gz](https://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.3/apache-activemq-5.13.3-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.13.3 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.13.3-source-release.zip](https://archive.apache.org/dist/activemq/5.13.3/activemq-parent-5.13.3-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.13.3/activemq-parent-5.13.3-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.3/activemq-parent-5.13.3-source-release.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.3/activemq-parent-5.13.3-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.3](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.3) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12335045) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.13.2 Release](activemq-5132-release.html) + diff --git a/activemq-5134-release.md b/activemq-5134-release.md new file mode 100644 index 0000000..e00413a --- /dev/null +++ b/activemq-5134-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.13.4 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.13.4 Release](activemq-5134-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.13.4 Release +----------------------- + +Apache ActiveMQ 5.13.4 includes 30 resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12335661&projectId=12311210) and improvements. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.13.4-bin.zip](https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.13.4-bin.tar.gz](https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.4/apache-activemq-5.13.4-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.13.4 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.13.4-source-release.zip](https://archive.apache.org/dist/activemq/5.13.4/activemq-parent-5.13.4-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.13.4/activemq-parent-5.13.4-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.13.4/activemq-parent-5.13.4-source-release.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.13.4/activemq-parent-5.13.4-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.4](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.13.4) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12335661&projectId=12311210) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.13.3 Release](activemq-5133-release.html) + diff --git a/activemq-5140-release.md b/activemq-5140-release.md new file mode 100644 index 0000000..32d329a --- /dev/null +++ b/activemq-5140-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.14.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.14.0 Release](activemq-5140-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.14.0 Release +----------------------- + +Apache ActiveMQ 5.14.0 includes many resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12334188), and provides several new features including AMQP over WebSockets and improved support durable subscriptions over a network bridge. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.14.0-bin.zip](https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.14.0-bin.tar.gz](https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.14.0 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.14.0-source-release.zip](https://archive.apache.org/dist/activemq/5.14.0/activemq-parent-5.14.0-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.0/activemq-parent-5.14.0-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.0/activemq-parent-5.14.0-source-release.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.0/activemq-parent-5.14.0-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.0](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.0) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12334188) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.13.4 Release](activemq-5134-release.html) + diff --git a/activemq-5141-release.md b/activemq-5141-release.md new file mode 100644 index 0000000..17844bf --- /dev/null +++ b/activemq-5141-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.14.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.14.1 Release](activemq-5141-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.14.1 Release +----------------------- + +Apache ActiveMQ 5.14.1 includes many resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338124) and bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.14.1-bin.zip](https://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.14.1-bin.tar.gz](https://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.14.1 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.14.1-source-release.zip](https://archive.apache.org/dist/activemq/5.14.1/activemq-parent-5.14.1-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.1/activemq-parent-5.14.1-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.1/activemq-parent-5.14.1-source-release.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.1/activemq-parent-5.14.1-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.1](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.1) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338124) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.14.0 Release](activemq-5140-release.html) + diff --git a/activemq-5142-release.md b/activemq-5142-release.md new file mode 100644 index 0000000..96cb7d4 --- /dev/null +++ b/activemq-5142-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.14.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.14.2 Release](activemq-5142-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.14.2 Release +----------------------- + +Apache ActiveMQ 5.14.2 includes many resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338329) and bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.14.2-bin.zip](https://archive.apache.org/dist/activemq/5.14.2/apache-activemq-5.14.2-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.2/apache-activemq-5.14.2-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.2/apache-activemq-5.14.2-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.2/apache-activemq-5.14.2-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.14.2-bin.tar.gz](https://archive.apache.org/dist/activemq/5.14.2/apache-activemq-5.14.2-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.14.2/apache-activemq-5.14.2-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.2/apache-activemq-5.14.2-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.2/apache-activemq-5.14.2-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.14.2 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.14.2-source-release.zip](https://archive.apache.org/dist/activemq/5.14.2/activemq-parent-5.14.2-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.2/activemq-parent-5.14.2-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.2/activemq-parent-5.14.2-source-release.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.2/activemq-parent-5.14.2-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.2](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.2) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338329) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.14.1 Release](activemq-5141-release.html) + diff --git a/activemq-5143-release.md b/activemq-5143-release.md new file mode 100644 index 0000000..3611b6d --- /dev/null +++ b/activemq-5143-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.14.3 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.14.3 Release](activemq-5143-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.14.3 Release +----------------------- + +Apache ActiveMQ 5.14.3 includes several resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338822) and bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.14.3-bin.zip](https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.14.3-bin.tar.gz](https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.3/apache-activemq-5.14.3-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.14.3 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.14.3-source-release.zip](https://archive.apache.org/dist/activemq/5.14.3/activemq-parent-5.14.3-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.3/activemq-parent-5.14.3-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.3/activemq-parent-5.14.3-source-release.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.3/activemq-parent-5.14.3-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.3](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.3) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338822) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.14.2 Release](activemq-5142-release.html) + diff --git a/activemq-5144-release.md b/activemq-5144-release.md new file mode 100644 index 0000000..69b2083 --- /dev/null +++ b/activemq-5144-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.14.4 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.14.4 Release](activemq-5144-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.14.4 Release +----------------------- + +Apache ActiveMQ 5.14.4 includes several resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338909) and bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.14.4-bin.zip](https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.14.4-bin.tar.gz](https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.4/apache-activemq-5.14.4-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.14.4 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.14.4-source-release.zip](https://archive.apache.org/dist/activemq/5.14.4/activemq-parent-5.14.4-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.14.4/activemq-parent-5.14.4-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.14.4/activemq-parent-5.14.4-source-release.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.14.4/activemq-parent-5.14.4-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.4](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.4) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338909) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.14.3 Release](activemq-5143-release.html) + diff --git a/activemq-5145-release.md b/activemq-5145-release.md new file mode 100644 index 0000000..7d539de --- /dev/null +++ b/activemq-5145-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.14.5 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.14.5 Release](activemq-5145-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.14.5 Release +----------------------- + +Apache ActiveMQ 5.14.5 includes several resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338909) and bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.14.5-bin.zip](http://www.apache.org/dyn/closer.cgi?filename=/activemq/5.14.5/apache-activemq-5.14.5-bin.zip&action=download) + +[ASC](https://www.apache.org/dist/activemq/5.14.5/apache-activemq-5.14.5-bin.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.14.5/apache-activemq-5.14.5-bin.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.14.5/apache-activemq-5.14.5-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.14.5-bin.tar.gz](http://www.apache.org/dyn/closer.cgi?filename=/activemq/5.14.5/apache-activemq-5.14.5-bin.tar.gz&action=download) + +[ASC](https://www.apache.org/dist/activemq/5.14.5/apache-activemq-5.14.5-bin.tar.gz.asc), [MD5](https://www.apache.org/dist/activemq/5.14.5/apache-activemq-5.14.5-bin.tar.gz.md5), [SHA1](https://www.apache.org/dist/activemq/5.14.5/apache-activemq-5.14.5-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.14.5 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.14.5-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.14.5/activemq-parent-5.14.5-source-release.zip) + +[ASC](https://www.apache.org/dist/activemq/5.14.5/activemq-parent-5.14.5-source-release.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.14.5/activemq-parent-5.14.5-source-release.zip.md5), [SHA1](https://www.apache.org/dist/activemq/5.14.5/activemq-parent-5.14.5-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.5](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.14.5) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12339772) + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.14.4 Release](activemq-5144-release.html) + diff --git a/activemq-5150-release.md b/activemq-5150-release.md new file mode 100644 index 0000000..4cca202 --- /dev/null +++ b/activemq-5150-release.md @@ -0,0 +1,110 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.15.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.15.0 Release](activemq-5150-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.15.0 Release +----------------------- + +Apache ActiveMQ 5.15.0 includes several resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338054) and bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.15.0-bin.zip](https://archive.apache.org/dist/activemq/5.15.0/apache-activemq-5.15.0-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.15.0/apache-activemq-5.15.0-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.15.0/apache-activemq-5.15.0-bin.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.15.0/apache-activemq-5.15.0-bin.zip.sha1) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.15.0-bin.tar.gz](https://archive.apache.org/dist/activemq/5.15.0/apache-activemq-5.15.0-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.15.0/apache-activemq-5.15.0-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.15.0/apache-activemq-5.15.0-bin.tar.gz.md5), [SHA1](https://archive.apache.org/dist/activemq/5.15.0/apache-activemq-5.15.0-bin.tar.gz.sha1) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.15.0 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.15.0-source-release.zip](https://archive.apache.org/dist/activemq/5.15.0/activemq-parent-5.15.0-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.15.0/activemq-parent-5.15.0-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.15.0/activemq-parent-5.15.0-source-release.zip.md5), [SHA1](https://archive.apache.org/dist/activemq/5.15.0/activemq-parent-5.15.0-source-release.zip.sha1) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.15.0](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.15.0) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338054) + +Java 8 Required + +The minimum Java version has been upgraded to Java 8. + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.14.5 Release](activemq-5145-release.html) + diff --git a/activemq-5151-release.md b/activemq-5151-release.md new file mode 100644 index 0000000..51267a3 --- /dev/null +++ b/activemq-5151-release.md @@ -0,0 +1,110 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.15.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.15.1 Release](activemq-5151-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.15.1 Release +----------------------- + +Apache ActiveMQ 5.15.1 includes several resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12341031) and bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.15.1-bin.zip](https://archive.apache.org/dist/activemq/5.15.1/apache-activemq-5.15.1-bin.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.15.1/apache-activemq-5.15.1-bin.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.15.1/apache-activemq-5.15.1-bin.zip.md5), [SHA512](https://archive.apache.org/dist/activemq/5.15.1/apache-activemq-5.15.1-bin.zip.sha512) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.15.1-bin.tar.gz](https://archive.apache.org/dist/activemq/5.15.1/apache-activemq-5.15.1-bin.tar.gz) + +[ASC](https://archive.apache.org/dist/activemq/5.15.1/apache-activemq-5.15.1-bin.tar.gz.asc), [MD5](https://archive.apache.org/dist/activemq/5.15.1/apache-activemq-5.15.1-bin.tar.gz.md5), [SHA512](https://archive.apache.org/dist/activemq/5.15.1/apache-activemq-5.15.1-bin.tar.gz.sha512) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.15.1 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.15.1-source-release.zip](https://archive.apache.org/dist/activemq/5.15.1/activemq-parent-5.15.1-source-release.zip) + +[ASC](https://archive.apache.org/dist/activemq/5.15.1/activemq-parent-5.15.1-source-release.zip.asc), [MD5](https://archive.apache.org/dist/activemq/5.15.1/activemq-parent-5.15.1-source-release.zip.md5), [SHA512](https://archive.apache.org/dist/activemq/5.15.1/activemq-parent-5.15.1-source-release.zip.sha512) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.15.1](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.15.1) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12341031) + +Java 8 Required + +The minimum Java version has been upgraded to Java 8. + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.15.0 Release](activemq-5150-release.html) + diff --git a/activemq-5152-release.md b/activemq-5152-release.md new file mode 100644 index 0000000..f2301c2 --- /dev/null +++ b/activemq-5152-release.md @@ -0,0 +1,110 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.15.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.15.2 Release](activemq-5152-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +ActiveMQ 5.15.2 Release +----------------------- + +Apache ActiveMQ 5.15.2 includes several resolved[ issues](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12341669) and bug fixes. + +### Getting the Binary Distributions + +Description + +Download Link + +_Verify_ + +Windows Distribution + +[apache-activemq-5.15.2-bin.zip](http://www.apache.org/dyn/closer.cgi?filename=/activemq/5.15.2/apache-activemq-5.15.2-bin.zip&action=download) + +[ASC](https://www.apache.org/dist/activemq/5.15.2/apache-activemq-5.15.2-bin.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.15.2/apache-activemq-5.15.2-bin.zip.md5), [SHA512](https://www.apache.org/dist/activemq/5.15.2/apache-activemq-5.15.2-bin.zip.sha512) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.15.2-bin.tar.gz](http://www.apache.org/dyn/closer.cgi?filename=/activemq/5.15.2/apache-activemq-5.15.2-bin.tar.gz&action=download) + +[ASC](https://www.apache.org/dist/activemq/5.15.2/apache-activemq-5.15.2-bin.tar.gz.asc), [MD5](https://www.apache.org/dist/activemq/5.15.2/apache-activemq-5.15.2-bin.tar.gz.md5), [SHA512](https://www.apache.org/dist/activemq/5.15.2/apache-activemq-5.15.2-bin.tar.gz.sha512) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 3 +---------------------------------- + +To use this release in your maven project, the simplest dependency that you can use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.15.2 + + +If you need more fine grained control of your dependencies (activemq-all is an uber jar) pick and choose from the various components activemq-client, activemq-broker, activemq-xx-store etc. + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +Verify + +Source Release + +[activemq-parent-5.15.2-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.15.2/activemq-parent-5.15.2-source-release.zip) + +[ASC](https://www.apache.org/dist/activemq/5.15.2/activemq-parent-5.15.2-source-release.zip.asc), [MD5](https://www.apache.org/dist/activemq/5.15.2/activemq-parent-5.15.2-source-release.zip.md5), [SHA512](https://www.apache.org/dist/activemq/5.15.2/activemq-parent-5.15.2-source-release.zip.sha512) + +### Git Tag + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.15.2](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.15.2) + +Change Log +---------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12341669) + +Java 8 Required + +The minimum Java version has been upgraded to Java 8. + +This release affects applications using ObjectMessages. Please refer to [http://activemq.apache.org/objectmessage.html](http://activemq.apache.org/objectmessage.html) and .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6013](https://issues.apache.org/jira/browse/AMQ-6013?src=confmacro) for more information. + +Also see the previous [ActiveMQ 5.15.0 Release](activemq-5150-release.html) + diff --git a/activemq-520-release.md b/activemq-520-release.md new file mode 100644 index 0000000..8147588 --- /dev/null +++ b/activemq-520-release.md @@ -0,0 +1,131 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.2.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.2.0 Release](activemq-520-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.2 is primarily a maintenance release which [resolves](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=11841) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +. + +New Features in 5.2 +------------------- + +The new features and enhancements in this release include: + +* [Additional advisory messages](advisory-message.html) for messages delivered/consumed fast producers/slow consumers, Usage limits, Slaves become masters etc. +* Enhanced ssl context configuration through spring/xbean +* New individual acknowledge mode for message consumption +* Ability to configure the automatic discarding of the items being sent to the dead letter queue +* Ability to limit the maximum number of connections to a Broker +* Ability to configure [separate lock](https://issues.apache.org/activemq/browse/AMQ-1244) Datasource for JDBC Master slave. +* activemq-camel and activemq-connection-pool now have their own modules, no longer in activemq-core +* The default [ActiveMQConnectionFactory](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) brokerUrl now uses the [failover transport](failover-transport-reference.html). +* Uses Apache Camel [1.5](http://activemq.apache.org/camel/camel-150-release.html). + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.2.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.zip) + +[apache-activemq-5.2.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.2.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz) + +[apache-activemq-5.2.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz.asc) + +Do not use Safari to download, the above URLs use redirection + +The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using [FireFox](http://www.mozilla.com/en-US/firefox/) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.2.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[apache-activemq-5.2.0-src.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-src.zip) + +[apache-activemq-5.2.0-src.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-src.zip.asc) + +Source for Unix/Linux/Cygwin + +[apache-activemq-5.2.0-src.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-src.tar.gz) + +[apache-activemq-5.2.0-src.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-src.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.2.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=11841) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +Also see the previous [ActiveMQ 5.1.0 Release](activemq-510-release.html) + diff --git a/activemq-530-release.md b/activemq-530-release.md new file mode 100644 index 0000000..c569bc3 --- /dev/null +++ b/activemq-530-release.md @@ -0,0 +1,125 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.3.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.3.0 Release](activemq-530-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.3 is primarily a maintenance release which [resolves](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11914&styleName=Html&projectId=10520) 334 issues. + +New Features in 5.3 +------------------- + +The new features and enhancements in this release include: + +* New [KahaDB](kahadb.html) persistent storage +* [Camel 2.0.0](http://camel.apache.org) along with its web console +* stomp over SSL and NIO support +* Improved configuration - default one production oriented and a lot of use case configuration examples (like scalability and throughput) +* Ability to query broker for statistics from non-Java clients (by sending a message) +* More broker plugins included to help tracing messages in networks, improving logging, etc. +* FTP support for blob messages +* Improved activemq-admin to lookup for local processes if possible +* ... and much more + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.3.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.3.0/apache-activemq-5.3.0-bin.zip) + +[apache-activemq-5.3.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.0/apache-activemq-5.3.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.3.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/apache-activemq-5.3.0-bin.tar.gz) + +[apache-activemq-5.3.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.0/apache-activemq-5.3.0-bin.tar.gz.asc) + +Do not use Safari to download, the above URLs use redirection + +The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using [FireFox](http://www.mozilla.com/en-US/firefox/) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.3.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[activemq-parent-5.3.0-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.3.0/activemq-parent-5.3.0-source-release.zip) + +[activemq-parent-5.3.0-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.0/activemq-parent-5.3.0-source-release.zip.asc) + +Source for Unix/Linux/Cygwin + +[activemq-parent-5.3.0-source-release.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.3.0/activemq-parent-5.3.0-source-release.tar.gz) + +[activemq-parent-5.3.0-source-release.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.0/activemq-parent-5.3.0-source-release.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.3.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11914&styleName=Html&projectId=10520) + +Also see the previous [ActiveMQ 5.2.0 Release](activemq-520-release.html) + diff --git a/activemq-531-release.md b/activemq-531-release.md new file mode 100644 index 0000000..279fd43 --- /dev/null +++ b/activemq-531-release.md @@ -0,0 +1,114 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.3.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.3.1 Release](activemq-531-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.3 is primarily a maintenance release which [resolves](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=12183) 98 issues. + +The most improved areas in this release are: + +* KahaDB message store - fixed performance limiting issues in indexes for both Queues and Topics +* JDBC message store - a lot of improvements in reliability of this messages store +* `nio` and `stomp+nio` transports - fixed problems with leaking resources +* OSGi integration - a lot of small improvements and better Apache Karaf integration +* Web console security - secured against XSS and XSRF attacks + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.3.1-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.3.1/apache-activemq-5.3.1-bin.zip) + +[apache-activemq-5.3.1-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.1/apache-activemq-5.3.1-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.3.1-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.3.1/apache-activemq-5.3.1-bin.tar.gz) + +[apache-activemq-5.3.1-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.1/apache-activemq-5.3.1-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.3.1 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[activemq-parent-5.3.1-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.3.1/activemq-parent-5.3.1-source-release.zip) + +[activemq-parent-5.3.1-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.1/activemq-parent-5.3.1-source-release.zip.asc) + +Source for Unix/Linux/Cygwin + +[activemq-parent-5.3.1-source-release.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.3.1/activemq-parent-5.3.1-source-release.tar.gz) + +[activemq-parent-5.3.1-source-release.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.1/activemq-parent-5.3.1-source-release.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.3.1 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=12183) + +Also see the previous [ActiveMQ 5.3.0 Release](activemq-530-release.html) + diff --git a/activemq-532-release.md b/activemq-532-release.md new file mode 100644 index 0000000..8037d68 --- /dev/null +++ b/activemq-532-release.md @@ -0,0 +1,106 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.3.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.3.2 Release](activemq-532-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.3.2 is primarily a maintenance release which [resolves](https://issues.apache.org/activemq/secure/IssueNavigator.jspa?reset=true&&pid=10520&fixfor=12310&sorter/field=priority&sorter/order=DESC) 3 issues. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.3.2-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.3.2/apache-activemq-5.3.2-bin.zip) + +[apache-activemq-5.3.2-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.2/apache-activemq-5.3.2-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.3.2-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.3.2/apache-activemq-5.3.2-bin.tar.gz) + +[apache-activemq-5.3.2-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.2/apache-activemq-5.3.2-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.3.2 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[activemq-parent-5.3.2-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.3.2/activemq-parent-5.3.2-source-release.zip) + +[activemq-parent-5.3.2-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.2/activemq-parent-5.3.2-source-release.zip.asc) + +Source for Unix/Linux/Cygwin + +[activemq-parent-5.3.2-source-release.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.3.2/activemq-parent-5.3.2-source-release.tar.gz) + +[activemq-parent-5.3.2-source-release.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.3.2/activemq-parent-5.3.2-source-release.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-parent-5.3.2 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=12310) + +Also see the previous [ActiveMQ 5.3.1 Release](activemq-531-release.html) + diff --git a/activemq-540-release.md b/activemq-540-release.md new file mode 100644 index 0000000..4848afb --- /dev/null +++ b/activemq-540-release.md @@ -0,0 +1,140 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.4.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.4.0 Release](activemq-540-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Warning + +This release has been retracted due to bug [AMQ-3491](https://issues.apache.org/jira/browse/AMQ-3491). It is no longer downloadable from ASF servers. Please use the [ActiveMQ 5.4.3 Release](activemq-543-release.html) instead. + +Apache ActiveMQ 5.4.0 is primarily a maintenance release which [resolves](https://issues.apache.org/activemq/secure/IssueNavigator.jspa?reset=true&&pid=10520&fixfor=12110&sorter/field=priority&sorter/order=DESC) 283 issues. + +New Features in 5.4.1 +--------------------- + +* [Encrypted passwords](encrypted-passwords.html) +* Added selector support in [Ajax](ajax.html) + +New Features in 5.4 +------------------- + +* [Delay and Schedule Message Delivery](delay-and-schedule-message-delivery.html) +* Message Priority +* [WebSockets](websockets.html) +* [Better OSGi support](osgi-integration.html) +* Broker side options for updating failover clients automatically of new brokers joining and leaving the cluster - see [Failover Transport Reference](failover-transport-reference.html) +* [Enhanced Shell Script](unix-shell-script.html) \- for starting, stopping and managing the broker in a Unix environment +* [Easy way to configure Web Console](web-console.html) +* [Selectors for Ajax and REST consumers](rest.html) +* JaasDualAuthentcationPlugin +* [Anonymous users](security.html) +* Ajax Adapters +* ... and much more + +Note: XML configuration is now validated against the schema + +The XML configuration syntax is now validated. The broker schema element is an alphabetically ordered sequence. Validation can now cause existing xml configuration files, with out of order elements, to fail to load with XML parse errors, halting the broker start. Fix any ordering issues to continue. + +Note: New jetty XML configuration + +The jetty XML configuration now uses direct jetty bean syntax in the absence of xbean support. This renders existing (pre 5.4) jetty xml configuration invalid. It will be necessary to reapply custom changes using the default jetty.xml as a template. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.4.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.4.0/apache-activemq-5.4.0-bin.zip) + +[apache-activemq-5.4.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.0/apache-activemq-5.4.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.4.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.4.0/apache-activemq-5.4.0-bin.tar.gz) + +[apache-activemq-5.4.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.0/apache-activemq-5.4.0-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.4.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[activemq-parent-5.4.0-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.4.0/activemq-parent-5.4.0-source-release.zip) + +[activemq-parent-5.4.0-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.0/activemq-parent-5.4.0-source-release.zip.asc) + +Source for Unix/Linux/Cygwin + +[activemq-parent-5.4.0-source-release.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.4.0/activemq-parent-5.4.0-source-release.tar.gz) + +[activemq-parent-5.4.0-source-release.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.0/activemq-parent-5.4.0-source-release.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.4.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=12110) + +Also see the previous [ActiveMQ 5.3.2 Release](activemq-532-release.html) + diff --git a/activemq-541-release.md b/activemq-541-release.md new file mode 100644 index 0000000..582b245 --- /dev/null +++ b/activemq-541-release.md @@ -0,0 +1,133 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.4.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.4.1 Release](activemq-541-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Warning + +This release has been retracted due to bug [AMQ-3491](https://issues.apache.org/jira/browse/AMQ-3491). It is no longer downloadable from ASF servers. Please use the [ActiveMQ 5.4.3 Release](activemq-543-release.html) instead. + +Apache ActiveMQ 5.4.1 is primarily a maintenance release which resolves +[49 issues](https://issues.apache.org/activemq/secure/IssueNavigator.jspa?reset=true&&pid=10520&fixfor=12332&sorter/field=priority&sorter/order=DESC) mostly bug fixes and improvements + +New Features in 5.4.1 +--------------------- + +* [Encrypted passwords](encrypted-passwords.html) +* Added selector support in [Ajax](ajax.html) + +New Features in 5.4 +------------------- + +* [Delay and Schedule Message Delivery](delay-and-schedule-message-delivery.html) +* Message Priority +* [WebSockets](websockets.html) +* [Better OSGi support](osgi-integration.html) +* Broker side options for updating failover clients automatically of new brokers joining and leaving the cluster - see [Failover Transport Reference](failover-transport-reference.html) +* [Enhanced Shell Script](unix-shell-script.html) \- for starting, stopping and managing the broker in a Unix environment +* [Easy way to configure Web Console](web-console.html) +* [Selectors for Ajax and REST consumers](rest.html) +* JaasDualAuthentcationPlugin +* [Anonymous users](security.html) +* Ajax Adapters +* ... and much more + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.4.1-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.4.1/apache-activemq-5.4.1-bin.zip) + +[apache-activemq-5.4.1-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.1/apache-activemq-5.4.1-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.4.1-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.4.1/apache-activemq-5.4.1-bin.tar.gz) + +[apache-activemq-5.4.1-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.1/apache-activemq-5.4.1-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.4.1 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[activemq-parent-5.4.1-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.4.1/activemq-parent-5.4.1-source-release.zip) + +[activemq-parent-5.4.1-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.1/activemq-parent-5.4.1-source-release.zip.asc) + +Source for Unix/Linux/Cygwin + +[activemq-parent-5.4.1-source-release.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.4.1/activemq-parent-5.4.1-source-release.tar.gz) + +[activemq-parent-5.4.1-source-release.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.1/activemq-parent-5.4.1-source-release.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.4.1 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=12332) + +Also see the previous [ActiveMQ 5.4.0 Release](activemq-540-release.html) + diff --git a/activemq-542-release.md b/activemq-542-release.md new file mode 100644 index 0000000..458b48a --- /dev/null +++ b/activemq-542-release.md @@ -0,0 +1,111 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.4.2 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.4.2 Release](activemq-542-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Warning + +This release has been retracted due to bug [AMQ-3491](https://issues.apache.org/jira/browse/AMQ-3491). It is no longer downloadable from ASF servers. Please use the [ActiveMQ 5.4.3 Release](activemq-543-release.html) instead. + +Apache ActiveMQ 5.4.2 is primarily a maintenance release which resolves +[61 issues](https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&&pid=12311210&status=5&status=6&fixfor=12315625&sorter/field=priority&sorter/order=DESC) mostly bug fixes and improvements + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.4.2-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.4.2/apache-activemq-5.4.2-bin.zip) + +[apache-activemq-5.4.2-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.2/apache-activemq-5.4.2-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.4.2-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.4.2/apache-activemq-5.4.2-bin.tar.gz) + +[apache-activemq-5.4.2-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.2/apache-activemq-5.4.2-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.4.2 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[activemq-parent-5.4.2-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.4.2/activemq-parent-5.4.2-source-release.zip) + +[activemq-parent-5.4.2-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.2/activemq-parent-5.4.2-source-release.zip.asc) + +Source for Unix/Linux/Cygwin + +[activemq-parent-5.4.2-source-release.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.4.2/activemq-parent-5.4.2-source-release.tar.gz) + +[activemq-parent-5.4.2-source-release.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.2/activemq-parent-5.4.2-source-release.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.4.2 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&styleName=Html&version=12315625) + +Also see the previous [ActiveMQ 5.4.1 Release](activemq-541-release.html) + diff --git a/activemq-543-release.md b/activemq-543-release.md new file mode 100644 index 0000000..01e9399 --- /dev/null +++ b/activemq-543-release.md @@ -0,0 +1,101 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.4.3 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.4.3 Release](activemq-543-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.4.3 is a maintenance release which resolves [AMQ-3491](https://issues.apache.org/jira/browse/AMQ-3491), a critical bug which caused the 5.4.0, 5.4.1, and 5.4.2 releases to be retracted. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.4.3-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.4.3/apache-activemq-5.4.3-bin.zip) + +[apache-activemq-5.4.3-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.3/apache-activemq-5.4.3-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.4.3-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.4.3/apache-activemq-5.4.3-bin.tar.gz) + +[apache-activemq-5.4.3-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.3/apache-activemq-5.4.3-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.4.3 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source for Windows + +[activemq-parent-5.4.3-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.4.3/activemq-parent-5.4.3-source-release.zip) + +[activemq-parent-5.4.3-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.3/activemq-parent-5.4.3-source-release.zip.asc) + +Source for Unix/Linux/Cygwin + +[activemq-parent-5.4.3-source-release.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.4.3/activemq-parent-5.4.3-source-release.tar.gz) + +[activemq-parent-5.4.3-source-release.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.4.3/activemq-parent-5.4.3-source-release.tar.gz.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.4.3 + +Also see the previous [ActiveMQ 5.4.2 Release](activemq-542-release.html) + diff --git a/activemq-550-release.md b/activemq-550-release.md new file mode 100644 index 0000000..354b68a --- /dev/null +++ b/activemq-550-release.md @@ -0,0 +1,122 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.5.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.5.0 Release](activemq-550-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Warning + +This release has been retracted due to bug [AMQ-3491](https://issues.apache.org/jira/browse/AMQ-3491). It is no longer downloadable from ASF servers. Please use the [ActiveMQ 5.5.1 Release](activemq-551-release.html) instead. + +Apache ActiveMQ 5.5.0 is primarily a maintenance release which resolves over [130 issues](https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+AMQ+AND+fixVersion+%3D+12315626+AND+status+in+%28Resolved%2C+Closed%29+ORDER+BY+priority+DESC), mostly bug fixes and improvements + +New Features in 5.5.0 +--------------------- + +* Dependency on Java 1.6 (java 1.5 is no longer supported) +* MDC logging ([SLF4J](http://slf4j.org/)) +* Upgrade to camel 2.7.0 +* DLQ processing per durable subscription +* New network connector MBeans +* [IOExceptionHandler](http://activemq.apache.org/configurable-ioexception-handling.html) for JDBC store +* Added support for [Apache Commons Daemon](http://commons.apache.org/daemon/) + +Improvements in 5.5.0 +--------------------- + +* Improved support for recovery of durable subscribers with priority support +* Improved performance for offline durable subscriptions with large message backlogs (JDBC store) +* better support for Guest login via JAAS + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.5.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.5.0/apache-activemq-5.5.0-bin.zip) + +[apache-activemq-5.5.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.5.0/apache-activemq-5.5.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.5.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.5.0/apache-activemq-5.5.0-bin.tar.gz) + +[apache-activemq-5.5.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.5.0/apache-activemq-5.5.0-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.5.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.5.0-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.5.0/activemq-parent-5.5.0-source-release.zip) + +[activemq-parent-5.5.0-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.5.0/activemq-parent-5.5.0-source-release.zip.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.5.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&styleName=Html&version=12315626) + +Also see the previous [ActiveMQ 5.4.2 Release](activemq-542-release.html) + diff --git a/activemq-551-release.md b/activemq-551-release.md new file mode 100644 index 0000000..2f3af1a --- /dev/null +++ b/activemq-551-release.md @@ -0,0 +1,95 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.5.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.5.1 Release](activemq-551-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.5.1 is a maintenance release which resolves [AMQ-3491](https://issues.apache.org/jira/browse/AMQ-3491), a critical bug which caused the 5.5.0 release to be retracted. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.5.1-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.5.1/apache-activemq-5.5.1-bin.zip) + +[apache-activemq-5.5.1-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.5.1/apache-activemq-5.5.1-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.5.1-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.5.1/apache-activemq-5.5.1-bin.tar.gz) + +[apache-activemq-5.5.1-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.5.1/apache-activemq-5.5.1-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.5.1 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.5.1-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.5.1/activemq-parent-5.5.1-source-release.zip) + +[activemq-parent-5.5.1-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.5.1/activemq-parent-5.5.1-source-release.zip.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.5.1 + +Also see the previous [ActiveMQ 5.5.0 Release](activemq-550-release.html) + diff --git a/activemq-560-release.md b/activemq-560-release.md new file mode 100644 index 0000000..1a3bdd5 --- /dev/null +++ b/activemq-560-release.md @@ -0,0 +1,112 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.6.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.6.0 Release](activemq-560-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.6.0 is primarily a maintenance release which resolves over [435 issues](https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+AMQ+AND+fixVersion+%3D+12317974+AND+status+in+%28Resolved%2C+Closed%29+ORDER+BY+priority+DESC), mostly bug fixes and improvements + +New Features in 5.6.0 +--------------------- + +* LevelDB Store +* MQTT transport +* New LDAP security module +* Stomp 1.1 support +* stomp+nio+ssl transport +* Multi KahaDB persistence +* Priority Failover URIs +* Automatic client rebalance in broker cluster + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.6.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.6.0/apache-activemq-5.6.0-bin.zip) + +[apache-activemq-5.6.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.6.0/apache-activemq-5.6.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.6.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.6.0/apache-activemq-5.6.0-bin.tar.gz) + +[apache-activemq-5.6.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.6.0/apache-activemq-5.6.0-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.6.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.6.0-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.6.0/activemq-parent-5.6.0-source-release.zip) + +[activemq-parent-5.6.0-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.6.0/activemq-parent-5.6.0-source-release.zip.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.6.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12317974) + +Also see the previous [ActiveMQ 5.5.1 Release](activemq-551-release.html) + diff --git a/activemq-570-release.md b/activemq-570-release.md new file mode 100644 index 0000000..87de299 --- /dev/null +++ b/activemq-570-release.md @@ -0,0 +1,108 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.7.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.7.0 Release](activemq-570-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.7.0 is primarily a maintenance release which resolves nearly [200 issues](https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+AMQ+AND+fixVersion+%3D+%225.7.0%22+AND+status+%3D+Resolved+ORDER+BY+priority+DESC&mode=hide), mostly bug fixes and improvements + +* Java 7 support (compiled with jdk6 and validated with jdk7) +* [Secure WebSockets (wss) transport](http://activemq.apache.org/websockets.html#WebSockets-SecureWebSockets) +* [Broker Based Redelivery](http://activemq.apache.org/message-redelivery-and-dlq-handling.html#MessageRedeliveryandDLQHandling-BrokerRedelivery%28v5.7%29) +* [Pluggable Store Lockers](http://activemq.apache.org/pluggable-storage-lockers.html) +* [Lease based database locker](http://activemq.apache.org/pluggable-storage-lockers.html#Pluggablestoragelockers-LeaseDatabaseLocker) +* Set a [RedeliveryPolicy per destination](http://activemq.apache.org/redelivery-policy.html#RedeliveryPolicy-RedeliveryPolicyperDestination) +* Includes [Apache Camel 2.10](http://camel.apache.org/camel-2100-release.html) + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.7.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.7.0/apache-activemq-5.7.0-bin.zip) + +[apache-activemq-5.7.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.7.0/apache-activemq-5.7.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.7.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.7.0/apache-activemq-5.7.0-bin.tar.gz) + +[apache-activemq-5.7.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.7.0/apache-activemq-5.7.0-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-core + 5.7.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.7.0-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.7.0/activemq-parent-5.7.0-source-release.zip) + +[activemq-parent-5.7.0-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.7.0/activemq-parent-5.7.0-source-release.zip.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.7.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12321258) + +Also see the previous [ActiveMQ 5.6.0 Release](activemq-560-release.html) + diff --git a/activemq-580-release.md b/activemq-580-release.md new file mode 100644 index 0000000..d69d8e5 --- /dev/null +++ b/activemq-580-release.md @@ -0,0 +1,156 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.8.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.8.0 Release](activemq-580-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.8.0 resolves [160 issues](https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+AMQ+AND+fixVersion+%3D+%225.8.0%22+AND+status+%3D+Resolved+ORDER+BY+priority+DESC&mode=hide), mostly bug fixes and improvements. It has the following new features: + +* [AMQP](amqp.html) +* new feature modules and activemq-client module allowing smaller foorprint +* management via [REST](rest.html) with [jolokia](http://www.jolokia.org/) jmx to http bridge +* Includes [Apache Camel 2.10.3](http://camel.apache.org/camel-2103-release.html) +* Java 7 support (compiled with jdk6 and validated with jdk7) +* [Pure Master Slave](pure-master-slave.html) no longer supported + +There are some changes in 5.8 that may require some code change + +1. New modules may effect your maven pom dependencies + `activemq-core` has been replaced with `activemq-client` and `activemq-broker`. The various message stores have their own activemq-xx-store module. The uber module `activemq-all` remains. +2. Changed JMX Mbean ObjectNames will effect scripts or tools that directly reference Mbean names + All mbeans now share the type=Broker attribute, which gives them containment. In this way, consumers hang off of destinations, which hang off the broker. + The different Mbean types are identified by the presence of specific identifiers in their ObjectNames. The mapping from old to new ObjectName is as follows: + + Type + + Old Name + + New Name + + Broker + + Type=Broker + + type=Broker + + Destination + + Type=Queue|Topic,Destination= + + type=Broker,destinationType=Queue|Topic,destinationName= + + Connector + + Type=Connector + + type=Broker,connector=clientConnectors + + NetworkConnector + + Type=NetworkConnector + + type=Broker,connector=networkConnectors + + Connection + + Type=Connection + + type=Broker,connector=*,connectionViewType=remoteAddress|clientId + +3. OSGi integration has changed. The full details are at [OSGi Integration](osgi-integration.html). In summary: + 1. There is a single uber OSGI bundle + 2. The broker and webconsole are now configured via config admin pid files through an OSGi managed service factory. +4. The ActiveMQ binary file `bin/run.jar` has been renamed to `bin/activemq.jar`. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.8.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.8.0/apache-activemq-5.8.0-bin.zip) + +[apache-activemq-5.8.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.8.0/apache-activemq-5.8.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.8.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.8.0/apache-activemq-5.8.0-bin.tar.gz) + +[apache-activemq-5.8.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.8.0/apache-activemq-5.8.0-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.8.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.8.0-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.8.0/activemq-parent-5.8.0-source-release.zip) + +[activemq-parent-5.8.0-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.8.0/activemq-parent-5.8.0-source-release.zip.asc) + +### SVN Tag Checkout + +svn co http://svn.apache.org/repos/asf/activemq/tags/activemq-5.8.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12323282) + +Also see the previous [ActiveMQ 5.7.0 Release](activemq-570-release.html) + diff --git a/activemq-590-release.md b/activemq-590-release.md new file mode 100644 index 0000000..1827152 --- /dev/null +++ b/activemq-590-release.md @@ -0,0 +1,115 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.9.0 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.9.0 Release](activemq-590-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.9.0 resolves [more than 200 issues](https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+AMQ+AND+fixVersion+%3D+%225.9.0%22+AND+status+%3D+Resolved+ORDER+BY+priority+DESC&mode=hide), mostly bug fixes and improvements. It has the following new features: + +* [Replicated LevelDB Store](replicated-leveldb-store.html) for shared nothing Master/Slave. +* [Runtime Configuration](runtime-configuration.html) +* Generic JMS XA connection pool in activemq-jms-pool module (has no ActiveMQ dependency) +* MQTT over WebSockets support +* [**broker**](broker-camel-component.html) Apache Camel component +* Broker auto-restart upon losing master status +* AMQP Hardening +* LevelDB Hardening + +There are some changes in 5.9 that may require user intervention + +1. Schema change to JDBC Persistence Adapter. XID column type change. + +* If you use XA transactions you need to ensure there are no XA transactions pending completion before you upgrade. Some mode detail in [AMQ-4628](https://issues.apache.org/jira/browse/AMQ-4628) + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.9.0-bin.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.zip) + +[apache-activemq-5.9.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.9.0-bin.tar.gz](http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.tar.gz) + +[apache-activemq-5.9.0-bin.tar.gz.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/apache-activemq-5.9.0-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.9.0 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.9.0-source-release.zip](http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/activemq-parent-5.9.0-source-release.zip) + +[activemq-parent-5.9.0-source-release.zip.asc](http://archive.apache.org/dist/activemq/apache-activemq/5.9.0/activemq-parent-5.9.0-source-release.zip.asc) + +### SVN Tag Checkout + +https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.9.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12323932) + +Also see the previous [ActiveMQ 5.8.0 Release](activemq-580-release.html) + diff --git a/activemq-591-release.md b/activemq-591-release.md new file mode 100644 index 0000000..b77a4ce --- /dev/null +++ b/activemq-591-release.md @@ -0,0 +1,117 @@ +Apache ActiveMQ ™ -- ActiveMQ 5.9.1 Release + +[Overview](overview.html) > [Download](download.html) > [ActiveMQ 5.9.1 Release](activemq-591-release.html) + + +![](http://activemq.apache.org/activemq-500-release.data/activemq-5.x-box-reflection.png) + +Apache ActiveMQ 5.9.1 resolves [more than 120 issues](https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+AMQ+AND+fixVersion+%3D+%225.9.1%22+AND+status+%3D+Resolved+ORDER+BY+priority+DESC&mode=hide), mostly bug fixes and improvements. It has the following new features: + +* [Replicated LevelDB Store](replicated-leveldb-store.html) for shared nothing Master/Slave. +* [Runtime Configuration](runtime-configuration.html) +* Generic JMS XA connection pool in activemq-jms-pool module (has no ActiveMQ dependency) +* MQTT over WebSockets support +* [**broker**](broker-camel-component.html) Apache Camel component +* Broker auto-restart upon losing master status +* AMQP Hardening +* LevelDB Hardening + +There are some changes in 5.9 that may require user intervention + +1. Schema change to JDBC Persistence Adapter. XID column type change. + +* If you use XA transactions you need to ensure there are no XA transactions pending completion before you upgrade. Some mode detail in [AMQ-4628](https://issues.apache.org/jira/browse/AMQ-4628) + +Note that the Hawtio console was removed in this release. + +Getting the Binary Distributions +-------------------------------- + +Description + +Download Link + +PGP Signature file of download + +Windows Distribution + +[apache-activemq-5.9.1-bin.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.9.1/apache-activemq-5.9.1-bin.zip) + +[apache-activemq-5.9.1-bin.zip.asc](https://www.apache.org/dist/activemq/5.9.1/apache-activemq-5.9.1-bin.zip.asc) + +Unix/Linux/Cygwin Distribution + +[apache-activemq-5.9.1-bin.tar.gz](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.9.1/apache-activemq-5.9.1-bin.tar.gz) + +[apache-activemq-5.9.1-bin.tar.gz.asc](https://www.apache.org/dist/activemq/5.9.1/apache-activemq-5.9.1-bin.tar.gz.asc) + +Verify the Integrity of Downloads +--------------------------------- + +It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. The PGP signatures can be verified using PGP or GPG. Begin by following these steps: + +1. Download the [KEYS](http://www.apache.org/dist/activemq/KEYS) +2. Download the asc signature file for the relevant distribution +3. Verify the signatures using the following commands, depending on your use of PGP or GPG: + + $ pgpk -a KEYS + $ pgpv apache-activemq--bin.tar.gz.asc + + or + + $ pgp -ka KEYS + $ pgp apache-activemq--bin.tar.gz.asc + + or + + $ gpg --import KEYS + $ gpg --verify apache-activemq--bin.tar.gz.asc + + +(Where is replaced with the actual version, e.g., 5.1.0, 5.2.0, etc.). + +Alternatively, you can verify the MD5 signature on the files. A Unix program called `md5` or `md5sum` is included in most Linux and Unix distributions. It is also available as part of [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html). Windows users can utilize any of the following md5 programs: + +* [md5](http://www.fourmilab.ch/md5/) +* [md5sums](http://www.pc-tools.net/win32/md5sums/) +* [SlavaSoft FSUM](http://www.slavasoft.com/fsum/) + +Getting the Binaries using Maven 2 +---------------------------------- + +To use this release in your maven project, the proper dependency configuration that you should use in your [Maven POM](http://maven.apache.org/guides/introduction/introduction-to-the-pom.html) is: + + + org.apache.activemq + activemq-all + 5.9.1 + + +Getting the Source Code +----------------------- + +### Source Distributions + +Description + +Download Link + +PGP Signature file of download + +Source Release + +[activemq-parent-5.9.1-source-release.zip](http://www.apache.org/dyn/closer.cgi?path=/activemq/5.9.1/activemq-parent-5.9.1-source-release.zip) + +[activemq-parent-5.9.1-source-release.zip.asc](https://www.apache.org/dist/activemq/5.9.1/activemq-parent-5.9.1-source-release.zip.asc) + +### SVN Tag Checkout + +https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tag;h=refs/tags/activemq-5.9.1 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12323932) + +Also see the previous [ActiveMQ 5.8.0 Release](activemq-580-release.html) + diff --git a/activemq-advanced-features.md b/activemq-advanced-features.md new file mode 100644 index 0000000..a238fb6 --- /dev/null +++ b/activemq-advanced-features.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- ActiveMQ Advanced Features + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The NMS.ActiveMQ client provides several features in addition to fully implementing the NMS API. The features are documented here. + +* [ActiveMQ Consumer Features](activemq-consumer-features.html) + * [ActiveMQ Consumer Dispatch Async](activemq-consumer-dispatch-async.html) + * [ActiveMQ Consumer Priority](activemq-consumer-priority.html) + * [ActiveMQ Exclusive Consumers](activemq-exclusive-consumers.html) + * [ActiveMQ Retroactive Consumers](activemq-retroactive-consumers.html) +* [ActiveMQ Destination Features](activemq-destination-features.html) + * [ActiveMQ Destination Management](activemq-destination-management.html) + * [ActiveMQ Destination Options](activemq-destination-options.html) + * [ActiveMQ Mirrored Queues](activemq-mirrored-queues.html) + * [ActiveMQ Virtual Destinations](activemq-virtual-destinations.html) + * [ActiveMQ Wildcards](activemq-wildcards.html) +* [ActiveMQ Message Dispatching Features](activemq-message-dispatching-features.html) + * [ActiveMQ Async Sends](activemq-async-sends.html) +* [ActiveMQ Message Features](activemq-message-features.html) + * [ActiveMQ Delay and Schedule Message Feature](activemq-delay-and-schedule-message-feature.html) + + diff --git a/activemq-advisory-message-examples.md b/activemq-advisory-message-examples.md new file mode 100644 index 0000000..b7012c9 --- /dev/null +++ b/activemq-advisory-message-examples.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- ActiveMQ Advisory Message Examples + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Examples](activemq-examples.html) > [ActiveMQ Advisory Message Examples](activemq-advisory-message-examples.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +* [ActiveMQ Enumerate Destination using Advisory Messages](activemq-enumerate-destination-using-advisory-messages.html) + + diff --git a/activemq-artemis-roadmap.md b/activemq-artemis-roadmap.md new file mode 100644 index 0000000..5f8fde0 --- /dev/null +++ b/activemq-artemis-roadmap.md @@ -0,0 +1,89 @@ +Apache ActiveMQ ™ -- ActiveMQ Artemis Roadmap + +[ActiveMQ Artemis Roadmap](activemq-artemis-roadmap.html) + + +The goal of this page is to identify the outstanding issues that must be addressed by Artemis in order to achieve some level of feature parity with ActiveMQ 5.x. The overall objective for working toward feature parity between ActiveMQ 5.x and Artemis is for Artemis to eventually become ActiveMQ 6.x. This page exists so that we can work together as a group to achieve this goal. + +/**/ + +* [Using this page](#ActiveMQArtemisRoadmap-Usingthispage) +* [Features/Scenarios](#ActiveMQArtemisRoadmap-Features/Scenarios) + * [Advisory Support](#ActiveMQArtemisRoadmap-AdvisorySupport) + * [Broker Clustering](#ActiveMQArtemisRoadmap-BrokerClustering) + * [Destination Interceptors](#ActiveMQArtemisRoadmap-DestinationInterceptors) + * [Destination Features](#ActiveMQArtemisRoadmap-DestinationFeatures) + * [Plugin Support](#ActiveMQArtemisRoadmap-PluginSupport) + * [Storage Backend](#ActiveMQArtemisRoadmap-StorageBackend) +* [Migration](#ActiveMQArtemisRoadmap-Migration) +* [Wishlist](#ActiveMQArtemisRoadmap-Wishlist) + * [Protocol features](#ActiveMQArtemisRoadmap-Protocolfeatures) + * [KahaDB Migration Tool](#ActiveMQArtemisRoadmap-KahaDBMigrationTool) + * [Over-the-wire migration tool](#ActiveMQArtemisRoadmap-Over-the-wiremigrationtool) + +Work in Progress + +This page is a work in progress and will be updated frequently. + +Using this page +=============== + +Feature items can be listed, with links to JIRA tickets for longer conversation and hashing out specific feature details + +Features/Scenarios +================== + +This section should be used to identify all the ActiveMQ 5.x features that Artemis needs. This should include **all** Artemis features that we can identify, including those from ActiveMQ that Artemis has already implemented. This will help us to more clearly track everything that Artemis needs. + +### Advisory Support + +* Support for broker state change advisories (master -> slave, slave -> master) +* Support for connection advisories (connect, disconnect, unclean disconnect, authn fail, authz fail) +* Support for consumer advisories (new consumer, closed, slow consumer) +* Support for producer advisories (new producer, closed, fast producer, message size exceeded, memoryLimit reached, storage limit reached) +* Support for destination advisories (new dest, deleted) + +### Broker Clustering + +* Support full-duplex broker-to-broker cluster connections \[ .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [ARTEMIS-838](https://issues.apache.org/jira/browse/ARTEMIS-838?src=confmacro) \] + +### Destination Interceptors + +* Virtual Topic support \[ .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [ARTEMIS-550](https://issues.apache.org/jira/browse/ARTEMIS-550?src=confmacro) \] + +### Destination Features + +* Destination Policy: Garbage collection and advisory support for that activity \[ .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [ARTEMIS-1148](https://issues.apache.org/jira/browse/ARTEMIS-1148?src=confmacro) \] +* Exclusive consumer support \[ .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [ARTEMIS-854](https://issues.apache.org/jira/browse/ARTEMIS-854?src=confmacro) \] +* Exclusive consumer features: consumersBeforeDispatchStarts, timeBeforeDispatchStarts \[ .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [ARTEMIS-856](https://issues.apache.org/jira/browse/ARTEMIS-856?src=confmacro) \] + +### Plugin Support + +* Destination Policies (there is a slew of functionality in ActiveMQ 5.x dest policies that should be detailed out) + +### Storage Backend + +* Support for multiple shared persistence stores similar to multi-kahadb (allow for storage across multiple disk volumes.. ie.  queue://ORDER.> on /mnt/order queue://BILLING.> on /mnt/billing, etc) \[ .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [ARTEMIS-839](https://issues.apache.org/jira/browse/ARTEMIS-839?src=confmacro) \] + +Migration +========= + +This section should help to answer the end user question, _'How do I migrate from ActiveMQ 5.x to Artemis?'_. This should include the identification of any tools that can help make this easier, as well as documenting information and procedures specific to migrating. + +Wishlist +======== + +### Protocol features + +* Exclusive consumer support across all protocols STOMP, MQTT, AMQP, etc. \[ .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [ARTEMIS-855](https://issues.apache.org/jira/browse/ARTEMIS-855?src=confmacro) \] + + +### KahaDB Migration Tool + +* Support exporting messages from KahaDB format to Artemis + +### Over-the-wire migration tool + +* Support a tool for migrating messages from ActiveMQ 5.x brokers to Artemis-based brokers (for non-standard backends) + * Goal: preserve messageId + diff --git a/activemq-async-sends.md b/activemq-async-sends.md new file mode 100644 index 0000000..864ad8d --- /dev/null +++ b/activemq-async-sends.md @@ -0,0 +1,46 @@ +Apache ActiveMQ ™ -- ActiveMQ Async Sends + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Message Dispatching Features](activemq-message-dispatching-features.html) > [ActiveMQ Async Sends](activemq-async-sends.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Background +---------- + +Apache.NMS.ActiveMQ supports sending messages to a broker in sync or async mode. The mode used has a huge impact in the latency of the send call. Since latency is typically a huge factor in the throughput that can achieved by producer, using async sends can increase the performance of your system dramatically. + +The good news is that Apache.NMS.ActiveMQ sends message in async mode by default in several cases. It is only in cases where the JMS specification required the use of sync sending that we default to sync sending. The cases that we are forced to send in sync mode are when persistent messages are being sent outside of a transaction. + +If you are not using transactions and are sending persistent messages, then each send is synch and blocks until the broker has sent back an acknowledgement to the producer that the message has been safely persisted to disk. This ack provides that guarantee that the message will not be lost but it also costs a huge latency penalty since the client is blocked. + +Many high performance applications are designed to be tolerate a small amount of message loss in failure scenarios. If your application has been designed in this fashion, you can enable the use of async sends to increase throughput even when using persistent messages. + +### Configuring Async Send using a Connection URI + +You can use the [Connection Configuration URI](activemq-uri-configuration.html) to configure async sends as follows + +var cf = new ConnectionFactory("tcp://locahost:61616?nms.AsyncSend=true"); + +### Configuring Async Send at the ConnectionFactory Level + +You can enable this feature on the Apache.NMS.ActiveMQ.ConnectionFactory object using the property. + +((ConnectionFactory)connectionFactory).AsyncSend = true; + +### Configuring Async Dispatch at the Connection Level + +Configuring the async send setting at this level overrides the settings at the connection factory level. + +You can enable this feature on the Apache.NMS.ActiveMQ.Connection object using the property. + +((Apache.NMS.ActiveMQ.Connection)connection).AsyncSend = true; + +### Also see + +* [Connection Configuration URI](activemq-uri-configuration.html) +* [Should I use transactions](http://activemq.apache.org/should-i-use-transactions.html) +* [Consumer Dispatch Async](activemq-consumer-dispatch-async.html) + + diff --git a/activemq-build-notes.md b/activemq-build-notes.md new file mode 100644 index 0000000..c99abac --- /dev/null +++ b/activemq-build-notes.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- ActiveMQ Build Notes + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Build Notes](activemq-build-notes.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/activemq-c-clients.md b/activemq-c-clients.md new file mode 100644 index 0000000..767d7b9 --- /dev/null +++ b/activemq-c-clients.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- ActiveMQ C++ Clients + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [ActiveMQ C++ Clients](activemq-c-clients.html) + + +ActiveMQ C++ Integration +------------------------ + +[CMS](http://activemq.apache.org/cms/) is an easy-to-use JMS 1.1-like API. Our implementation of CMS is called ActiveMQ-CPP, the architecture for which supports pluggable transport protocols, very much like the ActiveMQ broker itself. + diff --git a/activemq-c-development.md b/activemq-c-development.md new file mode 100644 index 0000000..ff4122b --- /dev/null +++ b/activemq-c-development.md @@ -0,0 +1,99 @@ +Apache ActiveMQ ™ -- ActiveMQ C Development + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [ActiveMQ C++ Clients](activemq-c-clients.html) > [ActiveMQ C Development](activemq-c-development.html) + + +ActiveMQ CPP Development Page +============================= + +This page documents current and planned development of ActiveMQ CPP.  The table below lists development tasks and their current status + +Development Activeity + +Status + +Openwire Support + +in-progress + +###  Openwire Support + +This task adds support for the OpenWire protocol to ActiveMQ CPP.  The tasks involves the addition of new code, the activities are listed below, as well as who is working on them and what the status of each is. + +Task Description + +Assigned to + +Status + +Task Info + +Openwire Command / Marshallers generation scripts + +Tim Bish + +In-Progress + +Loose Marshalling works, Tight still not working + +WireFormat Negotiation Framework + +Tim Bish + +Completed + +Mimic the DotNet version? + +Primitives Map + +Nate Mittler + +Completed + +Needs more testing for memory leaks and performance. + +Primitive Map Marshalling + +Tim Bish + +Completed + +Needs more testing, for leaks etc.  Add nested maps, lists. + +BaseDataStreamMarshallers Port + +Tim Bish + +In-Progress + +Done, but serious unit testing is needed + +BooleanStream Port + +Tim Bish + +Completed + +Done + +OpenWire Connector Framework Classes + +Tim / Nate + +Completed + +Needs lots of testing + +DataInputStreams / DataOutputStreams + +Tim Bish + +Completed + +Done + +Outstanding Issues +------------------ + +This section document issues that are outstanding...TDB + diff --git a/activemq-command-line-tools-reference.md b/activemq-command-line-tools-reference.md new file mode 100644 index 0000000..3a819b6 --- /dev/null +++ b/activemq-command-line-tools-reference.md @@ -0,0 +1,788 @@ +Apache ActiveMQ ™ -- ActiveMQ Command Line Tools Reference + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [ActiveMQ Command Line Tools Reference](activemq-command-line-tools-reference.html) + + +Command Line Tools +================== + +The current script contains the entire functionality to manage activemq. + +* [activemq](activemq-command-line-tools-reference.html) \- runs an activemq broker + (see [Unix Shell Script](unix-shell-script.html)) + +In versions prior 5.4.1 some management functionalities beyond controlling the service itself where part of the "activemq-admin" script. +This script is currently still part of the distribution to provide access to this for Windows users- + +* [activemq-admin](activemq-command-line-tools-reference.html) \- manages a broker instance + +In versions prior to 5.0 the functionality of activemq-admin script was scattered over multiple scripts, such as: + +* [shutdown](activemq-command-line-tools-reference.html) \- shutdowns an activemq broker +* [list](activemq-command-line-tools-reference.html) \- lists all running brokers in the specified JMX context +* [query](activemq-command-line-tools-reference.html) \- queries the JMX context for broker statistics and information +* [bstat](activemq-command-line-tools-reference.html) \- predefined query that displays useful broker statistics +* [browse](activemq-command-line-tools-reference.html) \- browse the messages of a specific queue +* [purge](activemq-command-line-tools-reference.html) \- delete selected destination's messages that matches the message selector + +activemq script + + +--------------------- + +**Description of this script is valid for Windows platform.** For Unix platform it is valid for broker versions prior to 5.4.0. With version 5.4.0 and later, ActiveMQ comes with enhanced [Unix Shell Script](unix-shell-script.html) + +Script Name + +activemq.bat, activemq + +Task Usage + +_activemq \[options\] \[config\]_ or _java -jar run.jar start \[options\] \[config\]_ + +Description + +Script to run an activemq broker either by specifying a broker configuration file or through a broker URI configuration. + +**Options:** + +Option Name + +Syntax + +Example + +Description + +System Define Option + +-D= + +-Dactivemq.home=c:/ActiveMQ + +Sets a systems property. i.e Systems.getProperty("activemq.home"); will return c:/ActiveMQ + +Help Option + +-h or -? or --help + +activemq --help + +Display the help messages for the activemq script. + +Version Option + +--version + +activemq --version + +Display the activemq version information. + +**Examples:** + +Example + +Description + +activemq + +Runs a broker using the default 'xbean:activemq.xml' as the broker configuration file. + +activemq xbean:myconfig.xml + +Runs a broker using the file myconfig.xml as the broker configuration file that is located in the classpath. + +activemq xbean:file:./conf/broker1.xml + +Runs a broker using the file broker1.xml as the broker configuration file that is located in the relative file path ./conf/broker1.xml + +activemq xbean:file:C:/ActiveMQ/conf/broker2.xml + +Runs a broker using the file broker2.xml as the broker configuration file that is located in the absolute file path C:/ActiveMQ/conf/broker2.xml + +activemq broker:(tcp://localhost:61616, tcp://localhost:5000)?useJmx=true + +Runs a broker with two transport connectors and JMX enabled.¹ + +activemq broker:(tcp://localhost:61616, network:tcp://localhost:5000)?persistent=false + +Runs a broker with 1 transport connector and 1 network connector with persistence disabled.¹ + +For details on how to configure using broker URI refer to: [Broker Configuration URI](broker-configuration-uri.html) + +activemq-admin +-------------- + +As of ActiveMQ 5.x, the above standalone utilities have been incorporated into the activemq-admin command (with the exception of the activemq script), as follows: + +* [activemq-admin stop](activemq-command-line-tools-reference.html) +* [activemq-admin list](activemq-command-line-tools-reference.html) +* [activemq-admin query](activemq-command-line-tools-reference.html) +* [activemq-admin bstat](activemq-command-line-tools-reference.html) +* [activemq-admin browse](activemq-command-line-tools-reference.html) + +The syntax of each task remains as described below. Note also that the activemq command is still supported. + +### stop task + +Task Name + +stop + +Task Usage + +_activemq-admin stop \[options\] \[broker names\]_ + +Description + +Script to stop a running activemq broker. This task requires that JMX is enabled. + +**Options:** + +Option Name + +Syntax + +Example + +Description + +Stop All Option + +--all + +stop --all + +Stops all registered brokers in the specified JMX context + +JMX URL Option + +--jmxurl + +--jmxurl service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi + +Change the JMX service url to connect to. By default it connects to: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi + +JMX Authentication Option + +--jmxuser user --jmxpassword password + +--jmxuser smx --jmxpassword smx + +For cases where username/password based authentication of the JMX client is required. Not set by default. + +System Define Option + +-D= + +-Dactivemq.home=c:/ActiveMQ + +Sets a systems property. i.e Systems.getProperty("activemq.home"); will return c:/ActiveMQ + +Help Option + +-h or -? or --help + +--help + +Display the help messages for the stop script. + +Version Option + +--version + +activemq --version + +Display the activemq version information. + +**Examples:** + +Example + +Description + +activemq-admin stop + +Stops the only running broker in the default JMX context. It assumes that there is only one running broker. + +activemq-admin stop --jmxurl service:jmx:rmi:///jndi/rmi://remotehost:1099/jmxrmi --all + +Stops all the running broker in the specified JMX context. + +activemq-admin stop localhost + +Stops the broker named 'localhost' in the default JMX context. + +activemq-admin stop localhost remotehost + +Stops the brokers 'localhost' and 'remotehost' in the default JMX context. + +### list task + +Task Name + +list + +Task Usage + +_activemq-admin list \[options\]_ + +Description + +Script to list the names of all running brokers in the specified JMX context. This task requires that JMX is enabled. + +**Options:** + +Option Name + +Syntax + +Example + +Description + +JMX URL Option + +--jmxurl + +--jmxurl service:jmx:rmi:///jndi/rmi://remotehost:1099/jmxrmi + +Change the JMX service url to connect to. By default it connects to: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi + +JMX Authentication Option + +--jmxuser user --jmxpassword password + +--jmxuser smx --jmxpassword smx + +For cases where username/password based authentication of the JMX client is required. Not set by default. + +System Define Option + +-D= + +-Dactivemq.home=c:/ActiveMQ + +Sets a systems property. i.e Systems.getProperty("activemq.home"); will return c:/ActiveMQ + +Help Option + +-h or -? or --help + +--help + +Display the help messages for the list script. + +Version Option + +--version + +activemq --version + +Display the activemq version information. + +**Examples:** + +Example + +Description + +activemq-admin list + +Lists the names of all running brokers in the default JMX context. + +activemq-admin list --jmxurl service:jmx:rmi:///jndi/rmi://remotehost:1099/jmxrmi + +List the names of all running brokers in the specified JMX context. + +### query task + +Task Name + +query + +Task Usage + +_activemq-admin query \[options\]_ + +Description + +Script to query the specified JMX context for mbean attributes and information. This script requires that JMX is enabled. + +**Options:** + +Option Name + +Syntax + +Example + +Description + +Predefined Query Option + +-Q= + +-QTopic=TEST.FOO, -QBroker=*host + +Predefined object name query option that queries a specific type of mbean object based on its type and selected identifier. Refer to the mbean reference table below for details. + +-xQ= + +-xQTopic=ActiveMQ.Advisory.*, -xQNetworkConnector=* + +Predefined object name query option that removes all mbeans that matches the query from the search result. Refer to the mbean reference table below for details. + +Object Name Query Option + +--objname + +--objname Type=**Connect**,BrokerName=local* + +Query option loosely based on the JMX object name format, which lets you filter mbeans based on their object name information. Refer to the mbean reference table below for details. + +--xobjname + +--xobjname Type=Topic,Destination=ActiveMQ.Advisory.* + +Object name query that removes all mbeans that matches the query from the search result. Refer to the mbean reference table below for details. + +View Option + +--view + +--view Type,BrokerName,Destination,EnqueueCount,DequeueCount + +Lets you specify the attributes and object name information to view. If the view is omitted, all attributes and information will be displayed. + +JMX URL Option + +--jmxurl + +--jmxurl service:jmx:rmi:///jndi/rmi://remotehost:1099/jmxrmi + +Change the JMX service url to connect to. By default it connects to: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi + +JMX Authentication Option + +--jmxuser user --jmxpassword password + +--jmxuser smx --jmxpassword smx + +For cases where username/password based authentication of the JMX client is required. Not set by default. + +System Define Option + +-D= + +-Dactivemq.home=c:/ActiveMQ + +Sets a systems property. i.e Systems.getProperty("activemq.home"); will return c:/ActiveMQ + +Help Option + +-h or -? or --help + +--help + +Display the help messages for the query script. + +Version Option + +--version + +activemq --version + +Display the activemq version information. + +**Examples:** + +Example + +Description + +activemq-admin query + +Display all attributes and object name information of all registered mbeans in the default JMX context. + +activemq-admin query -QTopic=TEST.FOO + +Display all the attributes and object name information of the destination topic 'TEST.FOO' + +activemq-admin query -QQueue=* + +Display all the attributes and object name information of all registered queues. + +activemq-admin query -QTopic=*.FOO -xQTopic=ActiveMQ.Advisory.* + +Display all the attributes and object name information of all topics that ends with '.FOO' except those that also begins with 'ActiveMQ.Advisory.'. + +activemq-admin query -QBroker=local???? --view Type,BrokerName,EnqueueCount,DequeueCount + +Display the object type, broker name, enqueue count, and dequeue count information for all 9-letter brokers that begins with 'local'. + +activemq-admin query --objname Type=**Connect**,BrokerName=localhost -xQNetworkConnector=* + +Display all the attributes and object name information for all connections and connectors for broker 'localhost' except its network connectors. + +activemq-admin query --objname Type=Connection --xobjname Type=Connection,BrokerName=localhost + +Display all the attributes and object name information for all registered connections except those belonging to broker 'localhost'. + +activemq-admin query -QQueue=???? --objname Type=Connection --xobjname BrokerName=remote* + +Display all the attributes and object name information for all 4-letter queues and connections except those belonging to a broker that begins with 'remote'. + +**ActiveMQ MBean Reference:** + +Mbean Type + +Properties / ObjectName + +Attributes + +Broker + +* **Type**=Broker +* **BrokerName**= + +* BrokerId +* TotalEnqueueCount +* TotalDequeueCount +* TotalConsumerCount +* TotalMessages +* TotalMessagesCached +* MemoryLimit +* MemoryPercentageUsed + +Destination + +* **Type**=Queue|Topic +* **Destination**= +* **BrokerName**= + +* EnqueueCount +* DequeueCount +* ConsumerCount +* Messages +* MessagesCached + +NetworkConnector + +* **Type**=NetworkConnector +* **BrokerName**= + +Connector + +* **Type**=Connector +* **ConnectorName**= +* **BrokerName**= + +* EnqueueCount +* DequeueCount + +Connection + +* **Type**=Connection +* **Connection**= +* **BrokerName**= + +* EnqueueCount +* DequeueCount +* DispatchQueueSize +* Active +* Blocked +* Connected +* Slow + +### bstat task + +Task Name + +bstat + +Task Usage + +_activemq-admin bstat_ \[broker name\] + +Description + +Predefined query script that displays useful statistics regarding a broker and its components. + +**Examples:** + +Example + +Description + +activemq-admin bstat + +Display useful statistics for all registered brokers in the default JMX context. + +activemq-admin bstat localhost + +Display useful statistics for the registered broker 'localhost'. + +### browse task + +Task Name + +browse + +Task Usage + +_activemq-admin browse --amqurl \[options\] _ or _java -jar run.jar browse --amqurl \[options\] _ + +Description + +Script to browse selected destinations' messages.  The browse operation may not return all messages due to limitations of broker configuration and system resources. + +**Options:** + +Option Name + +Syntax + +Example + +Description + +Broker URL Option + +--amqurl + +--amqurl tcp://localhost:61616 + +Specify the broker URL to connect to. + +Message Selector Option + +--msgsel "" + +--msgsel "JMSMessageID='*:10',JMSPriority>5" + +Allows you to filter the specific messages to view. Place the entire selector criteria in double quotes " ". You can use wildcard queries by enclosing the string message property in ' '. Other than using wildcard queries to filter string properties, other queries follows the message selector format. + +Group View Option + +-V\[header | custom | body\] + +-Vheader, -Vcustom, -Vbody + +Let's you specify a specific group of message attributes to view. The header view shows all the standard JMS message headers. The custom view shows all the custom fields added to each JMS message. The body view shows the message body of the JMS message. + +Specific View Option + +--view ,\[header:|custom:\],... + +--view JMSMessageID='*:10',custom:MyCustomField + +Let's you specifically select a specific message attribute. It allows you to select specific attributes from the JMS and custom headers. You could add the tags header: and custom: to explicitly specify where the attribute belongs to. Refer to the message header table below for details. + +System Define Option + +-D= + +-Dactivemq.home=c:/ActiveMQ + +Sets a systems property. i.e Systems.getProperty("activemq.home"); will return c:/ActiveMQ + +Help Option + +-h or -? or --help + +--help + +Display the help messages for the browse script. + +Version Option + +--version + +activemq --version + +Display the activemq version information. + +**Examples:** + +Example + +Description + +activemq-admin browse --amqurl tcp://localhost:61616 TEST.FOO + +Prints the JMS message header, custom message header, and message body of the messages in the queue 'TEST.FOO' + +activemq-admin browse --amqurl tcp://localhost:61616 -Vheader,body TEST.FOO + +Prints the JMS message header and message body of the messages in the queue 'TEST.FOO' + +activemq-admin browse --amqurl tcp://localhost:61616 -Vheader --view custom:MyCustomField TEST.FOO TEST.BAR + +Prints all the JMS message header and the custom field 'MyCustomField' of the messages in the queue 'TEST.FOO' and 'TEST.BAR'. + +activemq-admin browse --amqurl tcp://localhost:61616 --msgsel "JMSMessageID='*:10',JMSPriority>5" TEST.FOO + +Prints all the attributes of the messages in the queue 'TEST.FOO' that has a JMSMessageID that matches the wildcard query *:10 and has a JMSPriority greater than 5. + +**JMS Message Header Reference:** + +Header Name + +Header Type + +JMSCorrelation ID + +String + +JMSDelivery Mode + +int (1-Non-Persistent, 2-Persistent) + +JMSDestination + +javax.jms.Destination + +JMSExpiration + +long + +JMSMessageID + +String + +JMSPriority + +int + +JMSRedelivered + +boolean + +JMSReplyTo + +javax.jms.Destination + +JMSTimestamp + +long + +JMSType + +String + +### purge task + +Task Name + +purge + +Task Usage + +_activemq-admin purge_ \[purge-options\] + +Description + +Delete selected destination's messages that matches the message selector. + +**Options:** + +Option Name + +Syntax + +Example + +Description + +JMX URL Option + +--jmxurl + +--jmxurl service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi + +Change the JMX service url to connect to. By default it connects to: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi + +JMX Authentication Option + +--jmxuser user --jmxpassword password + +--jmxuser smx --jmxpassword smx + +For cases where username/password based authentication of the JMX client is required. Not set by default. + +Message Selector Option + +--msgsel "" + +--msgsel "JMSMessageID='*:10',JMSPriority>5" + +Allows you to filter the specific messages to view. Place the entire selector criteria in double quotes " ". You can use wildcard queries by enclosing the string message property in ' '. Other than using wildcard queries to filter string properties, other queries follows the message selector format. + +System Define Option + +-D= + +-Dactivemq.home=c:/ActiveMQ + +Sets a systems property. i.e Systems.getProperty("activemq.home"); will return c:/ActiveMQ + +Help Option + +-h or -? or --help + +--help + +Display the help messages for the browse script. + +Version Option + +--version + +activemq --version + +Display the activemq version information. + +**Examples:** + +Example + +Description + +activemq-admin purge FOO.BAR + +Delete all the messages in queue FOO.BAR + +activemq-admin purge --msgsel "JMSMessageID='*:10',JMSPriority>5" FOO.* + +Delete all the messages in the destinations that matches FOO.* and has a JMSMessageID in", the header field that matches the wildcard *:10, and has a JMSPriority field > 5 in the", queue FOO.BAR +To use wildcard queries, the field must be a string and the query enclosed in '' + +### dstat task + +Task Name + +dstat + +Task Usage + +_activemq-admin dstat_ \[destination type\] + +Description + +Predefined query script that displays useful statistics regarding destinations on a broker. + +**Examples:** + +Example + +Description + +activemq-admin dstat + +Display useful statistics for all destinations on the broker in the default JMX context. + +activemq-admin dstat topics + +Display useful statistics for the Topics that currently exist on the Broker. + diff --git a/activemq-connection-uris.md b/activemq-connection-uris.md new file mode 100644 index 0000000..32662fb --- /dev/null +++ b/activemq-connection-uris.md @@ -0,0 +1,249 @@ +Apache ActiveMQ ™ -- ActiveMQ Connection URIs + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) + + +Transport configuration options +------------------------------- + +One of the first kinds of URI you are likely to use is a transport URI to connect to a broker using a kind of transport. Generally TCP or VM are the first transports you'll use. + +Be careful about whitespace + +All of the following URI configurations are based on the java.net.URI class which does not allow whitespace to be used. So if you are using **`failover:`** or **`static:`** URIs, do not put any whitespace around the **`','`** symbol. + +### The AUTO Transport + +Starting with 5.13.0 ActiveMQ has support for automatic wire protocol detection over TCP, SSL, NIO, and NIO SSL.  OpenWire, STOMP, AMQP, and MQTT are supported.  For details see the [AUTO](auto.html) Transport Reference. + +### The VM Transport + +The VM transport allows clients to connect to each other inside the VM without the overhead of the network communication. The connection used is not that of a socket connection but instead uses direct method invocations to enable a high performance embedded messaging system. + +The first client to use the VM connection will boot an embedded broker. Subsequent connections will attach that the same broker. Once all VM connections to the broker have been closed, the embedded broker will automatically shutdown. + +For more information see the [VM Transport Reference](vm-transport-reference.html) + +### The AMQP Transport + +As of 5.8.0 ActiveMQ has support for AMQP. For details see the [AMQP](amqp.html) Transport Reference. + +### The MQTT Transport + +Starting with 5.6.0 ActiveMQ also supports [MQTT](http://mqtt.org/). Its a light weight publish/subscribe messaging transport. See the [MQTT](mqtt.html) Transport Reference for details. + +### The TCP Transport + +The TCP transport allows clients to connect a remote ActiveMQ using a a TCP socket. + +For more information see the [TCP Transport Reference](tcp-transport-reference.html) + +### The NIO Transport + +Same as the TCP transport, except that the [New I/O (NIO)](http://en.wikipedia.org/wiki/New_I/O) package is used, which may provide better performance. The Java NIO package should not be confused with IBM's [AIO4J](http://java.sys-con.com/read/46658.htm) package. + +To switch from TCP to NIO, simply change the scheme portion of the URI. Here's an example as defined within a broker's XML configuration file. + + + ... + + + + ... + + +Trying to use nio transport url on the client side will instantiate the regular TCP transport. For more information see the [NIO Transport Reference](nio-transport-reference.html) + +### The SSL Transport + +This allows you to talk over TCP using SSL. For more information see the [SSL Transport Reference](ssl-transport-reference.html) + +### The NIO SSL Transport + +Availability + +Available since 5.6 + +Implementing SSL transport over NIO. This allows you to connect large number of SSL clients to a single broker instance. It's server side transport-option only + + + ... + + + + ... + + +Trying to use `nio+ssl` transport url on the client side will instantiate the regular SSL transport. + +### The Peer Transport + +The Peer transport provides a peer-to-peer network with ActiveMQ. What actually happens is the peer transport uses the VM transport to create and connect to a local embedded broker but which configures the embedded broker to establish network connections to other peer embedded brokers. + +For more information see the [Peer Transport Reference](peer-transport-reference.html) + +### The UDP Transport + +This allows you to talk over UDP. + +For more information see the [UDP Transport Reference](udp-transport-reference.html) + +### The Multicast Transport + +This allows you to talk over Multicast. + +For more information see the [Multicast Transport Reference](multicast-transport-reference.html) + +### The HTTP and HTTPS Transport + +This allows the ActiveMQ client and broker to tunnel over HTTP. If the client is not JMS you might want to look at [REST](rest.html) or [Ajax](ajax.html) support instead. + +For more information see the [HTTP and HTTPs Transports Reference](http-and-https-transports-reference.html) + +### The WebSockets Transport + +This transport uses the new HTML5 WebSockets to exchange messages with the broker. For more information see the [WebSockets](websockets.html) Transport Reference + +### The Stomp Transport + +A plain text transport that can be used with many languages. See [Stomp](stomp.html) for more details. + +General Purpose URIs +-------------------- + +You can configure other features via the URI syntax as follows... + +### Connection Configuration URI + +Any Apache ActiveMQ JMS connection can be configured using the URL or explicitly setting properties on the [ActiveMQConnection](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html) or [ActiveMQConnectionFactory](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) objects themselves. + +For more information see [Connection Configuration URI](connection-configuration-uri.html) + +### Destination Options + +You can configure various consumer related options using [Destination Options](destination-options.html) which allow you to configure destinations using URI syntax. + +### Broker Configuration URI + +You can use a [Broker Configuration URI](broker-configuration-uri.html) to configure an embedded broker, either using the BrokerFactory helper class from Java or using the activemq shell script. For more details see [How to Run a Broker](run-broker.html) + +### Configuring Wire Formats + +Any transport which involves marshalling messages onto some kind of network transport like TCP or UDP will typically use the [OpenWire](openwire.html) format. This is configurable to customize how things appear on the wire. + +For more information see [Configuring Wire Formats](configuring-wire-formats.html) + +High Level Protocol URIs +------------------------ + +The following higher level protocols can be configured via URI + +### The Failover Transport + +The Failover transport layers reconnect logic on top of any of the other transports. This is what used to be the Reliable transport in ActiveMQ 3. Its configuration syntax allows you to specify any number of composite URIs. The Failover transport randomly chooses one of the composite URIs and attempts to establish a connection to it. If it does not succeed or if it subsequently fails, a new connection is established to one of the other URIs in the list. + +For more information see the [Failover Transport Reference](failover-transport-reference.html) + +### The Fanout Transport + +The Fanout transport layers reconnect and replicate logic on top of any of the other transports. It is used replicate commands to multiple brokers. + +For more information see the [Fanout Transport Reference](fanout-transport-reference.html) + +Using Discovery +--------------- + +Often when using transports like TCP you want to use [Discovery](discovery.html) to locate the available brokers. This is different from using, say, [Multicast](multicast-transport-reference.html) \- as the actual main communication is over TCP but multicast is purely used to discover the location of brokers. + +### The Discovery Transport + +The Discovery transport works just like the reliable transport, except that it uses a discovery agent to locate the list of URIs to connect to. + +For more information see the [Discovery Transport Reference](discovery-transport-reference.html) + +### The ZeroConf Transport + +The ZeroConf transport provides [Discovery](discovery.html) and it works like the [Discovery Transport](discovery-transport-reference.html) but rather than using our own multicast based discovery mechanism (which allows you to configure the exact multicast address and port, etc.), the [ZeroConf](zeroconf.html) transport is used instead. + +For more information see the [ZeroConf Transport Reference](zeroconf-transport-reference.html) + +### Server side options + +There are a number of options that can be used for changing behavior on the server for the **`TransportConnector`** in the ActiveMQ broker configuration. These are: + +property name + +default + +description + +`allowLinkStealing` + +`false` + +This is enabled for default for MQTT transport. + +Link Stealing is where the last of two or more connections with the same id (clientID for JMS) is deemed the valid connection and the older one is closed by the broker. + +`discoveryURI` + +`null` + +If set, the multicast discovery address for client connections to find the broker. + +`enableStatusMonitor` + +`false` + +Will monitor connections to determine if they are blocked. + +`name` + +`null` + +The name of the **`TransportConnector`** instance. + +`rebalanceClusterClients` + +`false` + +Will automatically re-balance clients across the cluster on changes of topology. + +`updateClusterClients` + +`false` + +If enabled, will update client connections (if they use the **`failover://`** transport) of changes to the broker cluster. + +`updateClusterClientsOnRemove` + +`false` + +Will update clients if a broker is removed from the cluster. + +`updateClusterFilter` + +`null` + +Comma separated list of regular expressions. Brokers with a name matching the pattern will be included for client updates. + +`uri` + +`null` + +The bind address for the transport. + +**Note**: properties in red are version 5.10 (and higher) options only. + +Example configuration: + + +   + +   +     +   + +   + + diff --git a/activemq-consumer-dispatch-async.md b/activemq-consumer-dispatch-async.md new file mode 100644 index 0000000..b62b2d7 --- /dev/null +++ b/activemq-consumer-dispatch-async.md @@ -0,0 +1,35 @@ +Apache ActiveMQ ™ -- ActiveMQ Consumer Dispatch Async + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Consumer Features](activemq-consumer-features.html) > [ActiveMQ Consumer Dispatch Async](activemq-consumer-dispatch-async.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Overview +-------- + +In AMQ4 onwards, the choice of a broker performing synchronous or asynchronous dispatch to a consumer has become more configurable. It is now configured as a default value on the [connection URI, Connection and ConnectionFactory](activemq-uri-configuration.html) together with being customizable on a per consumer basis via the [Destination Options](activemq-uri-configuration.html) instead previously just being a transport server setting. + +This makes more sense since you want to do async message delivery to slower consumers, but do sync message delivery to faster consumers (to avoid the synchronization and context switching costs of adding another seda queue). The downside to using sync message delivery is that the producer is more likely to block if there is a slow consumer that he is dispatching messages to. + +The default setting is dispatchAsync=true which is the best setting for high performance. If you want to deal better with slow consumers you will want to enable this setting. If you want better thoughput and the chances of having a slow consumer are low, you may want to change this to false. + +### Configuring Async Dispatch at the ConnectionFactory Level + +connectionFactory.DispatchAsync = false; + +### Configuring Dispatch Async at the Connection Level + +Configuring the dispatchAsync setting at this level overrides the settings at the connection factory level. + +connection.DispatchAsync = false; + +### Configuring Dispatch Async at the Consumer Level using the Destination URI + +Configuring the dispatchAsync using [Destination Options](activemq-uri-configuration.html) overrides the settings at the connection and connection factory level. + +var queue = new ActiveMQQueue("TEST.QUEUE?consumer.dispatchAsync=false"); +var consumer = session.CreateConsumer(queue); + + diff --git a/activemq-consumer-features.md b/activemq-consumer-features.md new file mode 100644 index 0000000..6e86ebc --- /dev/null +++ b/activemq-consumer-features.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- ActiveMQ Consumer Features + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Consumer Features](activemq-consumer-features.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/activemq-consumer-priority.md b/activemq-consumer-priority.md new file mode 100644 index 0000000..cd894c4 --- /dev/null +++ b/activemq-consumer-priority.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- ActiveMQ Consumer Priority + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Consumer Features](activemq-consumer-features.html) > [ActiveMQ Consumer Priority](activemq-consumer-priority.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +### Background + +As well as having a pluggable dispatch policy (e.g. round robin etc), we now support consumer priorities. + +This allows us to weight consumers to optimise network hops. For example, you typically want a broker to send messages to regular NMS consumers rather than to other brokers; there's no need to make unnecessary broker-to-broker hops if there are available consumers. + +### Example + +The priority for a consumer is set using [Destination Options](activemq-uri-configuration.html) as follows: + +var queue = session.GetQueue("TEST.QUEUE?consumer.priority=10"); +var consumer = session.CreateConsumer(queue); + +The range for assigning priority numbers is from 0 to 127, with 127 being the highest priority and 0 being the default priority. +The way it works is that the broker will simply order any queue consumers according to their priorities and send messages to the highest priority consumers first. +Once a particular consumer has its prefetch buffer filled up, the broker will begin to dispatch messages to consumers of lower priorities. + + diff --git a/activemq-cpp-10-release.md b/activemq-cpp-10-release.md new file mode 100644 index 0000000..69c6497 --- /dev/null +++ b/activemq-cpp-10-release.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 1.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 1.0 Release](activemq-cpp-10-release.html) + +New and Noteworthy +------------------ + +This is our first official release of ActiveMQ CPP. Some of the included features are: + +* CMS - a JMS-like API +* Implementation of the Stomp protocol (compatable with AMQ broker 4.0.2 and later) +* Extensible architecture for supporting additional messaging protocols (focus on OpenWire for the next major release) +* Robust, Java-like library providing streams, readers/writers, and even a synchronized macro +* Build has been tested on win32, linux, solaris, and OSX + +**NOTE:** Compatable with ActiveMQ Broker version >= 4.0.2 + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-1.0-src.zip) + +[activemq-cpp-1.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-1.0-src.zip.asc) + +Source code for Unix + +[activemq-cpp-1.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-1.0-src.tar.gz) + +[activemq-cpp-1.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-1.0-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-1.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11803&styleName=Html&projectId=11000&Create=Create) + +JIRA Issues Macro: com.atlassian.sal.api.net.ResponseStatusException: Unexpected response received. Status code: 404 + +  + diff --git a/activemq-cpp-11-release.md b/activemq-cpp-11-release.md new file mode 100644 index 0000000..dbc61cd --- /dev/null +++ b/activemq-cpp-11-release.md @@ -0,0 +1,54 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 1.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 1.1 Release](activemq-cpp-11-release.html) + +New and Noteworthy +------------------ + +This version fixes several bugs and adds a few new features. + +* Updated interface for cms::BytesMessage - more JMS-like. +* Updated the MessageProducer interface to add multiple versions of the send method +* Fixed several memory leaks +* Now run on linux, win32, OS X, and Solaris +* Persistence is fixed +* Fixed deadlocks when closing a connection +* Fixed message expiration + +**NOTE:** Compatable with ActiveMQ Broker version >= 4.0.2 + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-1.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-1.1-src.zip) + +[activemq-cpp-1.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-1.1-src.zip.asc) + +Source code for Unix + +[activemq-cpp-1.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-1.1-src.tar.gz) + +[activemq-cpp-1.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-1.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-1.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11804) + +JIRA Issues Macro: com.atlassian.sal.api.net.ResponseStatusException: Unexpected response received. Status code: 404 + +  + diff --git a/activemq-cpp-20-release.md b/activemq-cpp-20-release.md new file mode 100644 index 0000000..2678ce9 --- /dev/null +++ b/activemq-cpp-20-release.md @@ -0,0 +1,54 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.0 Release](activemq-cpp-20-release.html) + +New and Noteworthy +------------------ + +This version fixes several bugs and adds a few new features. + +* Full OpenWire v2 support! +* You can switch between openwire and stomp via the connection URL +* Temporary destinations when using OpenWire +* Added support for asynchronous send +* Fixed client acknowledge +* Resolved some memory leaks +* Sessions are now single threaded + +**NOTE:** Compatable with ActiveMQ Broker version >= 4.0.2 + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.0-src.zip) + +[activemq-cpp-2.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.0-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.0-src.tar.gz) + +[activemq-cpp-2.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.0-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11805) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-201-release.md b/activemq-cpp-201-release.md new file mode 100644 index 0000000..2eac304 --- /dev/null +++ b/activemq-cpp-201-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.0.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.0.1 Release](activemq-cpp-201-release.html) + +New and Noteworthy +------------------ + +This version fixes several small bugs that made their way into the 2.0 release. + +**NOTE:** Compatable with ActiveMQ Broker version >= 4.0.2 + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.0.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.0.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.0.1-src.zip) + +[activemq-cpp-2.0.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.0.1-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.0.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.0.1-src.tar.gz) + +[activemq-cpp-2.0.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.0.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.0.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11823) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-21-release.md b/activemq-cpp-21-release.md new file mode 100644 index 0000000..ac4d47d --- /dev/null +++ b/activemq-cpp-21-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.1 Release](activemq-cpp-21-release.html) + +New and Noteworthy +------------------ + +This version includes several bugfixes, as well as some new features. Also a lot of work has been done on performance and memory leaks. One new feature that has been highly anticipated is that we now build both shared and static libraries. + +**NOTE:** Compatable with ActiveMQ Broker versions in the 4.0 family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.1-src.zip) + +[activemq-cpp-2.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.1-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.1-src.tar.gz) + +[activemq-cpp-2.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11812) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-211-release.md b/activemq-cpp-211-release.md new file mode 100644 index 0000000..073c5f0 --- /dev/null +++ b/activemq-cpp-211-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.1.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.1.1 Release](activemq-cpp-211-release.html) + +New and Noteworthy +------------------ + +This version includes several bugfixes, as well as some new examples.  Also a lot of work has been done on performance and memory leaks and stability. + +**NOTE:** Compatable with ActiveMQ Broker versions in the 4.0 family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.1.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.1.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.1.1-src.zip) + +[activemq-cpp-2.1.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.1.1-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.1.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.1.1-src.tar.gz) + +[activemq-cpp-2.1.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.1.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.1.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the \[release notes|http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11848\] + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-212-release.md b/activemq-cpp-212-release.md new file mode 100644 index 0000000..9fec48b --- /dev/null +++ b/activemq-cpp-212-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.1.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.1.2 Release](activemq-cpp-212-release.html) + +New and Noteworthy +------------------ + +This version adds support for building the client code on the Solaris platform using the Sun Studio 11 compiler. Also makes some small improvements to the AutoConf scripts on various platforms. + +**NOTE:** Compatable with ActiveMQ Broker versions in the 4.0 family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.1.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.1.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.1.2-src.zip) + +[activemq-cpp-2.1.2-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.1.2-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.1.2-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.1.2-src.tar.gz) + +[activemq-cpp-2.1.2-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.1.2-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.1.2/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11860) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-213-release.md b/activemq-cpp-213-release.md new file mode 100644 index 0000000..7737c96 --- /dev/null +++ b/activemq-cpp-213-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.1.3 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.1.3 Release](activemq-cpp-213-release.html) + +New and Noteworthy +------------------ + +This version adds more support for building the client code on the Solaris platform using the Sun Studio 11 and 12 compilers as well as fixed a small OS/X configure script problem. Also makes some small improvements to the AutoConf scripts on various platforms. + +**NOTE:** Compatable with ActiveMQ Broker versions in the 4.0 and 5.0 family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.1.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.1.3-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.1.3-src.zip) + +[activemq-cpp-2.1.3-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.1.3-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.1.3-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.1.3-src.tar.gz) + +[activemq-cpp-2.1.3-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.1.3-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.1.3/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11860) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-22-release.md b/activemq-cpp-22-release.md new file mode 100644 index 0000000..b82d5b2 --- /dev/null +++ b/activemq-cpp-22-release.md @@ -0,0 +1,59 @@ +Apache ActiveMQ ™ -- ActiveMQ CPP 2.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ CPP 2.2 Release](activemq-cpp-22-release.html) + +New and Noteworthy +------------------ + +This release has seen a large restructuring of the codebase to separate out to platform code into a new package called decaf. We are now making use of the APR and APR-Util libraries for platform independence. Also many new tests and bug fixes have made their way into this release. + +Some notable new features in this release + +* CmsTemplate - Similar to Spring's JmsTemplate. +* Prefetch of size zero now supported. +* The URI can now contain environment variables. + + + +**NOTE:** Compatable with ActiveMQ Broker versions in the 4.0 and 5.0 family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.1.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2-src.zip) + +[activemq-cpp-2.2-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.2-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2-src.tar.gz) + +[activemq-cpp-2.2-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.2/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11860) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-221-release.md b/activemq-cpp-221-release.md new file mode 100644 index 0000000..cba5517 --- /dev/null +++ b/activemq-cpp-221-release.md @@ -0,0 +1,53 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.2.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.2.1 Release](activemq-cpp-221-release.html) + +New and Noteworthy +------------------ + +This is a minor release incorporating several bug fixes that have been found since the 2.2 release. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.2.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.2.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.1-src.zip) + +[activemq-cpp-2.2.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.1-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.2.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.1-src.tar.gz) + +[activemq-cpp-2.2.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.2.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11921) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-222-release.md b/activemq-cpp-222-release.md new file mode 100644 index 0000000..dabf8bd --- /dev/null +++ b/activemq-cpp-222-release.md @@ -0,0 +1,58 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.2.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.2.2 Release](activemq-cpp-222-release.html) + +New and Noteworthy +------------------ + +This is a minor release that contains bugfixes that were found since the +2.2.1 release. Also in this release the there have been several meory leak +fixes and threading issues resolved. The connection URI options have +changed to reflect improved asynchronous message send capabilities as well, +see the wiki for the new configuration option documentation. This version +of the library now requires APR 1.3 or higher to compile. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.2.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.2.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.2-src.zip) + +[activemq-cpp-2.2.2-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.2-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.2.2-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.2-src.tar.gz) + +[activemq-cpp-2.2.2-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.2-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.2.2/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11931) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-223-release.md b/activemq-cpp-223-release.md new file mode 100644 index 0000000..cd1b419 --- /dev/null +++ b/activemq-cpp-223-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.2.3 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.2.3 Release](activemq-cpp-223-release.html) + +New and Noteworthy +------------------ + +This is a minor release that contains bugfixes that were found since the +2.2.2 release. This version adds support for responding to KeepAlive +requests from the broker, and it now properly sets JMSX properties on both +stomp and openwire commands. Users can now delete destinations using the +deleteDestination function in ActiveMQConnection. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.2.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.2.3-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.3-src.zip) + +[activemq-cpp-2.2.3-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.3-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.2.3-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.3-src.tar.gz) + +[activemq-cpp-2.2.3-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.3-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.2.3/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11999) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-224-release.md b/activemq-cpp-224-release.md new file mode 100644 index 0000000..2631ad5 --- /dev/null +++ b/activemq-cpp-224-release.md @@ -0,0 +1,54 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.2.4 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.2.4 Release](activemq-cpp-224-release.html) + +New and Noteworthy +------------------ + +This is a minor release that contains bugfixes that were found since the +2.2.3 release. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.2.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.2.4-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.4-src.zip) + +[activemq-cpp-2.2.4-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.4-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.2.4-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.4-src.tar.gz) + +[activemq-cpp-2.2.4-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.4-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.2.4/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12000) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-225-release.md b/activemq-cpp-225-release.md new file mode 100644 index 0000000..26340b3 --- /dev/null +++ b/activemq-cpp-225-release.md @@ -0,0 +1,54 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.2.5 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.2.5 Release](activemq-cpp-225-release.html) + +New and Noteworthy +------------------ + +This is a minor release that contains bugfixes that were found since the +2.2.4 release. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.2.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.2.5-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.5-src.zip) + +[activemq-cpp-2.2.5-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.5-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.2.5-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.5-src.tar.gz) + +[activemq-cpp-2.2.5-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.5-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.2.5/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12060) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-226-release.md b/activemq-cpp-226-release.md new file mode 100644 index 0000000..105aac6 --- /dev/null +++ b/activemq-cpp-226-release.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 2.2.6 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 2.2.6 Release](activemq-cpp-226-release.html) + +New and Noteworthy +------------------ + +This is a minor release that contains bugfixes that were found since the +2.2.5 release. Most noteably the code now properly encodes the strings +sent in text message's and as properties in any message as proper modified +UTF-8 encoded string's. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-2.2.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-2.2.6-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.6-src.zip) + +[activemq-cpp-2.2.6-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.6-src.zip.asc) + +Source code for Unix + +[activemq-cpp-2.2.6-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-2.2.6-src.tar.gz) + +[activemq-cpp-2.2.6-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-2.2.6-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.2.6/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12109) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-30-release.md b/activemq-cpp-30-release.md new file mode 100644 index 0000000..e434b3e --- /dev/null +++ b/activemq-cpp-30-release.md @@ -0,0 +1,63 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.0 Release](activemq-cpp-30-release.html) + +New and Noteworthy +------------------ + +The 3.0 release is a major update the to ActiveMQ-CPP client code, many areas have been rewritten to enhance performance and improve stability. The following are some highlights of this release: + +* Newly added Failover Transport +* CMS API has moved to V1.3 adding CMS Exception types and more JMS like feature APIs. +* StreamMessage has now been added to the set of Messages that ActiveMQ-CPP supports. +* More robust MessageConsumer implementation. +* 64 Bit Builds supported on Windows an Linux. +* Supports Receiving Messages from Virtual Topics. +* Improved API Documentation. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 1.3 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.0-src.zip) + +[activemq-cpp-library-3.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.0-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.0-src.tar.gz) + +[activemq-cpp-library-3.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.0-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=11998) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-301-release.md b/activemq-cpp-301-release.md new file mode 100644 index 0000000..814dc3e --- /dev/null +++ b/activemq-cpp-301-release.md @@ -0,0 +1,55 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.0.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.0.1 Release](activemq-cpp-301-release.html) + +New and Noteworthy +------------------ + +This is a bugfix release that mainly addresses problems found in the Failover support added in the initial 3.0 release. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 1.3 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.0.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.0.1-src.zip) + +[activemq-cpp-library-3.0.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.0.1-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.0.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.0.1-src.tar.gz) + +[activemq-cpp-library-3.0.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.0.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.0.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12141) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/activemq-cpp-310-release.md b/activemq-cpp-310-release.md new file mode 100644 index 0000000..9f15316 --- /dev/null +++ b/activemq-cpp-310-release.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.1.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.1.0 Release](activemq-cpp-310-release.html) + +New and Noteworthy +------------------ + +This is a new Major release of ActiveMQ-CPP. Many new features have been added +and several bugs have been fixed. The client now has an connection Inactivity +Monitor which allows it to more quickly detect when a TCP connection has been +broken. The Threading code has been rewritten to improve performance and lower +memory usage, and there have been several other performance improvements added +throughout the code-base. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.1 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.1.0-src.zip) + +[activemq-cpp-library-3.1.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.1.0-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.1.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.1.0-src.tar.gz) + +[activemq-cpp-library-3.1.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.1.0-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.1.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12070) + diff --git a/activemq-cpp-311-release.md b/activemq-cpp-311-release.md new file mode 100644 index 0000000..aa49583 --- /dev/null +++ b/activemq-cpp-311-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.1.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.1.1 Release](activemq-cpp-311-release.html) + +New and Noteworthy +------------------ + +This is a bug fix release that resolves several memory leaks found since the 3.1 release. Also a few small issues with some compilers was addressed. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.1 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.1.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.1.1-src.zip) + +[activemq-cpp-library-3.1.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.1.1-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.1.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.1.1-src.tar.gz) + +[activemq-cpp-library-3.1.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.1.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.1.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12190) + diff --git a/activemq-cpp-312-release.md b/activemq-cpp-312-release.md new file mode 100644 index 0000000..70f46fd --- /dev/null +++ b/activemq-cpp-312-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.1.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.1.2 Release](activemq-cpp-312-release.html) + +New and Noteworthy +------------------ + +This is a bug fix release that resolves several crash bugs found since the 3.1.1 release. Also a few small issues with some compilers was addressed. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.1 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.1.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.1.2-src.zip) + +[activemq-cpp-library-3.1.2-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.1.2-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.1.2-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.1.2-src.tar.gz) + +[activemq-cpp-library-3.1.2-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.1.2-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.1.2/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12260) + diff --git a/activemq-cpp-313-release.md b/activemq-cpp-313-release.md new file mode 100644 index 0000000..371b606 --- /dev/null +++ b/activemq-cpp-313-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.1.3 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.1.3 Release](activemq-cpp-313-release.html) + +New and Noteworthy +------------------ + +This is a bug fix release that resolves an issue on Windows that could lead to deadlocks. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.1 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.1.3-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.1.3-src.zip) + +[activemq-cpp-library-3.1.3-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.1.3-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.1.3-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.1.3-src.tar.gz) + +[activemq-cpp-library-3.1.3-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.1.3-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.1.3/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12291) + diff --git a/activemq-cpp-320-release.md b/activemq-cpp-320-release.md new file mode 100644 index 0000000..95d7d04 --- /dev/null +++ b/activemq-cpp-320-release.md @@ -0,0 +1,53 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.2.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.2.0 Release](activemq-cpp-320-release.html) + +New and Noteworthy +------------------ + +This is a major update for the ActiveMQ-CPP library adding in support for SSL, QueueBrowser, Message compression and more. Many issues have been addressed as well as work to improve performance and prevent memory leaks. + +The SSL support makes use of the OpenSSL libraries so you need them installed to use it. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.0-src.zip) + +[activemq-cpp-library-3.2.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.0-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.2.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.0-src.tar.gz) + +[activemq-cpp-library-3.2.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.0-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.2.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12191) + diff --git a/activemq-cpp-321-release.md b/activemq-cpp-321-release.md new file mode 100644 index 0000000..f252ec8 --- /dev/null +++ b/activemq-cpp-321-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.2.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.2.1 Release](activemq-cpp-321-release.html) + +New and Noteworthy +------------------ + +This is a patch release that addresses issues with the original 3.2.0 release for users on Windows, + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.2.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.1-src.zip) + +[activemq-cpp-library-3.2.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.1-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.2.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.1-src.tar.gz) + +[activemq-cpp-library-3.2.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.2.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12333) + diff --git a/activemq-cpp-322-release.md b/activemq-cpp-322-release.md new file mode 100644 index 0000000..ea279d8 --- /dev/null +++ b/activemq-cpp-322-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.2.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.2.2 Release](activemq-cpp-322-release.html) + +New and Noteworthy +------------------ + +This is a patch release that addresses issues with the 3.2.1 release. Several issues that users were seeing as segfaults from APR Atomics have been addressed as well as a fix for sending and receiving empty MapMessages. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.2.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.2-src.zip) + +[activemq-cpp-library-3.2.2-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.2-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.2.2-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.2-src.tar.gz) + +[activemq-cpp-library-3.2.2-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.2-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.2.2/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12336) + diff --git a/activemq-cpp-323-release.md b/activemq-cpp-323-release.md new file mode 100644 index 0000000..fecc9ef --- /dev/null +++ b/activemq-cpp-323-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.2.3 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.2.3 Release](activemq-cpp-323-release.html) + +New and Noteworthy +------------------ + +This is a patch release that addresses issues with the 3.2.2 release. This release fixes an additional issue found in unmarshaling MapMessage objects on Windows as well as fixing a threading issue that causes invalid client Ids to be generated if two connections were created from two different threads at the same time. Also a fix to the pkg-config file that is generated for the build was added. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.2.3-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.3-src.zip) + +[activemq-cpp-library-3.2.3-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.3-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.2.3-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.3-src.tar.gz) + +[activemq-cpp-library-3.2.3-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.3-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.2.3/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](http://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11000&styleName=Html&version=12338) + diff --git a/activemq-cpp-324-release.md b/activemq-cpp-324-release.md new file mode 100644 index 0000000..38a09dc --- /dev/null +++ b/activemq-cpp-324-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.2.4 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.2.4 Release](activemq-cpp-324-release.html) + +New and Noteworthy +------------------ + +This is a patch release that addresses issues with the 3.2.3 release. This release fixes an issue with the Stomp support as well as addressing some problems in the CMSTemplate classes. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.2.4-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.4-src.zip) + +[activemq-cpp-library-3.2.4-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.4-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.2.4-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.4-src.tar.gz) + +[activemq-cpp-library-3.2.4-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.4-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.2.4/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12315667) + diff --git a/activemq-cpp-325-release.md b/activemq-cpp-325-release.md new file mode 100644 index 0000000..585aa94 --- /dev/null +++ b/activemq-cpp-325-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.2.5 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.2.5 Release](activemq-cpp-325-release.html) + +New and Noteworthy +------------------ + +This is a patch release that addresses issues with the 3.2.4 release. This release fixes a bug that was causing the client to segfault on Mac OS as well as fixing an issue with the SSL transport and X509v3 Certificates. Several small issues with URI parsing have also been fixed. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.2.5/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.2.5-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.5-src.zip) + +[activemq-cpp-library-3.2.5-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.5-src.zip.asc) + +Source code for Unix + +[activemq-cpp-library-3.2.5-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.2.5-src.tar.gz) + +[activemq-cpp-library-3.2.5-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.2.5-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.2.5/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12316124) + diff --git a/activemq-cpp-330-release.md b/activemq-cpp-330-release.md new file mode 100644 index 0000000..45332f4 --- /dev/null +++ b/activemq-cpp-330-release.md @@ -0,0 +1,64 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.3.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.3.0 Release](activemq-cpp-330-release.html) + +New and Noteworthy +------------------ + +This is a major release of the ActiveMQ-CPP client which includes some API changes and several new features and improvements. Some additional methods have been added to the CMS API to make it easier to use. Some highlights for this release: + +* Solved some deadlock issues that could occur during failover when using asynchronous consumers. +* Synchronous Consumers now get an exception if they call receive when the Connection has failed. +* CMS API now provides an XA domain for linking the CMS client into XA transactions. +* The Failover Transport now supports the connection rebalancing feature in ActiveMQ. +* Fixes in the Stomp handling allow the client to work with ActiveMQ Apollo. +* Better message redelivery processing for Transacted consumers. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.3.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.3.0-src.zip) + +[activemq-cpp-library-3.3.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.3.0-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.3.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.3.0-src.tar.gz) + +[activemq-cpp-library-3.3.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.3.0-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.3.0-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.3.0-src.tar.bz2) + +[activemq-cpp-library-3.3.0-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.3.0-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.3.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12315668) + diff --git a/activemq-cpp-340-release.md b/activemq-cpp-340-release.md new file mode 100644 index 0000000..1e49f10 --- /dev/null +++ b/activemq-cpp-340-release.md @@ -0,0 +1,62 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.4.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.4.0 Release](activemq-cpp-340-release.html) + +New and Noteworthy +------------------ + +This is a major release of the ActiveMQ-CPP client which includes some API changes and several improvements. Some additional methods have been added to the CMS API to make it easier to use. Some highlights for this release: + +* Added start and stop methods to CMS Session and MessageConsumer. +* Fixed some build issues on Windows. +* Resolved some issues with failover not recovering consumers correctly. +* Fixed some problems with URI parsing. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.4 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.4.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.0-src.zip) + +[activemq-cpp-library-3.4.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.0-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.4.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.0-src.tar.gz) + +[activemq-cpp-library-3.4.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.0-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.4.0-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.0-src.tar.bz2) + +[activemq-cpp-library-3.4.0-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.0-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.4.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12316372) + diff --git a/activemq-cpp-341-release.md b/activemq-cpp-341-release.md new file mode 100644 index 0000000..1afd49a --- /dev/null +++ b/activemq-cpp-341-release.md @@ -0,0 +1,63 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.4.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.4.1 Release](activemq-cpp-341-release.html) + +New and Noteworthy +------------------ + +This is a patch release of the ActiveMQ-CPP client which includes some fixes for issues found since the v3.4.0 release. + +* Implements the Session recover method. +* Fixed some build issues on Mac with dynamic libs. +* Fixed an issue with BytesMessage marshaling when compression is enabled. +* Fixed an issue on Windows with some unmarshaling cases causing a crash. +* A few other minor package and build fixes. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.4 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.4.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.4.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.1-src.zip) + +[activemq-cpp-library-3.4.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.1-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.4.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.1-src.tar.gz) + +[activemq-cpp-library-3.4.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.1-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.4.1-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.1-src.tar.bz2) + +[activemq-cpp-library-3.4.1-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.1-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.4.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12316381) + diff --git a/activemq-cpp-342-release.md b/activemq-cpp-342-release.md new file mode 100644 index 0000000..4491ec4 --- /dev/null +++ b/activemq-cpp-342-release.md @@ -0,0 +1,63 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.4.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.4.2 Release](activemq-cpp-342-release.html) + +New and Noteworthy +------------------ + +This is a patch release of the ActiveMQ-CPP client which includes some fixes for issues found since the v3.4.1 release. + +* Some build issues on various platforms were resolved. +* A problem with setting the username / password from the Connection Factory was fixed. +* A problem with expired messages and DLQ processing was addressed. +* An issue with the failover transport and hangs in Connection start() was fixed. +* A couple of race conditions on Connection close() were addressed. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.4 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.4.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.4.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.2-src.zip) + +[activemq-cpp-library-3.4.2-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.2-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.4.2-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.2-src.tar.gz) + +[activemq-cpp-library-3.4.2-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.2-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.4.2-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.2-src.tar.bz2) + +[activemq-cpp-library-3.4.2-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.2-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.4.2/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12319269) + diff --git a/activemq-cpp-343-release.md b/activemq-cpp-343-release.md new file mode 100644 index 0000000..497d086 --- /dev/null +++ b/activemq-cpp-343-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.4.3 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.4.3 Release](activemq-cpp-343-release.html) + +New and Noteworthy +------------------ + +This is a patch release of the ActiveMQ-CPP client which includes some fixes for issues found since the v3.4.2 release. This release resolves some memory leaks found in the prior 3.4.x releases in the TCP transport and in the use of Transactions for producers. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.4 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.4.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.4.3-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.3-src.zip) + +[activemq-cpp-library-3.4.3-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.3-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.4.3-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.3-src.tar.gz) + +[activemq-cpp-library-3.4.3-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.3-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.4.3-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.3-src.tar.bz2) + +[activemq-cpp-library-3.4.3-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.3-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.4.3/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12321240) + diff --git a/activemq-cpp-344-release.md b/activemq-cpp-344-release.md new file mode 100644 index 0000000..2f6d9f1 --- /dev/null +++ b/activemq-cpp-344-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.4.4 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.4.4 Release](activemq-cpp-344-release.html) + +New and Noteworthy +------------------ + +This is a patch release of the ActiveMQ-CPP client which includes some fixes for issues found since the v3.4.3 release. This release resolves some memory and thread leaks found in the prior 3.4.x releases having to do with Connection shutdown. Also the Windows project files are cleaned up a bit. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.4 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.4.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.4.4-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.4-src.zip) + +[activemq-cpp-library-3.4.4-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.4-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.4.4-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.4-src.tar.gz) + +[activemq-cpp-library-3.4.4-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.4-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.4.4-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.4-src.tar.bz2) + +[activemq-cpp-library-3.4.4-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.4-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.4.4/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12321703) + diff --git a/activemq-cpp-345-release.md b/activemq-cpp-345-release.md new file mode 100644 index 0000000..077f54c --- /dev/null +++ b/activemq-cpp-345-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.4.5 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.4.5 Release](activemq-cpp-345-release.html) + +New and Noteworthy +------------------ + +This is a patch release of ActiveMQ-CPP that fixes several issues found since the v3.4.4 release. This release contains fixes for memory leaks that can occur when a socket connection is broken during a message marshal or unmarshal as well as fixes for some exceptions that were not being handled correctly internally in the Connection class. Also a fix the STOMP messages and correlation-id are in this release. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.4 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.4.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.4.5-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.5-src.zip) + +[activemq-cpp-library-3.4.5-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.5-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.4.5-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.5-src.tar.gz) + +[activemq-cpp-library-3.4.5-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.5-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.4.5-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.4.5-src.tar.bz2) + +[activemq-cpp-library-3.4.5-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.4.5-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.4.5/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12323248) + diff --git a/activemq-cpp-350-release.md b/activemq-cpp-350-release.md new file mode 100644 index 0000000..835c288 --- /dev/null +++ b/activemq-cpp-350-release.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.5.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.5.0 Release](activemq-cpp-350-release.html) + +New and Noteworthy +------------------ + +This is a new Major release of ActiveMQ-CPP with several new APIs and internal changes meant to improve overall stability of the C++ client. Besides a large amount of bug fixing and memory fixing this release also features a lot of new features in the CMS API: + +* Added Message Transformation capabilities for incoming and outgoing messages. +* You can now query for the type of a Message property so you can choose the best getter method. +* MapMessage and StreamMessage object now expose an API to find out what type a value is before you try to get a value using one of the getter methods. +* Polling consumers now can set a Message available listener. +* Stomp clients can configure the destination prefixes for the Destination types (Queues, Topics...). +* StreamMessage now has a reset method to allow object reuse. +* Added an AdvisorySupport class to make dealing with advisory topics easier. +* Added support for non-blocking sends to Message Producers. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 2.4 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.4.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.5.0-src.zip) + +[activemq-cpp-library-3.5.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.5.0-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.5.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.5.0-src.tar.gz) + +[activemq-cpp-library-3.5.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.5.0-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.5.0-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.5.0-src.tar.bz2) + +[activemq-cpp-library-3.5.0-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.5.0-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.5.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12316380) + diff --git a/activemq-cpp-360-release.md b/activemq-cpp-360-release.md new file mode 100644 index 0000000..076a3cf --- /dev/null +++ b/activemq-cpp-360-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.6.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.6.0 Release](activemq-cpp-360-release.html) + +New and Noteworthy +------------------ + +This is a new Major release of ActiveMQ-CPP, a lot of bugs have been fixed that were found in the v3.5.0 release which should reduce memory consumption and improve overall stability. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.1 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.6.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.6.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.6.0-src.zip) + +[activemq-cpp-library-3.6.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.6.0-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.6.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.6.0-src.tar.gz) + +[activemq-cpp-library-3.6.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.6.0-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.6.0-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.6.0-src.tar.bz2) + +[activemq-cpp-library-3.6.0-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.6.0-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.6.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12323973) + diff --git a/activemq-cpp-370-release.md b/activemq-cpp-370-release.md new file mode 100644 index 0000000..b56621d --- /dev/null +++ b/activemq-cpp-370-release.md @@ -0,0 +1,65 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.7.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.7.0 Release](activemq-cpp-370-release.html) + +New and Noteworthy +------------------ + +This is a new Major release of ActiveMQ-CPP, a lot of bugs have been fixed that were found in the v3.6.0 release which should reduce memory consumption and improve overall stability. Some new features have been added as well. + +* Added support of Optimized Acknowledge +* Added support for Non-blocking redelivery. +* Removed dependence on the APR-Util library. +* Supports priority backup for Failover Transport +* Supports the cluster rebalancing feature. +* Message Audits to filter duplicates on Failover. +* A lot of other little bug fixes and improvements. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.1 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.7.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.7.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.7.0-src.zip) + +[activemq-cpp-library-3.7.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.7.0-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.7.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.7.0-src.tar.gz) + +[activemq-cpp-library-3.7.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.7.0-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.7.0-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.7.0-src.tar.bz2) + +[activemq-cpp-library-3.7.0-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.7.0-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.7.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12324161) + diff --git a/activemq-cpp-371-release.md b/activemq-cpp-371-release.md new file mode 100644 index 0000000..64e0680 --- /dev/null +++ b/activemq-cpp-371-release.md @@ -0,0 +1,70 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.7.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.7.1 Release](activemq-cpp-371-release.html) + +New and Noteworthy +------------------ + +This is a new patch release of ActiveMQ-CPP, a lot of bugs have been fixed that were found in the v3.7.0 release which should reduce memory consumption and improve overall stability. Several compilation fixes were made as well so things should be better on a number of platforms. Fixes of note: + +* 3.7.0 does not compile with gcc-4.4.7 on CentOS-6 +* APR-Util header include missed in latest release. +* CMS FailoverTransport Leaks Socket Descriptors +* closing a connection stalled in start because of failover should stop the transport safely. +* Compilation Error Fix for Sun Studio under Solaris 10 +* Exception lifetime confusion can cause the application to crash +* Connection didn't switch to the slave broker when the master broker is down +* Commiting a session with a deleted consumer causes access violation +* Compilation of 3.7.0 fails for Linux systems (Redhat 5.8 and SuSE SLES 10) +* Cient doesn't work on Linux Red Hat 6.4 systems, fails when setting thread priority + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.1 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.6.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.7.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.7.1-src.zip) + +[activemq-cpp-library-3.7.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.7.1-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.7.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.7.1-src.tar.gz) + +[activemq-cpp-library-3.7.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.7.1-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.7.1-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.7.1-src.tar.bz2) + +[activemq-cpp-library-3.7.1-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.7.1-src.tar.bz2.asc) + +SVN Tag Checkout +---------------- + + + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.7.1/](https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-3.7.1/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12324543) + diff --git a/activemq-cpp-380-release.md b/activemq-cpp-380-release.md new file mode 100644 index 0000000..163e8f2 --- /dev/null +++ b/activemq-cpp-380-release.md @@ -0,0 +1,74 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.8.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.8.0 Release](activemq-cpp-380-release.html) + +New and Noteworthy +------------------ + +This is a new major release of ActiveMQ-CPP, a few bugs have been fixed that were found in the v3.7.0 and v3.7.1 releases which should reduce memory consumption and improve overall stability. Several compilation fixes were made as well so things should be better on a number of platforms. Also some new APIs were added to the CMS API to provide an event based construct to listen for addition and removal of destinations on the Broker. Fixes of note: + +* 3.7.0 does not compile with gcc-4.4.7 on CentOS-6 +* APR-Util header include missed in latest release. +* CMS FailoverTransport Leaks Socket Descriptors +* closing a connection stalled in start because of failover should stop the transport safely. +* Compilation Error Fix for Sun Studio under Solaris 10 +* Exception lifetime confusion can cause the application to crash +* Connection didn't switch to the slave broker when the master broker is down +* Commiting a session with a deleted consumer causes access violation +* Compilation of 3.7.0 fails for Linux systems (Redhat 5.8 and SuSE SLES 10) +* Cient doesn't work on Linux Red Hat 6.4 systems, fails when setting thread priority +* Exception "attempt to unlock read lock, not locked by current thread" when doing performance testing +* For SSL connections ensure the SNI field is set. +* Can't send to temporary queues created by name +* Added Visual Studio 2010 project files for the project. +* Added Destination Source events based listener interfaces to the CMS API. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.6.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.8.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.8.0-src.zip) + +[activemq-cpp-library-3.8.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.8.0-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.8.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.8.0-src.tar.gz) + +[activemq-cpp-library-3.8.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.8.0-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.8.0-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.8.0-src.tar.bz2) + +[activemq-cpp-library-3.8.0-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.8.0-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git) +git checkout tags/activemq-cpp-3.8.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12324544) + diff --git a/activemq-cpp-381-release.md b/activemq-cpp-381-release.md new file mode 100644 index 0000000..b35e60c --- /dev/null +++ b/activemq-cpp-381-release.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.8.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.8.1 Release](activemq-cpp-381-release.html) + +New and Noteworthy +------------------ + +This is a new patch release that resolves a memory leak issue found in the 3.8.0 and 3.7.x releases. If you are running an older release you are strongly advised to upgrade (you can work around the leak by disabling message audit in your ActiveMQConnectionFactory). + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.6.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.8.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.8.1-src.zip) + +[activemq-cpp-library-3.8.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.8.1-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.8.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.8.1-src.tar.gz) + +[activemq-cpp-library-3.8.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.8.1-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.8.1-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-library-3.8.1-src.tar.bz2) + +[activemq-cpp-library-3.8.1-src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/activemq-cpp-library-3.8.1-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git) +git checkout tags/activemq-cpp-3.8.1 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12324975) + diff --git a/activemq-cpp-382-release.md b/activemq-cpp-382-release.md new file mode 100644 index 0000000..e459ef9 --- /dev/null +++ b/activemq-cpp-382-release.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.8.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.8.2 Release](activemq-cpp-382-release.html) + +New and Noteworthy +------------------ + +This is a new patch release that resolves some issues that have been found since the last patch release. + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.6.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.8.2-src.zip](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.2/activemq-cpp-library-3.8.2-src.zip) + +[activemq-cpp-library-3.8.2-src.zip.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.2/activemq-cpp-library-3.8.2-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.8.2-src.tar.gz](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.2/activemq-cpp-library-3.8.2-src.tar.gz) + +[activemq-cpp-library-3.8.2-src.tar.gz.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.2/activemq-cpp-library-3.8.2-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.8.2-src.tar.bz2](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.2/activemq-cpp-library-3.8.2-src.tar.bz2) + +[activemq-cpp-library-3.8.2-src.tar.bz2.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.2/activemq-cpp-library-3.8.2-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git) +git checkout tags/activemq-cpp-3.8.2 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12325248) + diff --git a/activemq-cpp-383-release.md b/activemq-cpp-383-release.md new file mode 100644 index 0000000..28b6ca4 --- /dev/null +++ b/activemq-cpp-383-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.8.3 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.8.3 Release](activemq-cpp-383-release.html) + +New and Noteworthy +------------------ + +This is a new patch release that resolves some issues that have been found since the last patch release. + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.6.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.8.3-src.zip](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.3/activemq-cpp-library-3.8.3-src.zip) + +[activemq-cpp-library-3.8.3-src.zip.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.3/activemq-cpp-library-3.8.3-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.8.3-src.tar.gz](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.3/activemq-cpp-library-3.8.3-src.tar.gz) + +[activemq-cpp-library-3.8.3-src.tar.gz.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.3/activemq-cpp-library-3.8.3-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.8.3-src.tar.bz2](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/3.8.3/activemq-cpp-library-3.8.3-src.tar.bz2) + +[activemq-cpp-library-3.8.3-src.tar.bz2.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.3/activemq-cpp-library-3.8.3-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git +](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git)cd activemq-cpp +git checkout tags/3.8.3 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12325744) + diff --git a/activemq-cpp-384-release.md b/activemq-cpp-384-release.md new file mode 100644 index 0000000..003356a --- /dev/null +++ b/activemq-cpp-384-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.8.4 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.8.4 Release](activemq-cpp-384-release.html) + +New and Noteworthy +------------------ + +This is a new patch release that resolves some issues that have been found since the last patch release. + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.6.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.8.4-src.zip](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.4/activemq-cpp-library-3.8.4-src.zip) + +[activemq-cpp-library-3.8.4-src.zip.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.4/activemq-cpp-library-3.8.4-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.8.4-src.tar.gz](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.4/activemq-cpp-library-3.8.4-src.tar.gz) + +[activemq-cpp-library-3.8.4-src.tar.gz.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.4/activemq-cpp-library-3.8.4-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.8.4-src.tar.bz2](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.4/activemq-cpp-library-3.8.4-src.tar.bz2) + +[activemq-cpp-library-3.8.4-src.tar.bz2.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.8.4/activemq-cpp-library-3.8.4-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git +](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git)cd activemq-cpp +git checkout tags/3.8.4 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12327391) + diff --git a/activemq-cpp-390-release.md b/activemq-cpp-390-release.md new file mode 100644 index 0000000..d12073c --- /dev/null +++ b/activemq-cpp-390-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.9.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.9.0 Release](activemq-cpp-390-release.html) + +New and Noteworthy +------------------ + +This is a new major release that resolves a number of issues found since the 3.8.x series was released.  The client has been updated to include many of the same fixes that were placed into the ActiveMQ JMS client.  Additional fixes for memory leaks and segfaults have been added as well.  + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.9.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.9.0-src.zip](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.0/activemq-cpp-library-3.9.0-src.zip) + +[activemq-cpp-library-3.9.0-src.zip.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.0/activemq-cpp-library-3.9.0-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.9.0-src.tar.gz](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.0/activemq-cpp-library-3.9.0-src.tar.gz) + +[activemq-cpp-library-3.9.0-src.tar.gz.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.0/activemq-cpp-library-3.9.0-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.9.0-src.tar.bz2](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.0/activemq-cpp-library-3.9.0-src.tar.bz2) + +[activemq-cpp-library-3.9.0-src.tar.bz2.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.0/activemq-cpp-library-3.9.0-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git +](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git)cd activemq-cpp +git checkout tags/3.9.0 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12324974) + diff --git a/activemq-cpp-391-release.md b/activemq-cpp-391-release.md new file mode 100644 index 0000000..a875925 --- /dev/null +++ b/activemq-cpp-391-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.9.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.9.1 Release](activemq-cpp-391-release.html) + +New and Noteworthy +------------------ + +This is a minor bugfix release of the ActiveMQ-CPP library that fixes a segfault that can occur when running against the latest ActiveMQ Artemis release along with a couple other minor fixes. + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.9.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.9.1-src.zip](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.1/activemq-cpp-library-3.9.1-src.zip) + +[activemq-cpp-library-3.9.1-src.zip.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.1/activemq-cpp-library-3.9.1-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.9.1-src.tar.gz](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.1/activemq-cpp-library-3.9.1-src.tar.gz) + +[activemq-cpp-library-3.9.1-src.tar.gz.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.1/activemq-cpp-library-3.9.1-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.9.1-src.tar.bz2](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.1/activemq-cpp-library-3.9.1-src.tar.bz2) + +[activemq-cpp-library-3.9.1-src.tar.bz2.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.1/activemq-cpp-library-3.9.1-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git +](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git)cd activemq-cpp +git checkout tags/3.9.1 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&styleName=Html&version=12333244) + diff --git a/activemq-cpp-392-release.md b/activemq-cpp-392-release.md new file mode 100644 index 0000000..137b56c --- /dev/null +++ b/activemq-cpp-392-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.9.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.9.2 Release](activemq-cpp-392-release.html) + +New and Noteworthy +------------------ + +This is a minor patch release of the ActiveMQ-CPP library that fixes an issue with the way the STOMP protocol handles composite destinations. + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.9.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.9.2-src.zip](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.2/activemq-cpp-library-3.9.2-src.zip) + +[activemq-cpp-library-3.9.2-src.zip.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.2/activemq-cpp-library-3.9.2-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.9.2-src.tar.gz](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.2/activemq-cpp-library-3.9.2-src.tar.gz) + +[activemq-cpp-library-3.9.2-src.tar.gz.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.2/activemq-cpp-library-3.9.2-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.9.2-src.tar.bz2](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.2/activemq-cpp-library-3.9.2-src.tar.bz2) + +[activemq-cpp-library-3.9.2-src.tar.bz2.asc](https://archive.apache.org/dist/activemq/activemq-cpp/3.9.2/activemq-cpp-library-3.9.2-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git +](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git)cd activemq-cpp +git checkout tags/3.9.2 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&version=12334243) + diff --git a/activemq-cpp-393-release.md b/activemq-cpp-393-release.md new file mode 100644 index 0000000..7878e0a --- /dev/null +++ b/activemq-cpp-393-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.9.3 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.9.3 Release](activemq-cpp-393-release.html) + +New and Noteworthy +------------------ + +This is a minor patch release of the ActiveMQ-CPP library that fixes an issue with producer create no waiting for a response from the broker before returning which can lead to missed error on create situations. + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.9.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.9.3-src.zip](http://www.apache.org/dyn/closer.lua/activemq/activemq-cpp/3.9.3/activemq-cpp-library-3.9.3-src.zip) + +[activemq-cpp-library-3.9.3-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/3.9.3/activemq-cpp-library-3.9.3-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.9.3-src.tar.gz](http://www.apache.org/dyn/closer.lua/activemq/activemq-cpp/3.9.3/activemq-cpp-library-3.9.3-src.tar.gz) + +[activemq-cpp-library-3.9.3-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/3.9.3/activemq-cpp-library-3.9.3-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.9.3-src.tar.bz2](http://www.apache.org/dyn/closer.lua/activemq/activemq-cpp/3.9.3/activemq-cpp-library-3.9.3-src.tar.bz2) + +[activemq-cpp-library-3.9.3.src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/3.9.3/activemq-cpp-library-3.9.3-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git +](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git)cd activemq-cpp +git checkout tags/3.9.3 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&version=12334845) + diff --git a/activemq-cpp-394-release.md b/activemq-cpp-394-release.md new file mode 100644 index 0000000..55fb473 --- /dev/null +++ b/activemq-cpp-394-release.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP 3.9.4 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP 3.9.4 Release](activemq-cpp-394-release.html) + +New and Noteworthy +------------------ + +This is a minor patch release of the ActiveMQ-CPP library that fixes an issue in the Failover handling. + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family + +API +--- + +This release is based on the CMS 3.2 API. + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/activemqcpp-3.9.0/html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[activemq-cpp-library-3.9.4.src.zip](http://www.apache.org/dyn/closer.lua/activemq/activemq-cpp/3.9.4/activemq-cpp-library-3.9.4-src.zip) + +[activemq-cpp-library-3.9.4-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/3.9.4/activemq-cpp-library-3.9.4-src.zip.asc) + +Source code for Unix (gzipped) + +[activemq-cpp-library-3.9.4-src.tar.gz](http://www.apache.org/dyn/closer.lua/activemq/activemq-cpp/3.9.4/activemq-cpp-library-3.9.4-src.tar.gz) + +[activemq-cpp-library-3.9.4-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/3.9.4/activemq-cpp-library-3.9.4-src.tar.gz.asc) + +Source code for Unix (bz2) + +[activemq-cpp-library-3.9.4-src.tar.bz2](http://www.apache.org/dyn/closer.lua/activemq/activemq-cpp/3.9.4/activemq-cpp-library-3.9.4-src.tar.bz2) + +[activemq-cpp-library-3.9.4.src.tar.bz2.asc](http://www.apache.org/dist/activemq/activemq-cpp/3.9.4/activemq-cpp-library-3.9.4-src.tar.bz2.asc) + +Git Tag Checkout +---------------- + +git clone [https://git-wip-us.apache.org/repos/asf/activemq-cpp.git +](https://git-wip-us.apache.org/repos/asf/activemq-cpp.git)cd activemq-cpp +git checkout tags/3.9.4 + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311207&version=12335498) + diff --git a/activemq-cpp-libtool-and-packaging-notes.md b/activemq-cpp-libtool-and-packaging-notes.md new file mode 100644 index 0000000..0a88951 --- /dev/null +++ b/activemq-cpp-libtool-and-packaging-notes.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP, libtool and packaging notes + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP, libtool and packaging notes](activemq-cpp-libtool-and-packaging-notes.html) + +ActiveMQ-CPP, libtool and packaging notes +========================================= + +### Introduction + +This page attempts to summarise information to be considered + +* when configuring libtool +* when packaging ActiveMQ for distribution on Debian, Red Hat, Solaris. + +### Concepts + +Product version numbers + +* Please see the notes on [ActiveMQ-CPP product version number](activemq-cpp-product-version-number.html) + +SONAME + +* At runtime (when dynamic linking occurs) the SONAME embedded in the library must match the SONAME expected by the application. +* To see the SONAME embedded in the library, objdump -p libactivemq-cpp-2.1.2.so | grep SONAME +* To see the SONAMEs expected by an application, objdump -p | grep NEEDED +* By default, libtool will use the library filename as the SONAME +* Libtool's default behaviour can be modified by the soname_spec variable +* Possible SONAMEs fro ActiveMQ CPP: + * libactivemq-cpp-2.1.2.so.0 (each executable will depend on a specific build and will refuse to work with any other build) + * libactivemq-cpp.so.0 (only one version can be installed at the same time) + * libactivemq2-cpp.so.0 (so that 2.x and 3.x can be installed simultaneously) + +libtool -release + +* the -release argument tells libtool the release number +* the release number could be the major version number, the complete version number, or the SVN revision number +* libtool believes that any two releases are NOT compatible - for example, if an executable expects release number 5, and the library has release number 4 or 6, the executable will refuse to run + +libtool -version-info current:revision:age + +* Allows binary compatibility between versions +* The number at the end of the filename is the interface version number +* Interface version number is NOT THE SAME as the product version number +* Interface version number should increment each time the `interface' changes (new function prototypes, new function arguments, change in wire protocol, etc) +* The `age' number is used to indicate backwards compatibility - if age=1, then this interface is backwards compatible with the previous version only, if age=2, then this interface is backwards compatible with the 2 previous versions + +Debian package name + +* The package name includes the following from libtool: release number and interface number +* for example, if interface version = 4, then the package name = libactivemq-cpp4 +* The product version number is not part of the Debian package name - it is used elsewhere in Debian's control files + diff --git a/activemq-cpp-product-version-number.md b/activemq-cpp-product-version-number.md new file mode 100644 index 0000000..df9ba33 --- /dev/null +++ b/activemq-cpp-product-version-number.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP product version number + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ-CPP, libtool and packaging notes](activemq-cpp-libtool-and-packaging-notes.html) > [ActiveMQ-CPP product version number](activemq-cpp-product-version-number.html) + +_This is a DRAFT proposal and has not been adopted as official policy by this project._ + +In order to facilitate the correct use of libtool and the preparation of binary packages for distribution on Debian, Red Hat, etc, it is beneficial to have a written policy on version numbers. + +### Product version number + +These numbers represent the release of the product. E.g. 2.1.2 + +For the ActiveMQ-CPP project, the numbers have the format MAJOR.MINOR.REVISION, and the following meanings: + +* MAJOR: a change in the MAJOR number is necessary for anything that changes binary compatibility (e.g. changing a function prototype or class definition), or when major internal changes occur +* MINOR: a change in the MINOR number is necessary whenever new functionality is added without breaking binary compatibility (e.g. adding a new class), or when anything other than very minor internal changes occur +* REVISION: a change in the REVISION number is made for any other type of change that does not justify a change to MINOR or MAJOR + +Further to the above, it is envisaged that a user who has a packaging system (such as Debian): + +* may choose to have more than one major version installed on the same system concurrently (e.g. 2.1.2 and 3.4.5) +* may only have one variation of each major version installed (e.g. it is not intended to have 2.1.2 and 2.3.0 concurrently) + +### libtool ABI version number + +This number represents an ABI version. It is an integer, e.g., the number 5. + +The ABI version number does not need to be the same as the product version number. + +An increment in the libtool version number is mandatory when one of the following occurs: + +* any new structs, classes or function prototypes are added +* the definition of any structs, classes or function prototypes are modified +* any structs, classes or function prototypes are removed + +Note that in the first case above, binary compatibility with existing applications is maintained. In the second and third case, binary compatibility is lost, and the libtool `age' variable must also be changed. + diff --git a/activemq-cpp-stomp.md b/activemq-cpp-stomp.md new file mode 100644 index 0000000..2514524 --- /dev/null +++ b/activemq-cpp-stomp.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP Stomp + +[Index](index.html) > [ActiveMQ-CPP Stomp](activemq-cpp-stomp.html) + +ActiveMQ-CPP Stomp Support +-------------------------- + +Stomp is a simple text-based protocol supported by the ActiveMQ Broker that allows communication from a variety of clients (e.g. C++, Java, .NET, Ruby, Python, etc). If you'd like to learn more about the stomp protocol, go [here](http://stomp.codehaus.org). Also, you can see ActiveMQ extensions [here](http://www.activemq.org/site/stomp.html). + +The implementation of the CMS API with stomp has some quirks, as it's a simple protocol and doesn't have the full capabilities of, say, openwire. The purpose of this page is to document these quirks so that users understand any strange behaviors that they may see occasionally. + +### Message Properties in Stomp CMS + +Since Stomp is strictly text-based, it does not support a way to specify the type of message properties (called "header" in stomp lingo). This means that a property sent as an integer could be read by a Stomp CMS client as any of: string, integer, short, long, etc. + +When a Java client, for example, sends a message to the broker with an integer property ("myval"=1), the broker adapts the message from openwire to stomp and in the process converts the property "myval" to the string "1" and sends the message to the client. The client receives the string, but allows the user to read this value in any way that will work successfully with the std::istringstream >> operator. + +The same goes for writing values to an outgoing message. You can call any of the methods (e.g. setIntProperty). The resulting value that goes out on the wire is still a string, however. + +###  Temporary Topics and Queues + +The Stomp Protocol does not support the concept of temporary topics or queues.  If you call the createTemporaryTopic or createTemporaryQueue methods of cms::Session an exception of type NotSupportedException is thrown.  To implement request / response type semantics you will need to use standard Topics and Queues. + +### Usage notes on Selectors with Stomp + +Stomp as a general rule only allows one session per connection.  In ActiveMQ-CPP we have created a sort of virtual session that allows more than one session to be created per connection.  The one caveat is that there still can only be one selector on the main Stomp Session that we create, so whatever the first session is that is created with a selector will be the only selector that will actually have any effect as none of the newly created sessions will apply a selector even if you pass one in the creation of that Session.  + diff --git a/activemq-cpp-usage-faqs.md b/activemq-cpp-usage-faqs.md new file mode 100644 index 0000000..645ca78 --- /dev/null +++ b/activemq-cpp-usage-faqs.md @@ -0,0 +1,8 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP Usage FAQs + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [ActiveMQ-CPP Usage FAQs](activemq-cpp-usage-faqs.html) + +This section covers general questions on how to use various feature of the ActiveMQ-CPP Library + +* [How do I use the SSL Transport](how-do-i-use-the-ssl-transport.html) + diff --git a/activemq-cpp-v370-released.md b/activemq-cpp-v370-released.md new file mode 100644 index 0000000..75d22ed --- /dev/null +++ b/activemq-cpp-v370-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.7.0 Released + +[Index](../../../index.html) > 2013 > 05 > 19 > [ActiveMQ-CPP v3.7.0 Released](activemq-cpp-v370-released.html) + +The next release of ActiveMQ-CPP is out featuring a lot of stability fixes. Download your copy from [here](../../../../cms/activemq-cpp-370-release.html). + diff --git a/activemq-cpp-v381-released.md b/activemq-cpp-v381-released.md new file mode 100644 index 0000000..18ba380 --- /dev/null +++ b/activemq-cpp-v381-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.8.1 Released + +[Index](../../../index.html) > 2013 > 09 > 19 > [ActiveMQ-CPP v3.8.1 Released](activemq-cpp-v381-released.html) + +The next release of ActiveMQ-CPP is out featuring a critical memory leak fix, grab the source bundle [here](../../../../cms/activemq-cpp-381-release.html). + diff --git a/activemq-cpp-v382-released.md b/activemq-cpp-v382-released.md new file mode 100644 index 0000000..c300360 --- /dev/null +++ b/activemq-cpp-v382-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.8.2 Released + +[Index](../../../index.html) > 2013 > 12 > 10 > [ActiveMQ-CPP v3.8.2 Released](activemq-cpp-v382-released.html) + +The next release of ActiveMQ-CPP is out featuring a critical memory leak fix, grab the source bundle [here](../../../../cms/activemq-cpp-382-release.html). + diff --git a/activemq-cpp-v383-released.md b/activemq-cpp-v383-released.md new file mode 100644 index 0000000..171cd54 --- /dev/null +++ b/activemq-cpp-v383-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.8.3 Released + +[Index](../../../index.html) > 2014 > 07 > 18 > [ActiveMQ-CPP v3.8.3 Released](activemq-cpp-v383-released.html) + +The next release of ActiveMQ-CPP is out featuring a critical memory leak fix, grab the source bundle [here](https://cwiki.apache.org/confluence/display/AMQCPP/ActiveMQ-CPP+3.8.3+Release). + diff --git a/activemq-cpp-v390-released.md b/activemq-cpp-v390-released.md new file mode 100644 index 0000000..ecd3cc4 --- /dev/null +++ b/activemq-cpp-v390-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.9.0 Released + +[Index](../../../index.html) > 2015 > 08 > 16 > [ActiveMQ-CPP v3.9.0 Released](activemq-cpp-v390-released.html) + +The next release of ActiveMQ-CPP is out featuring a critical memory leak fix, grab the source bundle [here](http://activemq.apache.org/cms/activemq-cpp-390-release.html). + diff --git a/activemq-cpp-v391-released.md b/activemq-cpp-v391-released.md new file mode 100644 index 0000000..a589122 --- /dev/null +++ b/activemq-cpp-v391-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.9.1 Released + +[Index](../../../index.html) > 2015 > 12 > 04 > [ActiveMQ-CPP v3.9.1 Released](activemq-cpp-v391-released.html) + +The next release of ActiveMQ-CPP is out featuring a critical memory leak fix, grab the source bundle [here](http://activemq.apache.org/cms/activemq-cpp-391-release.html). + diff --git a/activemq-cpp-v392-released.md b/activemq-cpp-v392-released.md new file mode 100644 index 0000000..4c66035 --- /dev/null +++ b/activemq-cpp-v392-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.9.2 Released + +[Index](../../../index.html) > 2016 > 02 > 09 > [ActiveMQ-CPP v3.9.2 Released](activemq-cpp-v392-released.html) + +The next release of ActiveMQ-CPP is out featuring a small STOMP protocol fix, grab the source bundle [here](http://activemq.apache.org/cms/activemq-cpp-392-release.html). + diff --git a/activemq-cpp-v393-released.md b/activemq-cpp-v393-released.md new file mode 100644 index 0000000..e74e331 --- /dev/null +++ b/activemq-cpp-v393-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.9.3 Released + +[Index](../../../index.html) > 2016 > 04 > 01 > [ActiveMQ-CPP v3.9.3 Released](activemq-cpp-v393-released.html) + +The next release of ActiveMQ-CPP is out featuring a small fix to ensure failed producer create throws an exception, grab the source bundle [here](http://activemq.apache.org/cms/activemq-cpp-393-release.html). + diff --git a/activemq-cpp-v394-released.md b/activemq-cpp-v394-released.md new file mode 100644 index 0000000..9c89e8f --- /dev/null +++ b/activemq-cpp-v394-released.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- ActiveMQ-CPP v3.9.4 Released + +[Index](../../../index.html) > 2017 > 02 > 24 > [ActiveMQ-CPP v3.9.4 Released](activemq-cpp-v394-released.html) + +The next release of ActiveMQ-CPP is out featuring a small fix to ensure failed producer create throws an exception, grab the source bundle [here](http://activemq.apache.org/cms/activemq-cpp-394-release.html). + diff --git a/activemq-delay-and-schedule-message-feature.md b/activemq-delay-and-schedule-message-feature.md new file mode 100644 index 0000000..012c264 --- /dev/null +++ b/activemq-delay-and-schedule-message-feature.md @@ -0,0 +1,79 @@ +Apache ActiveMQ ™ -- ActiveMQ Delay and Schedule Message Feature + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Message Features](activemq-message-features.html) > [ActiveMQ Delay and Schedule Message Feature](activemq-delay-and-schedule-message-feature.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +ActiveMQ from version **5.4** has an optional persistent scheduler built into the ActiveMQ message broker. It is enabled by setting the broker **schedulerSupport** attribute to true in the [xml configuration](#). +An ActiveMQ client can take advantage of a delayed delivery by using the following message properties: + +Property name + +type + +description + +AMQ\_SCHEDULED\_DELAY + +long + +The time in milliseconds that a message will wait before being scheduled to be delivered by the broker + +AMQ\_SCHEDULED\_PERIOD + +long + +The time in milliseconds to wait after the start time to wait before scheduling the message again + +AMQ\_SCHEDULED\_REPEAT + +int + +The number of times to repeat scheduling a message for delivery + +AMQ\_SCHEDULED\_CRON + +String + +Use a Cron entry to set the schedule + +For example, to have a message scheduled for delivery in 60 seconds - you would need to set the _AMQ\_SCHEDULED\_DELAY_ property: + + IMessageProducer producer = session.CreateProducer(destination); + ITextMessage message = session.CreateTextMessage("test msg"); + long time = 60 * 1000; + message.Properties\["AMQ\_SCHEDULED\_DELAY"\] = time; + producer.Send(message); + +You can set a message to wait with an initial delay, and the repeat delivery 10 times, waiting 10 seconds between each re-delivery: + + IMessageProducer producer = session.CreateProducer(destination); + ITextMessage message = session.CreateTextMessage("test msg"); + long delay = 30 * 1000; + long period = 10 * 1000; + int repeat = 9; + message.Properties\["AMQ\_SCHEDULED\_DELAY"\] = delay; + message.Properties\["AMQ\_SCHEDULED\_PERIOD"\] = period; + message.Properties\["AMQ\_SCHEDULED\_REPEAT"\] = repeat; + producer.Send(message); + +You can also use [CRON](http://en.wikipedia.org/wiki/Cron) to schedule a message, for example, if you want a message scheduled to be delivered every hour, you would need to set the CRON entry to be - _0 * * * *_ \- e.g. + + IMessageProducer producer = session.CreateProducer(destination); + ITextMessage message = session.CreateTextMessage("test msg"); + message.Properties\["AMQ\_SCHEDULED\_CRON"\] = "0 * * * *"; + producer.Send(message); + +CRON scheduling takes priority over using message delay - however, if a repeat and period is set with a CRON entry, the ActiveMQ scheduler will schedule delivery of the message for every time the CRON entry fires. Easier to explain with an example. Supposing that you want a message to be delivered 10 times, with a one second delay between each message - and you wanted this to happen every hour - you'd do this: + + IMessageProducer producer = session.CreateProducer(destination); + ITextMessage message = session.CreateTextMessage("test msg"); + message.Properties\["AMQ\_SCHEDULED\_CRON"\] = "0 * * * *"; + message.Properties\["AMQ\_SCHEDULED\_DELAY"\] = 1000; + message.Properties\["AMQ\_SCHEDULED\_PERIOD"\] = 1000; + message.Properties\["AMQ\_SCHEDULED\_REPEAT"\] = 9; + producer.Send(message); + + diff --git a/activemq-destination-features.md b/activemq-destination-features.md new file mode 100644 index 0000000..f513573 --- /dev/null +++ b/activemq-destination-features.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- ActiveMQ Destination Features + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Destination Features](activemq-destination-features.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +* [ActiveMQ Destination Management](activemq-destination-management.html) +* [ActiveMQ Destination Options](activemq-destination-options.html) +* [ActiveMQ Mirrored Queues](activemq-mirrored-queues.html) +* [ActiveMQ Virtual Destinations](activemq-virtual-destinations.html) +* [ActiveMQ Wildcards](activemq-wildcards.html) + + diff --git a/activemq-destination-management.md b/activemq-destination-management.md new file mode 100644 index 0000000..2d18d90 --- /dev/null +++ b/activemq-destination-management.md @@ -0,0 +1,32 @@ +Apache ActiveMQ ™ -- ActiveMQ Destination Management + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Destination Features](activemq-destination-features.html) > [ActiveMQ Destination Management](activemq-destination-management.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The Apache.NMS.ActiveMQ client provides some additional features beyond the standard NMS API.  One such feature is the ability to delete a given destination on the Broker.  This can be useful during testing when you want to start the test with a destination in a known state, empty or otherwise.  You can delete the destination and then the next send to that destination would recreate it at the Broker side.  Deleting a destination is as simple as the following: + +**Delete a destination** + +protected static void DeleteDestination() +{ + IConnectionFactory factory = new ConnectionFactory(ReplaceEnvVar(connectionURI)); + using (Connection connection = factory.CreateConnection() as Connection) + { + using (ISession session = connection.CreateSession()) + { + IQueue queue = session.GetQueue(testQueueName); + try + { + connection.DeleteDestination(queue); + } + catch + { + } + } + } +} + + diff --git a/activemq-destination-options.md b/activemq-destination-options.md new file mode 100644 index 0000000..43f9904 --- /dev/null +++ b/activemq-destination-options.md @@ -0,0 +1,74 @@ +Apache ActiveMQ ™ -- ActiveMQ Destination Options + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Destination Features](activemq-destination-features.html) > [ActiveMQ Destination Options](activemq-destination-options.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +### Background + +Destination Options are a way to provide extended configuration options to a NMS consumer without having to extend the NMS API. The options are encoded using URL query syntax in the destination name that the consumer is created on. + +### Consumer Options + +Option Name + +Default Value + +Description + +consumer.prefetchSize + +variable + +The number of message the consumer will [prefetch](#).  **Removed in NMS.ActiveMQ v1.7.0 use the PrefetchPolicy isntead.** + +consumer.maximumPendingMessageLimit + +0 + +Use to control if messages for non-durable topics are dropped if a [slow consumer](#) situation exists. + +consumer.noLocal + +false + +Same as the noLocal flag on a Topic consumer. Exposed here so that it can be used with a queue. + +consumer.dispatchAsync + +true + +Should the broker [dispatch messages asynchronously](#) to the consumer. + +consumer.retroactive + +false + +Is this a [Retroactive Consumer](#). + +consumer.selector + +null + +NMS Selector used with the consumer. + +consumer.exclusive + +false + +Is this an [Exclusive Consumer](#). + +consumer.priority + +0 + +Allows you to configure a [Consumer Priority](#). + +### Example + +var queue = session.GetQueue("TEST.QUEUE?consumer.dispatchAsync=false&consumer.prefetchSize=10"); +var consumer = session.CreateConsumer(queue); + + diff --git a/activemq-downloads.md b/activemq-downloads.md new file mode 100644 index 0000000..d755d98 --- /dev/null +++ b/activemq-downloads.md @@ -0,0 +1,141 @@ +Apache ActiveMQ ™ -- ActiveMQ Downloads + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Description + +Release Date + +NMS API Rev + +[Apache.NMS.ActiveMQ v1.7.2](apachenmsactivemq-v172.html) + +04/07/2016 + +v1.7.1 + +[Apache.NMS.ActiveMQ v1.7.1](apachenmsactivemq-v171.html) + +10/05/2015 + +v1.7.1 + +[Apache.NMS.ActiveMQ v1.7.0](apachenmsactivemq-v170.html) + +01/16/2015 + +v1.7.0 + +[Apache.NMS.ActiveMQ v1.6.5](apachenmsactivemq-v165.html) + +02/05/2015 + +v1.6.0 + +[Apache.NMS.ActiveMQ v1.6.4](apachenmsactivemq-v164.html) + +09/14/2014 + +v1.6.0 + +[Apache.NMS.ActiveMQ v1.6.3](apachenmsactivemq-v163.html) + +07/21/2014 + +v1.6.0 + +[Apache.NMS.ActiveMQ v1.6.2](apachenmsactivemq-v162.html) + +12/23/2013 + +v1.6.0 + +[Apache.NMS.ActiveMQ v1.6.1](apachenmsactivemq-v161.html) + +10/19/2013 + +v1.6.0 + +[Apache.NMS.ActiveMQ v1.6.0](apachenmsactivemq-v160.html) + +06/06/2013 + +v1.6.0 + +[Apache.NMS.ActiveMQ v1.5.6](apachenmsactivemq-v156.html) + +07/12/2012 + +v1.5.1 + +[Apache.NMS.ActiveMQ v1.5.5](apachenmsactivemq-v155.html) + +05/03/2012 + +v1.5.0 + +[Apache.NMS.ActiveMQ v1.5.4](apachenmsactivemq-v154.html) + +04/13/2012 + +v1.5.0 + +[Apache.NMS.ActiveMQ v1.5.3](apachenmsactivemq-v153.html) + +01/27/2012 + +v1.5.0 + +[Apache.NMS.ActiveMQ v1.5.2](apachenmsactivemq-v152.html) + +11/18/2011 + +v1.5.0 + +[Apache.NMS.ActiveMQ v1.5.1](apachenmsactivemq-v151.html) + +06/04/2011 + +v1.5.0 + +[Apache.NMS.ActiveMQ v1.5.0](apachenmsactivemq-v150.html) + +02/17/2011 + +v1.5.0 + +[Apache.NMS.ActiveMQ v1.4.1](apachenmsactivemq-v141.html) + +10/04/2010 + +v1.4.0 + +[Apache.NMS.ActiveMQ v1.4.0](apachenmsactivemq-v140.html) + +09/17/2010 + +v1.4.0 + +[Apache.NMS.ActiveMQ v1.3.0](apachenmsactivemq-v130.html) + +05/21/2010 + +v1.3.0 + +[Apache.NMS.ActiveMQ v1.2.0](apachenmsactivemq-v120.html) + +02/12/2010 + +v1.2.0 + +[Apache.NMS ActiveMQ v1.1.0](apachenms-activemq-v110.html) + +07/12/2009 + +v1.1.0 + + diff --git a/activemq-enumerate-destination-using-advisory-messages.md b/activemq-enumerate-destination-using-advisory-messages.md new file mode 100644 index 0000000..6aab4a6 --- /dev/null +++ b/activemq-enumerate-destination-using-advisory-messages.md @@ -0,0 +1,163 @@ +Apache ActiveMQ ™ -- ActiveMQ Enumerate Destination using Advisory Messages + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Examples](activemq-examples.html) > [ActiveMQ Advisory Message Examples](activemq-advisory-message-examples.html) > [ActiveMQ Enumerate Destination using Advisory Messages](activemq-enumerate-destination-using-advisory-messages.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +### Enumerating Available Destinations using Advisory Messages + +This example shows you how to consume Advisory Messages from the Broker to enumerate various destination types. + +/\* + \* Licensed to the Apache Software Foundation (ASF) under one or more + \* contributor license agreements. See the NOTICE file distributed with + \* this work for additional information regarding copyright ownership. + \* The ASF licenses this file to You under the Apache License, Version 2.0 + \* (the "License"); you may not use this file except in compliance with + \* the License. You may obtain a copy of the License at + \* + \* http://www.apache.org/licenses/LICENSE-2.0 + \* + \* Unless required by applicable law or agreed to in writing, software + \* distributed under the License is distributed on an "AS IS" BASIS, + \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + \* See the License for the specific language governing permissions and + \* limitations under the License. + */ + +using System; +using Apache.NMS; +using Apache.NMS.Util; +using Apache.NMS.ActiveMQ; +using Apache.NMS.ActiveMQ.Commands; + +namespace AdvisoryExample +{ + class AdvisoryExample + { + private IConnection connection; + private ISession session; + + public const String QUEUE\_ADVISORY\_DESTINATION = "ActiveMQ.Advisory.Queue"; + public const String TOPIC\_ADVISORY\_DESTINATION = "ActiveMQ.Advisory.Topic"; + public const String TEMPQUEUE\_ADVISORY\_DESTINATION = "ActiveMQ.Advisory.TempQueue"; + public const String TEMPTOPIC\_ADVISORY\_DESTINATION = "ActiveMQ.Advisory.TempTopic"; + + public const String ALLDEST\_ADVISORY\_DESTINATION = QUEUE\_ADVISORY\_DESTINATION + "," + + TOPIC\_ADVISORY\_DESTINATION + "," + + TEMPQUEUE\_ADVISORY\_DESTINATION + "," + + TEMPTOPIC\_ADVISORY\_DESTINATION; + + AdvisoryExample() + { + IConnectionFactory factory = new ConnectionFactory(); + + connection = factory.CreateConnection(); + connection.Start(); + session = connection.CreateSession(); + } + + void EnumerateQueues() + { + Console.WriteLine("Listing all Queues on Broker:"); + + IDestination dest = session.GetTopic(QUEUE\_ADVISORY\_DESTINATION); + + using(IMessageConsumer consumer = session.CreateConsumer(dest)) + { + IMessage advisory; + + while((advisory = consumer.Receive(TimeSpan.FromMilliseconds(2000))) != null) + { + ActiveMQMessage amqMsg = advisory as ActiveMQMessage; + + if(amqMsg.DataStructure != null) + { + DestinationInfo info = amqMsg.DataStructure as DestinationInfo; + if(info != null) + { + Console.WriteLine(" Queue: " + info.Destination.ToString() ); + } + } + } + } + Console.WriteLine("Listing Complete."); + } + + void EnumerateTopics() + { + Console.WriteLine("Listing all Topics on Broker:"); + + IDestination dest = session.GetTopic(TOPIC\_ADVISORY\_DESTINATION); + + using(IMessageConsumer consumer = session.CreateConsumer(dest)) + { + IMessage advisory; + + while((advisory = consumer.Receive(TimeSpan.FromMilliseconds(2000))) != null) + { + ActiveMQMessage amqMsg = advisory as ActiveMQMessage; + + if(amqMsg.DataStructure != null) + { + DestinationInfo info = amqMsg.DataStructure as DestinationInfo; + if(info != null) + { + Console.WriteLine(" Topic: " + info.Destination.ToString() ); + } + } + } + } + Console.WriteLine("Listing Complete."); + } + + void EnumerateDestinations() + { + Console.WriteLine("Listing all Destinations on Broker:"); + + IDestination dest = session.GetTopic(ALLDEST\_ADVISORY\_DESTINATION); + + using(IMessageConsumer consumer = session.CreateConsumer(dest)) + { + IMessage advisory; + + while((advisory = consumer.Receive(TimeSpan.FromMilliseconds(2000))) != null) + { + ActiveMQMessage amqMsg = advisory as ActiveMQMessage; + + if(amqMsg.DataStructure != null) + { + DestinationInfo info = amqMsg.DataStructure as DestinationInfo; + if(info != null) + { + string destType = info.Destination.IsTopic ? "Topic" : "Qeue"; + destType = info.Destination.IsTemporary ? "Temporary" + destType : destType; + Console.WriteLine(" " + destType + ": " + info.Destination.ToString() ); + } + } + } + } + Console.WriteLine("Listing Complete."); + } + + void ShutDown() + { + session.Close(); + connection.Close(); + } + + public static void Main (string\[\] args) + { + AdvisoryExample ex = new AdvisoryExample(); + + ex.EnumerateQueues(); + ex.EnumerateTopics(); + ex.EnumerateDestinations(); + ex.ShutDown(); + } + } +} + + diff --git a/activemq-examples.md b/activemq-examples.md new file mode 100644 index 0000000..08514dd --- /dev/null +++ b/activemq-examples.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- ActiveMQ Examples + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Examples](activemq-examples.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +* [ActiveMQ Advisory Message Examples](activemq-advisory-message-examples.html) + * [ActiveMQ Enumerate Destination using Advisory Messages](activemq-enumerate-destination-using-advisory-messages.html) + + diff --git a/activemq-exclusive-consumers.md b/activemq-exclusive-consumers.md new file mode 100644 index 0000000..65cff4e --- /dev/null +++ b/activemq-exclusive-consumers.md @@ -0,0 +1,24 @@ +Apache ActiveMQ ™ -- ActiveMQ Exclusive Consumers + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Consumer Features](activemq-consumer-features.html) > [ActiveMQ Exclusive Consumers](activemq-exclusive-consumers.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +### Exclusive Consumer + +We have a new feature in version 4.x and above called Exclusive Consumer or Exclusive Queues which avoids the end user having to _pin_ anything. The broker will pick a single MessageConsumer to get all the messages for a queue to ensure ordering. If that consumer fails, the broker will auto failover and choose another consumer. + +So the effect is a heterogeneous cluster where each client has the same setup and configuration; the broker is choosing one consumer to be the _master_ and send all the messages to it in order until it dies; then you get immediate failover to another consumer. + +For those who've struggled with pinning NMS consumers in clusters you'll immediately realize how useful this is to making clustered, high available distributed services. + +### Example + +An Exclusive Consumer is created using [ActiveMQ URI Configuration](activemq-uri-configuration.html) as follows: + +var queue = session.GetQueue("TEST.QUEUE?consumer.exclusive=true"); +var consumer = session.CreateConsumer(queue); + + diff --git a/activemq-faq.md b/activemq-faq.md new file mode 100644 index 0000000..04d9cd1 --- /dev/null +++ b/activemq-faq.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- ActiveMQ FAQ + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ FAQ](activemq-faq.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/activemq-inactivitymonitor.md b/activemq-inactivitymonitor.md new file mode 100644 index 0000000..c7ab90a --- /dev/null +++ b/activemq-inactivitymonitor.md @@ -0,0 +1,87 @@ +Apache ActiveMQ ™ -- ActiveMQ InactivityMonitor + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ InactivityMonitor](activemq-inactivitymonitor.html) + + +ActiveMQ InactivityMonitor +========================== + +The ActiveMQ InactivityMonitor is an active thread that checks the connection is still active and if it suspects the connection is not functioning correctly, it closes the connection. + +Connections are monitored by: + +* Ensuring data is read from the connection during the specified time period (Max Inactivity Duration). +* Writing a **`KeepAliveInfo`** message to the connection if no **normal** activemq traffic is sent across the connection during the specified time period. + +Each connection has two InactivityMonitors associated, one on each end of the connection. The InactivityMonitor expects to receive data on the connection during a specified time period. If **normal** ActiveMQ traffic has not been sent across the connection during that period, it expects to receive a **`KeepAliveInfo`** message sent by the InactivityMonitor on the other end of the connection. + +Using the default values; if no data has been written or read from the connection for 30 seconds, the InactivityMonitor kicks in. The InactivityMonitor throws an **`InactivityIOException`** and shuts down the transport associated with the connection. This results in the following **`DEBUG`** logging: + +2012-06-26 17:13:55,712 | DEBUG | 30000 ms elapsed since last read check. | org.apache.activemq.transport.AbstractInactivityMonitor | InactivityMonitor ReadCheck +2012-06-26 17:13:55,712 | DEBUG | No message received since last read check for tcp:///127.0.0.1:52659! Throwing InactivityIOException. | org.apache.activemq.transport.AbstractInactivityMonitor | InactivityMonitor ReadCheck +2012-06-26 17:13:55,714 | DEBUG | Transport Connection to: tcp://127.0.0.1:52659 failed: +org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>30000) long: tcp://127.0.0.1:52659 | +org.apache.activemq.broker.TransportConnection.Transport | InactivityMonitor Async Task: +java.util.concurrent.ThreadPoolExecutor$Worker@6a346239 +org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (>30000) long: tcp://127.0.0.1:52659 + at org.apache.activemq.transport.AbstractInactivityMonitor$4.run(AbstractInactivityMonitor.java:187) + at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) + at java.lang.Thread.run(Thread.java:680) + +### Advanced InactivityMonitor Configuration + +There are some configuration options to further fine tune the `InactivityMonitor`. Note, for most use cases the default values are just fine. + +Parameter + +Default Value + +Description + +`wireFormat.maxInactivityDuration` + +`30000` + +Timeout, in milliseconds, after which the connection is closed by the broker if no data has been received. + +`wireFormat.maxInactivityDurationInitalDelay` + +`10000` + +Specifies the maximum delay, in milliseconds, before connection inactivity monitoring is started. + +This can prove useful if a broker is under load with many connections being created concurrently. + +`transport.useInactivityMonitor` + +`true` + +A value of **`false`** disables the `InactivityMonitor` completely and connections will never time out. + +`transport.useKeepAlive` + +`true` + +Determines if a **`KeepAliveInfo`** message should be sent on an idle connection to prevent it from timing out. + +Disabling the keep alive will still make connections time out when no data was received on the connection for the specified amount of time. + +These parameters can be specified directly on the client side connection URL, e.g. **`tcp://localhost:61616?wireFormat.maxInactivityDuration=30000`,** or on the broker's transport connector URL: + + + + + +### What happens if the `maxInactivityDuration` and `maxInactivityDurationInitalDelay` are set to different values on either side of the same connection? + +At startup the InactivityMonitor negotiates the appropriate **`maxInactivityDuration`** and **`maxInactivityDurationInitalDelay`**. The shortest duration is taken for the connection. + +### Can the InactivityMonitor on a connection be disabled? + +Setting **`transport.useInactivityMonitor=false`** will disable the InactivityMonitor**.** Configuring **`wireFormat.maxInactivityDuration=0`** will achieve the same result. + +### Potential Issues + +[slow-networks-drop-large-messages](slow-networks-drop-large-messages.html) + diff --git a/activemq-message-dispatching-features.md b/activemq-message-dispatching-features.md new file mode 100644 index 0000000..14fe90d --- /dev/null +++ b/activemq-message-dispatching-features.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- ActiveMQ Message Dispatching Features + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Message Dispatching Features](activemq-message-dispatching-features.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +* [ActiveMQ Async Sends](activemq-async-sends.html) + + diff --git a/activemq-message-features.md b/activemq-message-features.md new file mode 100644 index 0000000..19fd3b6 --- /dev/null +++ b/activemq-message-features.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- ActiveMQ Message Features + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Message Features](activemq-message-features.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +* [ActiveMQ Delay and Schedule Message Feature](activemq-delay-and-schedule-message-feature.html) + + diff --git a/activemq-message-properties.md b/activemq-message-properties.md new file mode 100644 index 0000000..3079107 --- /dev/null +++ b/activemq-message-properties.md @@ -0,0 +1,168 @@ +Apache ActiveMQ ™ -- ActiveMQ Message Properties + +[Features](features.html) > [Message Features](message-features.html) > [ActiveMQ Message Properties](activemq-message-properties.html) + + +**ActiveMQ Messages support the following default message properties:** + +Message Attributes Accessed as Properties: +------------------------------------------ + +Property Name + +Type + +Default Value + +Description + +`JMSDestination` + +`javax.jms.Destination` + +_Set by the producer_ + +Destination used by the producer. + +`JMSReplyTo` + +`javax.jms.Destination` + +`null` + +User defined. + +`JMSType` + +`String` + +`""` + +User defined. + +`JMSDeliveryMode` + +`int` + +`DeliveryMode.PERSISTENT` + +Indicator if messages should be persisted. + +`JMSPriority` + +`int` + +`4` + +Value from `0-9`. + +`JMSMessageID` + +`String` + +`unique` + +Unique identifier for the message. + +`JMSTimestamp` + +`long` + +_Time the message was sent_ + +Time in milliseconds. + +`JMSCorrelationID` + +`String` + +`null` + +User defined. + +`JMSExpiration` + +`long` + +`0` + +Time in milliseconds to expire the message. A value of `0` means never expire. + +`JMSRedelivered` + +`boolean` + +`false` + +`true` if the message is being resent to the consumer, persisted via [persistJMSRedelivered](per-destination-policies.html) + +JMS Defined: +------------ + +Property Name + +Type + +Default Value + +Description + +`JMSXDeliveryCount` + +`int` + +`0` + +Number of attempts to send the message. + +`JMSXGroupID` + +`String` + +`null` + +Identity of the message group. + +`JMSXGroupSeq` + +`int` + +`0` + +Sequence number of the message. + +`JMSXProducerTXID` + +`String` + +`null` + +Transaction identifier. + +ActiveMQ Defined: +----------------- + +Property Name + +Type + +Default Value + +Description + +`JMSActiveMQBrokerInTime` + +`long` + +`0` + +Time stamp (in milliseconds) for when the message arrived at the broker. + +`JMSActiveMQBrokerOutTime` + +`long` + +`0` + +Time stamp (in milliseconds) for when the message left the broker. + diff --git a/activemq-mirrored-queues.md b/activemq-mirrored-queues.md new file mode 100644 index 0000000..5233e8b --- /dev/null +++ b/activemq-mirrored-queues.md @@ -0,0 +1,46 @@ +Apache ActiveMQ ™ -- ActiveMQ Mirrored Queues + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Destination Features](activemq-destination-features.html) > [ActiveMQ Mirrored Queues](activemq-mirrored-queues.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Mirrored Queues +--------------- + +Queues provide an excellent reliable and high performance [load balancing mechanism](../how-does-a-queue-compare-to-a-topic.html). Each message placed on a queue can only be successfully processed by a single consumer. This is a good thing! ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png). However sometimes you want to monitor what messages flow between the producers and consumers on a queue. + +To do this you can use [Virtual Destinations](../virtual-destinations.html) to setup a virtual Queue which forwards the message to multiple physical queues. However enabling this for every single queue in your system can be painful. + +So to make it easy to monitor queues, we have added a feature we call _Mirrored Queues_. Mirrored Queues are kinda like a zero-configuration [Wire Tap](http://activemq.apache.org/camel/wire-tap.html) on all of your queues inside your Message Broker. + +### Example + +For example imagine we have a number of producers sending to queue **Foo.Bar** and consumers consuming from queue **Foo.Bar** and we want to monitor or view activity. + +If you enable Mirrored Queues then by default you can subscribe to the topic **VirtualTopic.Mirror.Foo.Bar** and receive all the messages that are sent to the queue **Foo.Bar**. Since its a topic as many consumers can subscribe to this topic as are required. + +If you want you can use this feature with [Virtual Topics](../virtual-destinations.html); so that you can define a logical consumer; say called A. Then you can subscribe to the queue **Consumer.A.VirtualTopic.Mirror.Foo.Bar** to receive all the messages sent to queue **Foo.Bar** for the consumer A. You can then run multiple instances of this consumer who can then load balance among each other. + +This combination of Mirrored Queues and [Virtual Destinations](../virtual-destinations.html) can be extremely useful for monitoring transaction flows; for example with [Business Activity Monitoring (BAM)](http://activemq.apache.org/camel/bam.html). + +### How Mirrored Queues work + +When enabled, mirrored queues causes every message sent to a queue to also be sent to a topic of a similar name; so that folks who are interested in watching message exchanges on a queue can consume from the mirrored queue topic. + +When coupled with [Virtual Topics](../virtual-destinations.html) on this topic as described in the above example, you can actually end up creating new queues which are mirrors of a given queue dynamically at runtime! + +### Enabling Mirrored Queues + +By default Mirrored Queues is disabled; as enabling it will cause a virtual topic to be created for each queue you use. + +To enable Mirrored Queues, set the **useMirroredQueues** property on [BrokerService](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/broker/BrokerService.html) or add the following inside the element in the [Xml Configuration](../xml-configuration.html): + + + + + +This would make a topic named "*.qmirror" for each queue on your Broker. + + diff --git a/activemq-net-110-release.md b/activemq-net-110-release.md new file mode 100644 index 0000000..dad479f --- /dev/null +++ b/activemq-net-110-release.md @@ -0,0 +1,136 @@ +Apache ActiveMQ ™ -- ActiveMQ .NET 1.1.0 Release + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ .NET 1.1.0 Release](activemq-net-110-release.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The 1.1.0 release is a major milestone for the Apache NMS project. It is the first official release of the main Apache.NMS project, and all provider implementation projects. Following are some highlights of this release: + +* Support for Failover Transport +* Support for Discovery protocol. +* Support for Windows Communication Foundation (WCF). +* Improved API Documentation. +* Many bug fixes. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. Support TIBCO EMS 4.1.0 and above. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS-1.1.0-src.zip) + +[Apache.NMS-1.1.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.1.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS-1.1.0-bin.zip) + +[Apache.NMS-1.1.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS-1.1.0-bin.zip.asc) + +1.1.0.1642 + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.ActiveMQ-1.1.0-src.zip) + +[Apache.NMS.ActiveMQ-1.1.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.ActiveMQ-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.1.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.ActiveMQ-1.1.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.1.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.ActiveMQ-1.1.0-bin.zip.asc) + +1.1.0.1642 + +Apache.NMS.EMS Source code + +[Apache.NMS.EMS-1.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.EMS-1.1.0-src.zip) + +[Apache.NMS.EMS-1.1.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.EMS-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS.EMS Binary Assemblies + +[Apache.NMS.EMS-1.1.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.EMS-1.1.0-bin.zip) + +[Apache.NMS.EMS-1.1.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.EMS-1.1.0-bin.zip.asc) + +1.1.0.1642 + +Apache.NMS.MSMQ Source code + +[Apache.NMS.MSMQ-1.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.MSMQ-1.1.0-src.zip) + +[Apache.NMS.MSMQ-1.1.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.MSMQ-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS.MSMQ Binary Assemblies + +[Apache.NMS.MSMQ-1.1.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.MSMQ-1.1.0-bin.zip) + +[Apache.NMS.MSMQ-1.1.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.MSMQ-1.1.0-bin.zip.asc) + +1.1.0.1642 + +Apache.NMS.WCF Source code + +[Apache.NMS.WCF-1.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.WCF-1.1.0-src.zip) + +[Apache.NMS.WCF-1.1.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.WCF-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS.WCF Binary Assemblies + +[Apache.NMS.WCF-1.1.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.WCF-1.1.0-bin.zip) + +[Apache.NMS.WCF-1.1.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.WCF-1.1.0-bin.zip.asc) + +1.1.0.1642 + +**_NOTE:_** _In order to use the_ **Apache.NMS.EMS** _project files, you will need to provide your own copy of the TIBCO.EMS.dll, as this is a licensed 3rd Party application._ + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-net/tags/1.1.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11814) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +  + + diff --git a/activemq-net-120-release.md b/activemq-net-120-release.md new file mode 100644 index 0000000..442ae3f --- /dev/null +++ b/activemq-net-120-release.md @@ -0,0 +1,183 @@ +Apache ActiveMQ ™ -- ActiveMQ .NET 1.2.0 Release + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ .NET 1.2.0 Release](activemq-net-120-release.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS client libraries and fixes several bugs found in the 1.1.0 release.  Some highlights for this release. + +* Addition of ConnectionMeteData to the Connection API. +* Addition of QueueBrowser to the Session API. +* Addition of an Individual Acknowledge Mode. +* Improvements to the Failover Transport. +* Improved API Documentation. +* New IStreamMessage interface. +* New IRedeliveryPolicy interface. +* Expanded IByteMessage interface to read/write primitive types. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS-1.2.0-src.zip) + +[Apache.NMS-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS-1.2.0-src.zip.asc) + +1.2.0.1836 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS-1.2.0-bin.zip) + +[Apache.NMS-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS-1.2.0-bin.zip.asc) + +1.2.0.1836 + +Apache.NMS Client Downloads +--------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.Stomp-1.2.0-src.zip) + +[Apache.NMS.Stomp-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.Stomp-1.2.0-src.zip.asc) + +1.2.0.1858 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.Stomp-1.2.0-bin.zip) + +[Apache.NMS.Stomp-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.Stomp-1.2.0-bin.zip.asc) + +1.2.0.1858 + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.ActiveMQ-1.2.0-src.zip) + +[Apache.NMS.ActiveMQ-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.ActiveMQ-1.2.0-src.zip.asc) + +1.2.0.1864 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.ActiveMQ-1.2.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.ActiveMQ-1.2.0-bin.zip.asc) + +1.2.0.1864 + +The NMS 1.2.0 Client Releases are still in progress + +While the Apache.NMS API 1.2.0 has been released some of the client libraries are still in the process of being released. + +Release Candidate 1 of the EMS, MSMQ and WCF NMS Clients are here: +[http://people.apache.org/~tabish/nms-1.2.0-RC1](http://people.apache.org/~tabish/nms-1.2.0-RC1) + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.EMS Source code + +[Apache.NMS.EMS-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.EMS-1.2.0-src.zip) + +[Apache.NMS.EMS-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.EMS-1.2.0-src.zip.asc) + +1.2.0.1794 + +Apache.NMS.EMS Binary Assemblies + +[Apache.NMS.EMS-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.EMS-1.2.0-bin.zip) + +[Apache.NMS.EMS-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.EMS-1.2.0-bin.zip.asc) + +1.2.0.1794 + +Apache.NMS.MSMQ Source code + +[Apache.NMS.MSMQ-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.MSMQ-1.2.0-src.zip) + +[Apache.NMS.MSMQ-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.MSMQ-1.2.0-src.zip.asc) + +1.2.0.1794 + +Apache.NMS.MSMQ Binary Assemblies + +[Apache.NMS.MSMQ-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.MSMQ-1.2.0-bin.zip) + +[Apache.NMS.MSMQ-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.MSMQ-1.2.0-bin.zip.asc) + +1.2.0.1794 + +Apache.NMS.WCF Source code + +[Apache.NMS.WCF-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.WCF-1.2.0-src.zip) + +[Apache.NMS.WCF-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.WCF-1.2.0-src.zip.asc) + +1.2.0.1794 + +Apache.NMS.WCF Binary Assemblies + +[Apache.NMS.WCF-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.WCF-1.2.0-bin.zip) + +[Apache.NMS.WCF-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.WCF-1.2.0-bin.zip.asc) + +1.2.0.1794 + +**_NOTE:_** _In order to use the_ **Apache.NMS.EMS** _project files, you will need to provide your own copy of the TIBCO.EMS.dll, as this is a licensed 3rd Party application._ + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. Support TIBCO EMS 4.1.0 and above. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/tags/1.2.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11815) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +  + + diff --git a/activemq-net-130-release.md b/activemq-net-130-release.md new file mode 100644 index 0000000..b014057 --- /dev/null +++ b/activemq-net-130-release.md @@ -0,0 +1,174 @@ +Apache ActiveMQ ™ -- ActiveMQ .NET 1.3.0 Release + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ .NET 1.3.0 Release](activemq-net-130-release.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS client libraries and fixes several bugs found in the 1.2.0 release.  Some highlights for this release. + +* Addition of QueueBrowser support to NMS.ActiveMQ +* Addition of SSL Support for NMS.ActiveMQ and NMS.Stomp +* Improvements to the Failover Transport. +* Improved API Documentation. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS-1.3.0-src.zip) + +[Apache.NMS-1.3.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS-1.3.0-src.zip.asc) + +1.3.0.1959 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.3.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS-1.3.0-bin.zip) + +[Apache.NMS-1.3.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS-1.3.0-bin.zip.asc) + +1.3.0.1959 + +Apache.NMS Client Downloads +--------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.ActiveMQ-1.3.0-src.zip) + +[Apache.NMS.ActiveMQ-1.3.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.ActiveMQ-1.3.0-src.zip.asc) + +1.3.0.1965 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.3.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.ActiveMQ-1.3.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.3.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.ActiveMQ-1.3.0-bin.zip.asc) + +1.3.0.1965 + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.Stomp-1.3.0-src.zip) + +[Apache.NMS.Stomp-1.3.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.Stomp-1.3.0-src.zip.asc) + +1.3.0.1969 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.3.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.Stomp-1.3.0-bin.zip) + +[Apache.NMS.Stomp-1.3.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.Stomp-1.3.0-bin.zip.asc) + +1.3.0.1969 + +The NMS 1.3.0 Client Releases are still in progress the NMS below providers will be released following a release the NMS 1.3.0 API based on availability of providers maintainers. + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.EMS Source code + +[Apache.NMS.EMS-1.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.EMS-1.3.0-src.zip) + +[Apache.NMS.EMS-1.3.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.EMS-1.3.0-src.zip.asc) + +1.3.0.1794 + +Apache.NMS.EMS Binary Assemblies + +[Apache.NMS.EMS-1.3.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.EMS-1.3.0-bin.zip) + +[Apache.NMS.EMS-1.3.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.EMS-1.3.0-bin.zip.asc) + +1.3.0.1794 + +Apache.NMS.MSMQ Source code + +[Apache.NMS.MSMQ-1.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.MSMQ-1.3.0-src.zip) + +[Apache.NMS.MSMQ-1.3.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.MSMQ-1.3.0-src.zip.asc) + +1.3.0.1794 + +Apache.NMS.MSMQ Binary Assemblies + +[Apache.NMS.MSMQ-1.3.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.MSMQ-1.3.0-bin.zip) + +[Apache.NMS.MSMQ-1.3.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.MSMQ-1.3.0-bin.zip.asc) + +1.3.0.1794 + +Apache.NMS.WCF Source code + +[Apache.NMS.WCF-1.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.WCF-1.3.0-src.zip) + +[Apache.NMS.WCF-1.3.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.WCF-1.3.0-src.zip.asc) + +1.3.0.1794 + +Apache.NMS.WCF Binary Assemblies + +[Apache.NMS.WCF-1.3.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.WCF-1.3.0-bin.zip) + +[Apache.NMS.WCF-1.3.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.WCF-1.3.0-bin.zip.asc) + +1.3.0.1794 + +**_NOTE:_** _In order to use the_ **Apache.NMS.EMS** _project files, you will need to provide your own copy of the TIBCO.EMS.dll, as this is a licensed 3rd Party application._ + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. Support TIBCO EMS 4.1.0 and above. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/tags/1.3.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12150) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +  + + diff --git a/activemq-net-140-release.md b/activemq-net-140-release.md new file mode 100644 index 0000000..086715b --- /dev/null +++ b/activemq-net-140-release.md @@ -0,0 +1,174 @@ +Apache ActiveMQ ™ -- ActiveMQ .NET 1.4.0 Release + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [ActiveMQ .NET 1.4.0 Release](activemq-net-140-release.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS client libraries and fixes several bugs found in the 1.3.0 release.  Some highlights for this release. + +* Improved URI handling in all NMS clients. +* Improved handling of Request Timeout settings. +* Added a new SetBytes method to IMapMessage. +* Added a new MessageTransformer API. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS-1.4.0-src.zip) + +[Apache.NMS-1.4.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS-1.4.0-src.zip.asc) + +1.4.0.2075 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.4.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS-1.4.0-bin.zip) + +[Apache.NMS-1.4.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS-1.4.0-bin.zip.asc) + +1.4.0.2075 + +Apache.NMS Client Downloads +--------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.4.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.1-src.zip) + +[Apache.NMS.ActiveMQ-1.4.1-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.1-src.zip.asc) + +1.4.1.2098 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.4.1-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.1-bin.zip) + +[Apache.NMS.ActiveMQ-1.4.1-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.1-bin.zip.asc) + +1.4.1.2098 + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.Stomp-1.4.0-src.zip) + +[Apache.NMS.Stomp-1.4.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.Stomp-1.4.0-src.zip.asc) + +1.4.0.2077 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.4.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.Stomp-1.4.0-bin.zip) + +[Apache.NMS.Stomp-1.4.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.Stomp-1.4.0-bin.zip.asc) + +1.4.0.2077 + +The NMS 1.4.0 Client Releases are still in progress the NMS below providers will be released following a release the NMS 1.4.0 API based on availability of providers maintainers. + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.EMS Source code + +[Apache.NMS.EMS-1.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.EMS-1.4.0-src.zip) + +[Apache.NMS.EMS-1.4.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.EMS-1.4.0-src.zip.asc) + +1.4.0.2075 + +Apache.NMS.EMS Binary Assemblies + +[Apache.NMS.EMS-1.4.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.EMS-1.4.0-bin.zip) + +[Apache.NMS.EMS-1.4.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.EMS-1.4.0-bin.zip.asc) + +1.4.0.2075 + +Apache.NMS.MSMQ Source code + +[Apache.NMS.MSMQ-1.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.MSMQ-1.4.0-src.zip) + +[Apache.NMS.MSMQ-1.4.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.MSMQ-1.4.0-src.zip.asc) + +1.4.0.2075 + +Apache.NMS.MSMQ Binary Assemblies + +[Apache.NMS.MSMQ-1.4.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.MSMQ-1.4.0-bin.zip) + +[Apache.NMS.MSMQ-1.4.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.MSMQ-1.4.0-bin.zip.asc) + +1.4.0.2075 + +Apache.NMS.WCF Source code + +[Apache.NMS.WCF-1.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.WCF-1.4.0-src.zip) + +[Apache.NMS.WCF-1.4.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.WCF-1.4.0-src.zip.asc) + +1.4.0.2075 + +Apache.NMS.WCF Binary Assemblies + +[Apache.NMS.WCF-1.4.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.WCF-1.4.0-bin.zip) + +[Apache.NMS.WCF-1.4.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.WCF-1.4.0-bin.zip.asc) + +1.4.0.2075 + +**_NOTE:_** _In order to use the_ **Apache.NMS.EMS** _project files, you will need to provide your own copy of the TIBCO.EMS.dll, as this is a licensed 3rd Party application._ + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. Support TIBCO EMS 4.1.0 and above. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/tags/1.4.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12188) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +  + + diff --git a/activemq-performance-module-users-manual.md b/activemq-performance-module-users-manual.md new file mode 100644 index 0000000..289d8ca --- /dev/null +++ b/activemq-performance-module-users-manual.md @@ -0,0 +1,697 @@ +Apache ActiveMQ ™ -- ActiveMQ Performance Module Users Manual + +[Features](features.html) > [Performance](performance.html) > [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) + + +Running Maven 2 Performance Test +-------------------------------- + +This [Maven 2](http://maven.apache.org) plugin allows you to run performance tests easily using the Maven command line or run tests automatically in [Continuum](http://maven.apache.org/continuum/) + +### Prerequisites + +Starting with ActiveMQ 5.5 and above the plugin can be obtained from maven or if you download the src from SVN you can build it yourself. Start with a complete build of Apache ActiveMQ and then do + +cd activemq-tooling +mvn clean install + +To run the following Maven goals make sure you are inside a Maven2 project directory where its POM is enabled with the Maven2 plugin. + +### Getting started + +To get started, switch to the [activemq-perftest directory from the sandbox repo,](http://svn.apache.org/repos/asf/activemq/sandbox/activemq-perftest/) or to a directory containing your own Maven POM with the following plugin defined: + + + org.apache.activemq.tooling + activemq-perf-maven-plugin + ${activemq-version} + + +In ActiveMQ versions prior to 5.8, the artifactId was `maven-activemq-perf-plugin`. + +Type the following commands into separate shells (the broker line here is optional if you have a preconfigured one running): + +mvn activemq-perf:broker -Durl=broker:tcp://localhost:61616 +mvn activemq-perf:consumer +mvn activemq-perf:producer + +If you run the broker on a different machine then change the producer and consumer commands to + +mvn activemq-perf:consumer -Dfactory.brokerURL=tcp://host:port +mvn activemq-perf:producer -Dfactory.brokerURL=tcp://host:port + +where you switch host:port with the actual values. + +When you run the producer & consumer, it generates an XML performance report in the current directory, so that you can graph and chart the results etc. See the [sample report](sample-report.html) + +### Maven goals + +Goal + +Description + +activemq-perf:broker + +Starts broker using the activemq configuration file located in "src\\main\\resources\\broker-conf" where the default config is activemq.xml. +Parameters: + 1\. -DconfigType - specifies the type of configuration to use. Its value must be one of the filename in the "..\\broker-config" directory (e.g. -DconfigType=kaha). + 2\. -DconfigFile - path to config file other than those in "src\\..\\broker-config".e.g -DconfigFile=c:\\dir\\activemq.xml) + +activemq-perf:consumer + +Starts the consumer's performance testing. The generated report file can be found in the directory specified in the parameter "sysTest.reportDir". + +activemq-perf:producer + +Starts the producer's performance testing. The generated report file can be found in the directory specified in the parameter "sysTest.reportDir". + +1 **Note**:The parameters for both consumer and producers are described in the next section. ([sample report](sample-report.html)) + +### Configuration for running a system of JMS Clients (Producer/Consumer) + +Configuration Key + +Default Value + +Description + +sysTest.propsConfigFile + +null + +Use properties specified externally in a key=value properties file + +sysTest.clientPrefix + +JmsConsumer or JmsProducer + +Specifies the client name prefix that will be use for each system. By default it will use JmsConsumer for consumer systems, and JmsProducer for producer systems. + +sysTest.numClients + +1 + +Specifies the number of JMS Clients to start. + +sysTest.totalDests + +1 + +Specifies the total number of destinations to use for the whole system test. + +sysTest.destDistro + +all + +Specifies how to distribute the destinations to the clients. Available values are (Invalid value will result to using the default value 'all')1: + +* 'all' - All clients will send/receive to all destinations. i.e. if there are 2 producers and 5 destinations, each producer will send a message to each individual destination. +* 'equal' - Clients will equally divide the destinations among themselves. i.e. if there are 2 producers and 5 destinations, each producer will send messages to 2 destinations. The fifth destination will not be used. +* 'divide' - Clients will divide the destinations among themselves regardless of equality. i.e. if there are 2 producers and 5 destinations, producer 1 will send to 3 destinations, while producer 2 will send to 2 destinations. + +sysTest.reportDir + +./ + +The directory where the sampler report will be saved. + +sysTest.reportName + +null + +The default filename the sampler report will be saved us. There is usually no need to set this setting as the default value will create either JmsProducer_numClients#_numDests#_.xml and JmsConsumer\_numClients#\_numDests#_.xml, where # represents the number of clients and destinations set for that system, and specifies the destination distribution for the system. + +sysTest.reportType + +xml + +Specifies the manner of generating the performance report. Available values are: + +* 'xml' - Write the performance report into an xml file. Specified by reportDirectory and reportName. A verbose summary will also be displayed at the end of the test. +* 'verbose' - All information will be written to the standard output, which includes settings, sampler data, and performance summary. + +sysTest.samplers + +tp,cpu + +Specifies the samplers that will be started. To use enable more than one sampler, separate the values by commas without spaces. Available values are: + +* 'tp' - Throughput sampler +* 'cpu' - CPU Usage sampler + +sysTest.spiClass + +org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI + +The service provider interface class that allows the client to create a generic connection factory. Current available SPI classes include: + +1. 'org.apache.activemq.tool.ActiveMQPojoSPI' +2. 'org.apache.activemq.tool.ActiveMQClassLoaderSPI' + +1 **Note**: If the number of destinations is less than the number of clients and the distribution type is either 'equal' or 'divide', each client will send/receive from only one destination, distributing the destinations among the clients. i.e. if there are 5 producers and 2 destinations, 3 producers will send to destination 1, and 2 producers will send to destination 2. Also, a consumer can only receive from a single destination, unless composite destination is supported and specified. + +### Configuration for running a JMS Producer + +Configuration Key + +Default Value + +Description + +producer.sessTransacted + +false + +Specifies if the session created will be transacted or not. See the JMS Specifications for more details. + +producer.sessAckMode + +autoAck + +Specified the acknowledge mode of the session. See the JMS Specifications for more details. Available values are: + +1. 'autoAck' - Session.AUTO_ACKNOWLEDGE +2. 'clientAck' - Session.CLIENT_ACKNOWLEDGE +3. 'dupsAck' - Session.DUPS\_OK\_ACKNOWLEDGE +4. 'transacted' - Session.TRANSACTED + +producer.commitAfterXMsgs + +1 + +Commit transaction after the specified amount of messages. Only used in conjunction with a transacted JMS Session (producer.sessTransacted=true and producer.sessAckMode=transacted) + +producer.destName + +TEST.FOO + +The prefix of the destination name to use. To specify a queue, prefix the destination name with 'queue://', for topics, prefix the destination with 'topic://'. If no prefix is specified, a topic will be created. + +producer.destComposite + +false + +If there are more than one destination, and destComposite=true, the destinations will be merged into one. This assumes that the provider supports composite destinations. + +producer.deliveryMode + +nonpersistent + +The message delivery mode that will be used for each producer. Available values are: + +1. 'nonpersistent' - use non-persistent delivery mode. javax.jms.DeliveryMode.NON_PERSISTENT. +2. 'persistent' - use persistent delivery mode. javax.jms.DeliveryMode.PERSISTENT. + +producer.messageSize + +1024 bytes + +The size of each text message to send. + +producer.msgFileName + +null + +If you want to send a fixed message from a particular file. The file needs to be a text file. The entire content of the file will be sent as message body. Specifying a file containing the message to be sent makes the producer ignore the property producer.messageSize. Use relative or full path. Example: -Dproducer.msgFileName=../message.xml + +producer.createNewMsg + +false + +If true, each send will create a new JMS Message with the specified message size with incrementing text messages (i.e. Text Message 1, Text Message 2, ...). If false, only one message will be created before the send loop, and this message will be sent over and over again. + +producer.sendDelay + +0 ms + +Pause producer for sendDelay milliseconds after each message (allows producer throttling). + +producer.sendType + +time + +Send either time-based or message-count-based. Available values are: + +1. 'time' - keep sending messages until a specific interval of time elapses. +2. 'count' - keep sending messages until N messages has been sent. + +producer.sendCount + +1000000 msgs +(1 million) + +If sendType=count, send this number of messages. + +producer.sendDuration + +300000 ms +(5 mins) + +If sendType=time, send messages for this number of milliseconds. + +producer.header + +none + +Specify message headers to be set on all messages. Headers use name=value syntax and can be separated using ':'. More than one header can be set on a single producer.header line, e.g. producer.header="JMSType=car:MyHeader=MyValue" (no spaces). Only one producer.header line is allowed! + +### Configuration for running a JMS Consumer + +Configuration Key + +Default Value + +Description + +consumer.sessTransacted + +false + +Specifies if the session created will be transacted or not. See the JMS Specifications for more details. + +consumer.sessAckMode + +autoAck + +Specified the acknowledge mode of the session. See the JMS Specifications for more details. Available values are: + +1. 'autoAck' - Session.AUTO_ACKNOWLEDGE +2. 'clientAck' - Session.CLIENT_ACKNOWLEDGE +3. 'dupsAck' - Session.DUPS\_OK\_ACKNOWLEDGE +4. 'transacted' - Session.TRANSACTED + +consumer.commitAfterXMsgs + +1 + +Commit transaction after the specified amount of messages. Only used in conjunction with a transacted JMS Session (consumer.sessTransacted=true and consumer.sessAckMode=transacted) + +consumer.destName + +TEST.FOO + +The prefix of the destination name to use. To specify a queue, prefix the destination name with 'queue://', for topics, prefix the destination with 'topic://'. If no prefix is specified, a topic will be created. + +consumer.destComposite + +false + +If there are more than one destination, and destComposite=true, the destinations will be merged into one. This assumes that the provider supports composite destinations. + +consumer.durable + +false + +If true, create a durable subscriber, otherwise create a message consumer. See the JMS Specifications for more details. + +consumer.asyncRecv + +true + +If true, asynchronously receive messages using the onMessage() method, otherwise use the receive() method. + +consumer.recvDelay + +0 ms + +Pause consumer for recvDelay milliseconds with each message (allows consumer throttling). + +consumer.recvType + +time + +Receive either time-based or message-count-based. Available values are: + +1. 'time' - keep receiving messages until a specific time interval has elapsed. +2. 'count' - keep receiving until N messages has been received. + +consumer.recvCount + +1000000 msgs +(1 million) + +If recvType=count, receive this much messages. + +consumer.recvDuration + +300000 ms +(5 mins) + +If recvType=time, receive messages for this specific time duration. + +consumer.messageSelector + +none + +Specify [message selector](http://activemq.apache.org/selectors.html) for all consumers. E.g. consumer.messageSelector="MyHeader = 'MyValue' AND JMSType = 'car'" + +**Note**: If you have more than one consumer receiving from multiple destinations, it is a good idea to change the sysTest.destDistro to 'equal', since by default it uses 'all' and a consumer can only receive from a single destination, hence all consumers will receive from the first destination in the list only. + +### Configuration for SPI Connection Factory: org.apache.activemq.tool.spi.ActiveMQPojoSPI + +**Description:** This provides details in configuring the JMS Connection Factory created by ActiveMQPojoSPI. Default values are based from the default values of the service provider org.apache.activemq.ActiveMQConnectionFactory. + +Configuration Key + +Default Value + +Description + +factory.brokerURL + +tcp://localhost:61616 + +The url of the broker the client will connect to. + +factory.userName + +null + +Username on the connection to use. + +factory.password + +null + +Password on the connection to use. + +factory.clientID + +null + +Client ID the connection will use. If none is specified, it will be automatically generated. + +factory.asyncSend + +false + +If true, asynchronously send messages. + +factory.asyncDispatch + +false + +If true, asynchronously dispatch messages. + +factory.asyncSession + +true + +If true, session will dispatch messages asynchronously. + +factory.closeTimeout + +15000 ms + +factory.copyMsgOnSend + +true + +If true, creates a copy of the message to be sent. + +factory.disableTimestamp + +false + +If true, disable the setting of the JMSTimestamp. + +factory.deferObjSerial + +false + +If true, defer the serialization of message objects. + +factory.optimAck + +true + +If true, optimizes the acknowledgement of messages. + +factory.optimDispatch + +true + +If true, optimizes the dispatching of messages. + +factory.prefetchQueue + +1000 messages + +Number of messages a queue consumer will cache in RAM before processing it. + +factory.prefetchTopic + +32766 messages + +Number of messages a topic consumer will cache in RAM before processing it. + +factory.useCompression + +false + +If true, compress message data. + +factory.useRetroactive + +false + +If true, make consumers retroactive. + +### Configuration for SPI Connection Factory: org.apache.activemq.tool.spi.ActiveMQClassLoaderSPI + +**Description:** This provides details in configuring the JMS Connection Factory created by ActiveMQClassLoaderSPI. Default values are based from the default values of the service provider org.apache.activemq.ActiveMQConnectionFactory. + +ActiveMQClassLoaderSPI loads from the classpath "org.apache.activemq.ActiveMQConnectionFactory" and configures it using reflection. Configuration is generally based on the API of the class loaded. General format is factory.YYY or factory.XXX.YYY, where the last variable (YYY) is the property to set and everything in between is the getter of the class to use to set (YYY). For example: + +1. To set the value for asyncSend in ActiveMQConnectionFactory, use: + `factory.useAsyncSend=true`, which is equivalent to calling `factory.setUseAsyncSend(true)` + +1. To set the queue prefetch for ActiveMQConnectionFactory, use: + `factory.prefetchPolicy.queuePrefetch=1`, which is equivalent to calling `factory.getPrefetchPolicy().setQueuePrefetch(1)` + +It should be noted that the loaded class should implement the appropriate getter and setter methods. Nested objects should also be properly instantiated. For more information on configuring this SPI, refer to the specific provider API manual. + +As of ActiveMQ 4.0.1, these are the available fields and default values: + +Configuration Key + +Default Value + +factory.prefetchPolicy.optimizeDurableTopicPrefetch + +1000 + +factory.prefetchPolicy.durableTopicPrefetch + +100 + +factory.password + +null + +factory.prefetchPolicy.queueBrowserPrefetch + +500 + +factory.useCompression + +false + +factory.disableTimeStampsByDefault + +false + +factory.optimizedMessageDispatch + +true + +factory.useRetroactiveConsumer + +false + +factory.alwaysSessionAsync + +true + +factory.copyMessageOnSend + +true + +factory.prefetchPolicy.topicPrefetch + +32766 + +factory.useAsyncSend + +false + +factory.redeliveryPolicy.backOffMultiplier + +5 + +factory.prefetchPolicy.inputStreamPrefetch + +100 + +factory.closeTimeout + +15000 + +factory.userName + +null + +factory.optimizeAcknowledge + +false + +factory.clientID + +null + +factory.objectMessageSerializationDefered + +false + +factory.asyncDispatch + +false + +factory.redeliveryPolicy.initialRedeliveryDelay + +1000 + +factory.prefetchPolicy.queuePrefetch + +1000 + +factory.redeliveryPolicy.maximumRedeliveries + +5 + +factory.redeliveryPolicy.useCollisionAvoidance + +false + +factory.prefetchPolicy.maximumPendingMessageLimit + +0 + +factory.redeliveryPolicy.useExponentialBackOff + +false + +### Configuration for samplers + +There are two samplers built into the perfomance test tool. Both are configured with the same configuration keys, only prefixed with different sampler names. + +Sampler + +_samplerName_ + +Throughput Sampler + +tpSampler + +CPU Sampler + +cpuSampler + +For example, it is possible to configure the two samplers differently for a single test run, using the prefixes above as follows: + +mvn activemq-perf:producer -DtpSampler.duration=10000 -DcpuSampler.duration=15000 + +By default, both samplers are used within a test run. This however, can be overridden through the use of the `sysTest.samplers` property. + +#### Before ActiveMQ 5.11 + +Sampler configurations are not tied in to the test run, so it is possible for the sampler to run for longer than the actual test itself. For short run durations, the sampler may not even have ramped up before the test completes. + +Configuration Key + +Default Value + +Description + +_samplerName_.duration + +300000 + +The total duration (in ms) the sampler will run, including ramp up and ramp down time. + +_samplerName_.rampUpTime + +30000 + +The ramp up time of the sampler, sampling will only start after the ramp up time. + +_samplerName_.rampDownTime + +30000 + +The ramp down time of the sampler, sampling will stop when the sampler has executed for (duration - rampUpTime - rampDownTime) ms. + +_samplerName_.interval + +1000 + +The interval (in ms), the sampler will sample for data. + +#### From ActiveMQ 5.11 + +Sampler run duration is tied directly to the behavior of the client (producer/consumer). Due to the non-deterministic nature of count-based tests (where consumer.recvType or producer.sendType are set to `count`), duration, ramp up and ramp down times are ignored; the samplers are shut down when the client completes. + +Configuration Key + +Default Value + +Description + +_samplerName_.duration + +For time-based tests, matches the consumer or producer duration. + +_Ignored for count-based tests._ + +The total duration (in ms) the sampler will run, including ramp up and ramp down time. + +_samplerName_.rampUpTime + +null; defers to rampUpPercent. + +_Ignored for count-based tests._ + +The ramp up time of the sampler, sampling will only start after the ramp up time. + +_samplerName_.rampDownTime + +null; defers to rampDownPercent. + +_Ignored for count-based tests._ + +The ramp down time of the sampler, sampling will stop when the sampler has executed for (duration - rampUpTime - rampDownTime) ms. + +_samplerName_.rampUpPercent + +0 + +_Ignored for count-based tests._ + +The percentage of the overall run duration that the sampler should use to ramp up (0-100). Overridden by rampUpTime. + +_samplerName_.rampDownPercent + +0 + +_Ignored for count-based tests._ + +The percentage of the overall run duration that the sampler should use to ramp down (0-99). Overridden by rampDownTime. + +_samplerName_.interval + +1000 + +The interval (in ms), the sampler will sample for data. + +The time taken to ramp up and ramp down, whether defined through milliseconds or as a percentage cannot exceed the total duration. + diff --git a/activemq-pmc-templates.md b/activemq-pmc-templates.md new file mode 100644 index 0000000..9bb250a --- /dev/null +++ b/activemq-pmc-templates.md @@ -0,0 +1,184 @@ +Apache ActiveMQ ™ -- ActiveMQ PMC Templates + +[Community](community.html) > [ActiveMQ PMC Templates](activemq-pmc-templates.html) + + +The following templates are for use by the ActiveMQ PMC: + +/**/ + +* [Committer Discussion](#ActiveMQPMCTemplates-CommitterDiscussion) +* [Committer Vote](#ActiveMQPMCTemplates-CommitterVote) +* [Committer Vote Result](#ActiveMQPMCTemplates-CommitterVoteResult) +* [Committer Invitation](#ActiveMQPMCTemplates-CommitterInvitation) +* [Committer Announcement](#ActiveMQPMCTemplates-CommitterAnnouncement) +* [Commiter Onboarding](#ActiveMQPMCTemplates-CommiterOnboarding) +* [PMC Discussion](#ActiveMQPMCTemplates-PMCDiscussion) +* [PMC Vote](#ActiveMQPMCTemplates-PMCVote) +* [PMC Invite](#ActiveMQPMCTemplates-PMCInvite) + +Committer Discussion +==================== + +To: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: \[DISCUSS\] Invite to become an ActiveMQ committer + +Considering ’s contributions to the ActiveMQ project... + +Based on this person's contributions above, I think we should invite to become a committer. + +Please remember that this is not a vote for this person to become a committer, at this point it is only a discussion. + +Committer Vote +============== + +To: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: \[VOTE\] Offer to become an ActiveMQ committer + +After positive discussion about ’s contributions to the project, I would like to initiate a formal vote. + +Considering as raised in the discussion thread... + +This vote will follow the ASF process for committer votes and consensus approval (at least three binding +1 votes and no vetoes)The vote will be open for 72 hours. + +\[ \] +1 Accept as a committer of Apache ActiveMQ +\[ \] +0 +\[ \] -1 Do not accept at this time because... + +Committer Vote Result +===================== + +To: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: \[RESULT\]\[VOTE\] Offer to become an ActiveMQ committer. + +This vote has been open for days and is now closed with the following results: + +\* Number of +1s +\* Number of 0s +\* Number of -1s + +The vote . + +Committer Invitation +==================== + +To: +Cc: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: Invitation to become Apache Active committer + +Hello , + +The Apache ActiveMQ Project Management Committee (PMC) hereby offers you committer privileges to the project. These privileges are offered on the understanding that you'll use them reasonably and with common sense. We like to work on trust rather than unnecessary constraints. + +Being a committer enables you to more easily make changes without needing to go through the patch submission process. Although you will be granted commit access to project repositories, you will be expected to adhere to project best practices when committing. The following URL some good resources regarding expectations and processes: + +[http://www.apache.org/dev/new-committers-guide.html](http://www.apache.org/dev/new-committers-guide.html) + +This is a personal invitation for you to accept or decline in private. Please reply to the [private@activemq.apache.org](mailto:private@activemq.apache.org) address only. + +If you accept the invitation, the next step is to register an Individual Contributor License Agreement (ICLA) with the Apache Software Foundation if you have not already. Details of the ICLA and the forma can be found at the following URL: + +[http://www.apache.org/licenses/#clas](http://www.apache.org/licenses/#clas) + +The form provides instructions for its completion and submittal to the Secretary of the ASF. + +When you submit the completed ICLA, please request to notify the Apache ActiveMQ project upon official receipt.Once your ICLA has been acknowledged by the Secretary, you will need to choose a unique ASF ID. You can check to see if your preferred id is already taken by browsing the following list of ASF committers: + +[http://people.apache.org/committer-index.html](http://people.apache.org/committer-index.html) + +When your ICLA is recognized by the Secretary, you will receive a follow-up message with the next steps for establishing you as a committer. + +We look forward to your response! + +**IMPORTANT** + +Once the prospective committer has accepted the invitation and the ICLA has been acknowledged (check the following URL to be sure it has been submitted: [https://people.apache.org/unlistedclas.html](https://people.apache.org/unlistedclas.html)), locate the vote result thread permalink from the private@activemq list can be found using: [https://mail-search.apache.org/](https://mail-search.apache.org/) or [https://lists.apache.org/](https://lists.apache.org/) (authentication required). + +Upon locating the permalink, use the account request form to request the new ASF user id: [https://id.apache.org/acreq/pmc-chairs](https://id.apache.org/acreq/pmc-chairs)  If the name isn't in the list be sure to click the link on the bottom right. + +Committer Announcement +====================== + +To: [dev@activemq.apache.org](mailto:dev@activemq.apache.org) +Subject: \[ANNOUNCE\] New Apache ActiveMQ Committer + +On behalf of the Apache ActiveMQ PMC, I am very pleased to announce that has accepted an invitation to become a committer. We greatly appreciate all of 's hard work and generous contributions to the project. We look forward to continued involvement in the project. + +Welcome and congratulations! + +Commiter Onboarding +=================== + +To: [private@acctivemq.apache.org](mailto:private@acctivemq.apache.org), +Subject: \[committer\]: What to do now that you're a committer? + +, the ASF Infrastructure has set up your user account as the ''. + +To learn more about how the ASF works, please visit the following URL and read the items in the 'Committers and Contributors' section: + +[https://www.apache.org/dev/#committers](https://www.apache.org/dev/#committers) + +It is especially important to read through the New Committers Guide at the following URL: + +[https://www.apache.org/dev/new-committers-guide.html](https://www.apache.org/dev/new-committers-guide.html) + +Please ensure that you subscribed to the Apache ActiveMQ Developers mailing list [dev@activemq.apache.org](mailto:dev@activemq.apache.org). We also recommend subscribing to the users@ and commits@ mailing lists at [users@activemq.apache.org](mailto:users@activemq.apache.org) and [commits@activemq.apache.org](mailto:commits@activemq.apache.org). Please see the following page for more info about the mailing lists: + +[http://activemq.apache.org/mailing-lists.html](http://activemq.apache.org/mailing-lists.html) + +To push commits, ensure that you use HTTPS or SSH in your git remotes, or if you've been pulling from a mirror like Github, you'll need to add a remote such as: + + +$ git remote add apache [https://git-wip-us.apache.org/repos/asf/activemq.git](https://git-wip-us.apache.org/repos/asf/activemq.git) + + +If you have any questions please ask on the dev@activemq list. + +PMC Discussion +============== + +To: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: \[DISCUSS\] Invite to join ActiveMQ PMC + +Considering ’s contributions to the ActiveMQ project as a committer... + + + +Based on this person's contributions above, I think we should invite to become a committer. + +Please remember that this is not a vote for this person to become a committer, at this point it is only a discussion. + +PMC Vote +======== + +To: [private@activemq.apache.org](mailto:private@activemq.apache.org) +Subject: \[VOTE\] Offer Apache ActiveMQ PMC Membership to + +After positive discussion considering ’s contributions as a committer, I would like to initiate a formal vote. + + + +This vote will follow the ASF process for committer votes and consensus approval (at least three binding +1 votes and no vetoes) + +The vote will be open for 72 hours. + +\[ \] +1 Accept as a PMC member of Apache ActiveMQ +\[ \] +0 +\[ \] -1 Do not accept at this time because... + +PMC Invite +========== + +To: +Cc: [private@activemq.apache.org](mailto:private@activemq.apache.org) +Subject: Invitation to join the Apache ActiveMQ Project Management Committee + +, +In recognition of your continued contributions to the project, the Apache ActiveMQ PMC has voted to offer you membership to the PMC. I am writing on behalf of the PMC to give you the opportunity to either accept or reject this offer by replying to [private@activemq.apache.org](mailto:private@activemq.apache.org). + +In making your decision, please see the following URL for more information on PMCs: + +[https://www.apache.org/dev/pmc.html](https://www.apache.org/dev/pmc.html) + +If you have questions before making a decision, please let us know. + diff --git a/activemq-real-time.md b/activemq-real-time.md new file mode 100644 index 0000000..643fd3e --- /dev/null +++ b/activemq-real-time.md @@ -0,0 +1,54 @@ +Apache ActiveMQ ™ -- ActiveMQ Real Time + +[Features](features.html) > [ActiveMQ Real Time](activemq-real-time.html) + + +ActiveMQ Real Time is a sub-project of the popular Apache ActiveMQ messaging system but is designed specifically to meet the needs for low latency high throughput collaborative real-time applications. + +It is designed to be used by multiple languages on multiple platforms - and has three main goals: + +1. Low latency pluggable reliable multicast - with different qualities of service. The complexities of group communication means that different reliable multicast protocols must be used to meet the needs of real-time application collaboration. ActiveBlaze supports pluggable protocols, which will include: + * NACK-based reliable protocols + * Totem protocol + * Forward Error correction +2. Active Group membership management to allow true point-to-point communication and group messaging +3. Cluster management for shared state, fault tolerance, reliability and availability. + +The need for low latency means that the JMS (Java Message Service) API is not always a suitable fit and ActiveBlaze comes with its own bespoke API's to accomplish very high throughput. It is a goal of the project to provide an optional JMS API layer on top of core ActiveBlaze API's to enable it to be a drop in replacement for more traditional hub and spoke messaging deployments. + +To enable cross-language support ,enable versioning of the wire format, and aid fast throughput - Apache ActiveBlaze is built on top of the Google's protobuf - a framework for efficiently encoding extensible data structures. + +low latency reliable multicast +------------------------------ + +Group membership +---------------- + +Support for dynamic joining and leaving of groups, membership notifications and true point to point and queue messaging: + +* Dynamic membership information +* broadcast messaging +* point-to-point +* in boxes +* configurable heartbeats + +Cluster management +------------------ + +A distributed state map, with the following: + +* Distributed state (Map) +* Map change listeners +* write locks +* lock expiration +* optional state and lock removal when a member leaves +* automatic state and lock replication and failover + +In more detail ... +------------------ + +* [Broadcasting](broadcasting.html) +* [Group Membership](group-membership.html) +* [Life Cycle](life-cycle.html) +* [The ActiveBlaze Message type](the-activeblaze-message-type.html) + diff --git a/activemq-retroactive-consumers.md b/activemq-retroactive-consumers.md new file mode 100644 index 0000000..caa8a24 --- /dev/null +++ b/activemq-retroactive-consumers.md @@ -0,0 +1,32 @@ +Apache ActiveMQ ™ -- ActiveMQ Retroactive Consumers + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Consumer Features](activemq-consumer-features.html) > [ActiveMQ Retroactive Consumers](activemq-retroactive-consumers.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Background +---------- + +A retroactive consumer is just a regular NMS consumer who indicates that at the start of a subscription every attempt should be used to go back in time and send any old messages (or the last message sent on that topic) that the consumer may have missed. + +See the [Subscription Recovery Policy](../subscription-recovery-policy.html) for more detail. + +### Example + +You mark a Consumer as being retroactive as follows: + +var topic = session.GetTopic("TEST.Topic?consumer.retroactive=true"); +var consumer = session.CreateConsumer(topic); + +Limitations +----------- + +Retroactive consumer will not consistently work when used across a network of brokers. + +In the case of topics, when we connect broker A to broker B, broker B will send broker A all the subscriptions that it has received. Since Broker A replicates messages to each subscription, and we want to avoid receiving duplicates at broker B, we can't send broker A more than 1 subscription for the same topic. So our network bridges keep track of the subscriptions sent across and only send the first subscription to a topic. Subsequent subscriptions increment the reference count of the subscription, but the subscription is not actually sent. + +This in essence is the problem. If the first subscription to a topic is not retroactive, it is sent B to A, and the B broker will not get the retroactive messages. Then subsequent subscriptions could be (retroactive), but it will not cause retroactive message to sent from broker A to broker B since the subsequent subscription will not be sent to broker A. + + diff --git a/activemq-uri-configuration.md b/activemq-uri-configuration.md new file mode 100644 index 0000000..62d791c --- /dev/null +++ b/activemq-uri-configuration.md @@ -0,0 +1,406 @@ +Apache ActiveMQ ™ -- ActiveMQ URI Configuration + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ URI Configuration](activemq-uri-configuration.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Configuring NMS.ActiveMQ +------------------------ + +All configuration is achieved via URI-encoded parameters, either on the connection or destinations. Through the URIs, you can configure virtually every facet of your NMS.ActiveMQ client. The tables below show the comprehensive set of parameters. + +### **Connection URI Parameters** + +#####  Example Configuration + +Using the Generic NMSConnectionFactory class would look as follows: + +var cf = new NMSConnectionFactory( + "activemq:tcp://localhost:61616?wireFormat.tightEncodingEnabled=true"); + +You can also use the ActiveMQ ConecctionFactory implementation directory: + +var cf = new Apache.NMS.ActiveMQ.ConnectionFactory( + "tcp://localhost:61616?wireFormat.tightEncodingEnabled=true"); + +### Protocol Options + +Option Name + +Description + +tcp + +Uses TCP/IP Sockets to connect to the Broker. + +ssl + +Uses TCP/IP Sockets to connect to the Broker with an added SSL layer. + +discovery + +Uses The Discovery Transport to find a Broker + +failover + +Uses the Failover Transport to connect and reconnect to one or more Brokers + +#### **Transport Options** + +##### **TCP Transport Options** + +Option Name + +Default + +Description + +transport.useLogging + +false + +Log data that is sent across the Transport. + +transport.receiveBufferSize + +8192 + +Amount of Data to buffer from the Socket + +transport.sendBufferSize + +8192 + +Amount of Data to buffer before writing to the Socket + +transport.receiveTimeout + +0 + +Time to wait for more data, zero means wait infinitely + +transport.sendTimeout + +0 + +Timeout on sends, 0 means wait forever for completion + +transport.requestTimeout + +0 + +Time to wait before a Request Command is considered to have failed + +##### Discovery Transport Options + +##### Failover Transport Options + +Prior to NMS.ActiveMQ v1.4.0 the failover transport options did not use the transport.* prefix. + +Option Name + +Default + +Description + +transport.timeout + +-1 + +Time that a send operation blocks before failing. + +transport.initialReconnectDelay + +10 + +Time in Milliseconds that the transport waits before attempting to reconnect the first time. + +transport.maxReconnectDelay + +30000 + +The max time in Milliseconds that the transport will wait before attempting to reconnect. + +transport.backOffMultiplier + +2 + +The amount by which the reconnect delay will be multiplied by if useExponentialBackOff is enabled. + +transport.useExponentialBackOff + +true + +Should the delay between connection attempt grow on each try up to the max reconnect delay. + +transport.randomize + +true + +Should the Uri to connect to be chosen at random from the list of available Uris. + +transport.maxReconnectAttempts + +0 + +Maximum number of time the transport will attempt to reconnect before failing (0 means infinite retries) + +transport.startupMaxReconnectAttempts + +0 + +Maximum number of time the transport will attempt to reconnect before failing when there has never been a connection made. (0 means infinite retries) **(included in NMS.ActiveMQ v1.5.0+)** + +transport.reconnectDelay + +10 + +The delay in milliseconds that the transport waits before attempting a reconnection. + +transport.backup + +false + +Should the Failover transport maintain hot backups. + +transport.backupPoolSize + +1 + +If enabled, how many hot backup connections are made. + +transport.trackMessages + +false + +keep a cache of in-flight messages that will flushed to a broker on reconnect + +transport.maxCacheSize + +256 + +Number of messages that are cached if trackMessages is enabled. + +transport.updateURIsSupported + +true + +Update the list of known brokers based on BrokerInfo messages sent to the client. + +#### **Connection Options** + +Connection options can either be set via the connection.* prefix or the nms.* prefix similar to the java client's jms.* prefix settings. + +Option Name + +Default + +Description + +connection.AsyncSend + +false + +Are message sent Asynchronously. + +connection.AsyncClose + +true + +Should the close command be sent Asynchronously + +connection.AlwaysSyncSend + +false + +Causes all messages a Producer sends to be sent Asynchronously. + +connection.CopyMessageOnSend + +true + +Copies the Message objects a Producer sends so that the client can reuse Message objects without affecting an in-flight message. + +connection.ProducerWindowSize + +0 + +The ProducerWindowSize is the maximum number of bytes in memory that a producer will transmit to a broker before waiting for acknowledgement messages from the broker that it has accepted the previously sent messages. In other words, this how you configure the producer flow control window that is used for async sends where the client is responsible for managing memory usage. The default value of 0 means no flow control at the client. See also [Producer Flow Control](http://activemq.apache.org/producer-flow-control.html) + +connection.useCompression + +false + +Should message bodies be compressed before being sent. + +connection.sendAcksAsync + +false + +Should message acks be sent asynchronously + +connection.messagePrioritySupported + +true + +Should messages be delivered to the client based on the value of the Message Priority header. + +connection.dispatchAsync + +false + +Should the broker [dispatch messages asynchronously](http://activemq.apache.org/consumer-dispatch-async.html) to the connection's consumers. + +connection.watchTopicAdvisories + +true + +Should the client watch for advisory messages from the broker to track the creation and deletion of temporary destinations. + +##### **OpenWire Options** + +Option Name + +Default + +Description + +wireFormat.stackTraceEnabled + +false + +Should the stack trace of exception that occur on the broker be sent to the client? Only used by openwire protocol. + +wireFormat.cacheEnabled + +false + +Should commonly repeated values be cached so that less marshalling occurs? Only used by openwire protocol. + +wireFormat.tcpNoDelayEnabled + +false + +Does not affect the wire format, but provides a hint to the peer that TCP nodelay should be enabled on the communications Socket. Only used by openwire protocol. + +wireFormat.sizePrefixDisabled + +false + +Should serialized messages include a payload length prefix? Only used by openwire protocol. + +wireFormat.tightEncodingEnabled + +false + +Should wire size be optimized over CPU usage? Only used by the openwire protocol. + +wireFormat.maxInactivityDuration + +30000 + +The maximum inactivity duration (before which the socket is considered dead) in milliseconds. On some platforms it can take a long time for a socket to appear to die, so we allow the broker to kill connections if they are inactive for a period of time. Use by some transports to enable a keep alive heart beat feature. Set to a value <= 0 to disable inactivity monitoring. + +maxInactivityDurationInitalDelay + +10000 + +The initial delay in starting the maximum inactivity checks (and, yes, the word 'Inital' is supposed to be misspelled like that) + +### **Destination URI Parameters** + +##### Example Configuration + +d = session.CreateTopic("com.foo?consumer.prefetchSize=2000&consumer.noLocal=true"); + +#### **General Options** + +Option Name + +Default + +Description + +consumer.prefetchSize + +1000 + +The number of message the consumer will [prefetch](http://activemq.apache.org/what-is-the-prefetch-limit-for.html).  **Removed in v1.7.0 use connection prefetch policy instead.** + +consumer.maximumPendingMessageLimit + +0 + +Use to control if messages are dropped if a [slow consumer](http://activemq.apache.org/slow-consumer-handling.html) situation exists. + +consumer.noLocal + +false + +Same as the noLocal flag on a Topic consumer. Exposed here so that it can be used with a queue. + +consumer.dispatchAsync + +false + +Should the broker [dispatch messages asynchronously](http://activemq.apache.org/consumer-dispatch-async.html) to the consumer. + +consumer.retroactive + +false + +Is this a [Retroactive Consumer](http://activemq.apache.org/retroactive-consumer.html). + +consumer.selector + +null + +JMS Selector used with the consumer. + +consumer.exclusive + +false + +Is this an [Exclusive Consumer](http://activemq.apache.org/exclusive-consumer.html). + +consumer.priority + +0 + +Allows you to configure a [Consumer Priority](http://activemq.apache.org/consumer-priority.html). + +#### **OpenWire-only Options** + +Option Name + +Default + +Description + +consumer.browser + +false + +consumer.networkSubscription + +false + +consumer.optimizedAcknowledge + +false + +Enables an optimised acknowledgement mode where messages are acknowledged in batches rather than individually. Alternatively, you could use Session.DUPS\_OK\_ACKNOWLEDGE acknowledgement mode for the consumers which can often be faster. **WARNING** enabling this issue could cause some issues with auto-acknowledgement on reconnection + +consumer.noRangeAcks + +false + +consumer.retroactive + +false + +Sets whether or not retroactive consumers are enabled. Retroactive consumers allow non-durable topic subscribers to receive old messages that were published before the non-durable subscriber started. + + diff --git a/activemq-virtual-destinations.md b/activemq-virtual-destinations.md new file mode 100644 index 0000000..6c6a8f6 --- /dev/null +++ b/activemq-virtual-destinations.md @@ -0,0 +1,153 @@ +Apache ActiveMQ ™ -- ActiveMQ Virtual Destinations + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Destination Features](activemq-destination-features.html) > [ActiveMQ Virtual Destinations](activemq-virtual-destinations.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +_Virtual Destinations_ allow us to create logical destinations that clients can use to produce and consume from but which map onto one or more _physical destinations_. It allows us to provide more flexible loosely coupled messaging configurations. + +Virtual Topics +-------------- + +The idea behind _publish subscribe_ is a great one. Allow producers to be decoupled from consumers so that they do not even know how many consumers are interested in the messages they publish. The JMS specification defines support for durable topics however they have limitations as we will describe... + +### The limitations of JMS durable topics + +A JMS durable subscriber MessageConsumer is created with a unique JMS clientID and durable subscriber name. To be JMS compliant only one JMS connection can be active at any point in time for one JMS clientID, and only one consumer can be active for a clientID and subscriber name. i.e., only **one** thread can be actively consuming from a given logical topic subscriber. This means we cannot implement + +* load balancing of messages. +* fast failover of the subscriber if that one process running that one consumer thread dies. + +Now _queue_ semantics in JMS offer the ability to load balance work across a number of consumers in a reliable way - allowing many threads, processes and machines to be used to process messages. Then we have sophisticated sticky load balancing techniques like [Message Groups](../message-groups.html) to load balance and parallelise work while maintaining ordering. + +Another added benefit of having physical queues for each logical topic subscriber is we can them monitor the queue depths via [JMX](../jmx.html) to monitor system performance together with being able to browse these physical queues. + +### Virtual Topics to the rescue + +The idea behind virtual topics is that producers send to a topic in the usual JMS way. Consumers can continue to use the Topic semantics in the JMS specification. However if the topic is virtual, consumer can consume from a physical queue for a logical topic subscription, allowing many consumers to be running on many machines & threads to load balance the load. + +E.g., let's say we have a topic called **VirtualTopic.Orders**. (Where the prefix VirtualTopic. indicates its a virtual topic). And we logically want to send orders to systems A and B. Now with regular durable topics we'd create a JMS consumer for clientID\_A and "A" along with clientID\_B and "B". + +With virtual topics we can just go right ahead and consume to queue **Consumer.A.VirtualTopic.Orders** to be a consumer for system A or consume to **Consumer.B.VirtualTopic.Orders** to be a consumer for system B. + +We can now have a pool of consumers for each system which then compete for messages for systems A or B such that all the messages for system A are processed exactly once and similarly for system B. + +### Customizing the out-of-the-box defaults + +The out-of-the-box defaults are described above. Namely that the only virtual topics available must be within the **VirtualTopic.>** namespace and that the consumer queues are named **Consumer.*.VirtualTopic.>**. + +You can configure this to use whatever naming convention you wish. The following [example](https://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/broker/virtual/global-virtual-topics.xml) shows how to make all topics virtual topics. The example below is using the name **>** to indicate 'match all topics'. You could use this wildcard to apply different virtual topic policies in different hierarchies. + + + + + + + + + +Note that making a topic virtual does add a small CPU overhead when sending messages to the topic but it is fairly small. + +Option + +Default + +Description + +selectorAware + +false + +only messages that match one of the existing subscribers are actually dispatched. Using this option prevents the build up of unmatched messages when selectors are used by exclusive consumers + +local + +false + +when true, don't fan out messages that were received over a network + +concurrentSend + +false + +when true, use an executor to fanout such that sends occur in parallel. This allows the journal to batch writes which will reduce disk io (5.12) + +transactedSend + +false + +when true, use a transaction for fanout sends such that there is a single disk sync. A local broker transaction will be created if there is no client transaction (5.13) + +Composite Destinations +---------------------- + +Composite Destinations allow for one-to-many relationships on individual destinations; the main use case is for _composite queues_. For example when a message is sent to queue A you may want to forward it also to queues B and C and topic D. Composite destinations are then a mapping from a virtual destination to a collection of other physical destinations. In this case the mapping is broker side and the client is unaware of the mapping between the destinations. This is different from client side [Composite Destinations](../composite-destinations.html) where the client uses a URL notation to specify the actual physical destinations that a message must be sent to. + +The following [example](http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/broker/virtual/composite-queue.xml) shows how to set up a **** element in the XML configuration so that when a message is sent to `MY.QUEUE` then it is really forwarded to the physical queue `FOO` and the topic `BAR`. + + + + + + + + + + + + + + +By default, subscribers cannot consume messages directly from a composite queue or topic - it is a logical construct only. Given the configuration above, subscribers can only consume messages from `FOO` and `BAR`; but not `MY.QUEUE`. + +This behaviour can be altered to implement use cases such as watching a queue by sending the same messages to a notification topic (wire tapping), by setting the optionally set `forwardOnly` attribute to false. + + + + + + + +Messages sent to `IncomingOrders` will all be copied and forwarded to `Notifications`, before being placed on the physical `IncomingOrders` queue for consumption by subscribers. + +Where the `forwardOnly` attribute is not defined or is set to `true`, there is no logical difference between a `compositeQueue` and a `compositeTopic` \- they can be used interchangeably. It is only when a composite destination is made physical through the use of `forwardOnly` that the choice of `compositeTopic`/`compositeQueue` has an impact on behavior. + +### Using filtered destinations + +From Apache ActiveMQ **4.2** onwards you can now use selectors to define virtual destinations. + +You may wish to create a virtual destination which forwards messages to multiple destinations but applying a selector first to decide if the message really does have to go to a particular destination. + +The following example shows how a message sent to the virtual destination **MY.QUEUE** will be forwarded to **FOO** and **BAR** if the selectors match + + + + + + + + + + + + + + +Avoiding Duplicate Message in a Network of Brokers +-------------------------------------------------- + +You have to make sure that the messages sent to the **Consumer.*.VirtualTopic.>** destination are not forwarded when you're using both queue-based and non-queue based subscribers to the virtual topic (that is, if you have normal topic subscribers to the virtual topic). If you use Virtual Topics in a network of brokers, it is likely you will get duplicate messages if you use the default network configuration. This is because a network node will not only forward message sent to the virtual topic, but also the associated physical queues. To fix this, you should disable forwarding messages on the associated physical queues. + +Here is an example of how to do that: + + + + + + + + + + diff --git a/activemq-wildcards.md b/activemq-wildcards.md new file mode 100644 index 0000000..e7458f9 --- /dev/null +++ b/activemq-wildcards.md @@ -0,0 +1,71 @@ +Apache ActiveMQ ™ -- ActiveMQ Wildcards + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Advanced Features](activemq-advanced-features.html) > [ActiveMQ Destination Features](activemq-destination-features.html) > [ActiveMQ Wildcards](activemq-wildcards.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +We support destination wildcards to provide easy support for federated name hierarchies. This concept has been popular in financial market data for some time as a way of organizing events (such as price changes) into hierarchies and to use wildcards for easy subscription of the range of information you're interested in. + +For example imagine you are sending price messages from a stock exchange feed. You might use some kind of destination such as + +* `PRICE.STOCK.NASDAQ.ORCL` to publish Oracle Corporation's price on NASDAQ and +* `PRICE.STOCK.NYSE.IBM` to publish IBM's price on the New York Stock Exchange + +A subscriber could then use exact destinations to subscribe to exactly the prices it requires. Or it could use wildcards to define hierarchical pattern matches to the destinations to subscribe from. + +### Wildcards supported + +We support the following wildcards which are fairly standard practice; wildcards are not part of the JMS specification so are custom enhancements. + +* `.` is used to separate names in a path +* `*` is used to match any name in a path +* `>` is used to recursively match any destination starting from this name + +For example using the example above, these subscriptions are possible + +Subscription + +Meaning + +`PRICE.>` + +Any price for any product on any exchange + +`PRICE.STOCK.>` + +Any price for a stock on any exchange + +`PRICE.STOCK.NASDAQ.*` + +Any stock price on NASDAQ + +`PRICE.STOCK.*.IBM` + +Any IBM stock price on any exchange + +**Note:** Don't specify any string after '>' on your wildcard expression, it will be ignored. E.g. using a wildcard `PRICE.>.IBM` will also match `PRICE.STOCK.NASDAQ.FB.` Using '>' really matches everything till the end of the destination name. + +### Custom path separator + +As of version 5.5.0 we support [plugin](http://activemq.apache.org/interceptors.html) that allows clients to use customer path separator. So instead of + +`FOO.BAR.*` + +you can use + +`FOO/BAR/*` + +To + + + ..... + + + +Please note that you should add this plugin as last if you want it to work properly with other plugins (such as [security](http://activemq.apache.org/security.html) for example). + +A default path separator this plugin will use is `/`. You can customize it further using `pathSeparator` property. + + diff --git a/activemq6.md b/activemq6.md new file mode 100644 index 0000000..31ea992 --- /dev/null +++ b/activemq6.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- ActiveMQ6 + +[ActiveMQ6](activemq6.html) + + +ActiveMQ6 is next Generation ActiveMQ. + diff --git a/activemqdtd.md b/activemqdtd.md new file mode 100644 index 0000000..d6bf4cf --- /dev/null +++ b/activemqdtd.md @@ -0,0 +1,176 @@ +Apache ActiveMQ ™ -- activemq.dtd + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [activemq.dtd](activemqdtd.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +We support a custom [Xml Configuration](xml-configuration.html "Xml Configuration") mechanism for configuring a Message Broker instance. + +To provide tools and IDEs with an easy way of editing the XML as well as providing some handy documentation, we provide our own [activemq.dtd](http://svn.activemq.org/trunk/activemq/modules/core/src/conf/org/activemq/activemq.dtd?view=markup) file which describes all of the various configuration options available. + +Even though we're using a DTD we still support custom extension of the XML via the Spring __ and __ tags. + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/activesoap.md b/activesoap.md new file mode 100644 index 0000000..3455e3b --- /dev/null +++ b/activesoap.md @@ -0,0 +1,204 @@ +Apache ActiveMQ ™ -- ActiveSoap + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [ActiveSoap](activesoap.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +The idea is to provide a really simple & lightweight SOAP stack which can be extended & connected to any transport and binding technology. + +### Pluggable transports + +With ActiveMQ we've got most common transports covered (TCP, SSL, UDP, multicast, JGroups, JRMS, JXTA, NIO, AIO, Discovery (Zeroconf/ ActiveCluster), reliable transports etc). + +Future protocols could be SOAP-over-TCP, SOAP-over-Jabber, FTP / SMTP / file polling etc. + +However we should support any kind of transport using any kind of library - since mostly all a transport does is expose a 'packet' which is just a blob of bytes, a String or a stream. + +### Marshalling layers + +If we then pass data from the transports into a pluggable connector layer which could consist of either + +* XMLBeans direct +* JAXB +* StAX, SAX, DOM, Source (TrAX processing) +* JAX-RCP endpoints & Axis handlers +* XStream etc +* custom parsing / marshalling tools + +Then we can make a highly scalable & performing SOAP stack using any marshalling code required - without having to pay the DOM price. + +### Custom endpoints + +There are various possible ultimate endpoints, from Axis stuff to POJOs to JWS and the like - these should all drop into one of the marshalling technologies - use the most efficient one for the endpoint technology you wish. + +Issues +------ + +* we need a simple way to write reuable header processors. I suspect writing StAX based ones is gonna be the best way forwards as it makes writing header-based pipeline processors the easiest. But we should make this pluggable. + +* is XMLBeans definitely the fastest stack we can use? XStream is pretty fast though its java centric rather than XSD centric (but maybe thats a good thing ![](https://cwiki.apache.org/confluence/images/icons/emoticons/smile.gif) + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/activespace.md b/activespace.md new file mode 100644 index 0000000..bc5794b --- /dev/null +++ b/activespace.md @@ -0,0 +1,172 @@ +Apache ActiveMQ ™ -- ActiveSpace + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [ActiveSpace](activespace.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +**Note** that the ActiveSpace documentation has now has moved [to its own wiki](http://docs.codehaus.org/display/AS/Home) + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/advisory-message.md b/advisory-message.md new file mode 100644 index 0000000..03c0e90 --- /dev/null +++ b/advisory-message.md @@ -0,0 +1,543 @@ +Apache ActiveMQ ™ -- Advisory Message + +[Features](features.html) > [Message Features](message-features.html) > [Advisory Message](advisory-message.html) + + +ActiveMQ supports advisory messages which allows you to watch the system using regular JMS messages. Currently we have advisory messages that support: + +* consumers, producers and connections starting and stopping +* temporary destinations being created and destroyed +* messages expiring on topics and queues +* brokers sending messages to destinations with no consumers. +* connections starting and stopping + +Advisory messages can be thought as some kind of administrative channel where you receive information regarding what is happening on your JMS provider along with what's happening with producers, consumers and destinations. When you look at a broker via [JMX](jmx.html) you will see the advisory topics prefixed with **`ActiveMQ.Advisory.`**. + +Every Advisory has the message **type** 'Advisory' and some predefined message properties: + +Property + +Type + +Description + +Version + +`originBrokerId` + +`StringProperty` + +The id of the broker where the advisory originated. + +5.x + +`originBrokerName` + +`StringProperty` + +The name of the broker where the advisory originated. + +5.x + +`originBrokerURL` + +`StringProperty` + +The first URL of the broker where the advisory originated. + +5.2 + +In addition, some messages carry a **`Command`** object, which carries additional information about the nature of the advisory, e.g., a subscription to each of the destination returns an **`ActiveMQMessage`**. Specific **`DataStructure`** objects, e.g.,. **`ConsumerInfo`, `ProducerInfo`**, **`ConnectionInfo`** can be retrieved using **`ActiveMQMessage.getDataStructure()`**. + +For example: + +Destination advisoryDestination = AdvisorySupport.getProducerAdvisoryTopic(destination) +MessageConsumer consumer = session.createConsumer(advisoryDestination); +consumer.setMessageListener(this); + +public void onMessage(Message msg){ + if(msg instanceof ActiveMQMessage) { + try { + ActiveMQMessage aMsg = (ActiveMQMessage)msg; + ProducerInfo prod = (ProducerInfo) aMsg.getDataStructure(); + } + catch(JMSException e) { + log.error("Failed to process message: " + msg); + } + } +} + +The following advisory topics are supported +------------------------------------------- + +### Client based advisories + +Tip + +These are always generated. + +Advisory Topics + +Description + +Properties + +Data Structure + +`ActiveMQ.Advisory.Connection` + +Connection start & stop messages. + +  + +`ConnectionInfo`, `RemoveInfo` + +`ActiveMQ.Advisory.Producer.Queue` + +Producer start & stop messages on a Queue. + +`String='producerCount'` \- the number of producers + +`ProducerInfo` + +`ActiveMQ.Advisory.Producer.Topic` + +Producer start & stop messages on a Topic. + +`String='producerCount'` \- the number of producers + +`ProducerInfo` + +`ActiveMQ.Advisory.Consumer.Queue` + +Consumer start & stop messages on a Queue. + +`String='consumerCount'` \- the number of Consumers + +`ConnectionInfo`, `RemoveInfo` + +`ActiveMQ.Advisory.Consumer.Topic` + +Consumer start & stop messages on a Topic. + +`String='consumerCount'` \- the number of Consumers + +`ConnectionInfo`, `RemoveInfo` + +Note that the consumer start/stop advisory messages also have a **`consumerCount`** header to indicate the number of active consumers on the destination when the advisory message was sent. This means you can use the following selector to be notified when there are no active consumers on a given destination: + +consumerCount = 0 + +### Destination and Message based advisories + +Advisory Topics + +Description + +Properties + +Data Structure + +Default + +PolicyEntry Property + +`ActiveMQ.Advisory.Queue` + +Queue create & destroy. + +`null` + +`DestinationInfo` + +`true` + +`none` + +`ActiveMQ.Advisory.Topic` + +Topic create & destroy. + +`null` + +`DestinationInfo` + +`true` + +`none` + +`ActiveMQ.Advisory.TempQueue` + +Temporary Queue create & destroy. + +`null` + +`DestinationInfo` + +`true` + +`none` + +`ActiveMQ.Advisory.TempTopic` + +Temporary Topic create & destroy. + +`null` + +`DestinationInfo` + +`true` + +`none` + +`ActiveMQ.Advisory.Expired.Queue` + +Expired messages on a Queue. + +`String='orignalMessageId'` \- the expired id + +`Message` + +`true` + +`none` + +`ActiveMQ.Advisory.Expired.Topic` + +Expired messages on a Topic. + +`String='orignalMessageId'` \- the expired id + +`Message` + +`true` + +`none` + +`ActiveMQ.Advisory.NoConsumer.Queue` + +No consumer is available to process messages being sent on a Queue. + +`null` + +`Message` + +`false` + +`sendAdvisoryIfNoConsumers` + +`ActiveMQ.Advisory.NoConsumer.Topic` + +No consumer is available to process messages being sent on a Topic. + +`null` + +`Message` + +`false` + +`sendAdvisoryIfNoConsumers` + +Tip + +**`NoConsumer`** topic advisories are sent only for non-persistent messages. + +### New advisories in version 5.2 + +Advisory Topics + +Description + +Properties + +Data Structure + +Default + +PolicyEntry Property + +`ActiveMQ.Advisory.SlowConsumer.Queue` + +Slow Queue Consumer. + +`String='consumerId'` \- the consumer id + +`ConsumerInfo` + +`false` + +`advisoryForSlowConsumers` + +`ActiveMQ.Advisory.SlowConsumer.Topic` + +Slow Topic Consumer. + +`String='consumerId'` \- the consumer id + +`ConsumerInfo` + +`false` + +`advisoryForSlowConsumers` + +`ActiveMQ.Advisory.FastProducer.Queue` + +Fast Queue producer. + +`String='producerId'` \- the producer id + +`ProducerInfo` + +`false` + +`advisdoryForFastProducers` + +`ActiveMQ.Advisory. FastProducer.Topic` + +Fast Topic producer. + +`String='consumerId'`' \- the producer id + +`ProducerInfo` + +`false` + +`advisdoryForFastProducers` + +`ActiveMQ.Advisory.MessageDiscarded.Queue` + +Message discarded. + +`String='orignalMessageId'` \- the discarded id + +`Message` + +`false` + +`advisoryForDiscardingMessages` + +`ActiveMQ.Advisory.MessageDiscarded.Topic` + +Message discarded. + +`String='orignalMessageId'` \- the discarded id + +`Message` + +`false` + +`advisoryForDiscardingMessages` + +`ActiveMQ.Advisory.MessageDelivered.Queue` + +Message delivered to the broker. + +`String='orignalMessageId'` \- the delivered id + +`Message` + +`false` + +`advisoryForDelivery` + +`ActiveMQ.Advisory.MessageDelivered.Topic` + +Message delivered to the broker. + +`String='orignalMessageId'` \- the delivered id + +`Message` + +`false` + +`advisoryForDelivery` + +`ActiveMQ.Advisory.MessageConsumed.Queue` + +Message consumed by a client. + +`String='orignalMessageId'` \- the delivered id + +`Message` + +`false` + +`advisoryForConsumed` + +`ActiveMQ.Advisory.MessageConsumed.Topic` + +Message consumed by a client. + +`String='orignalMessageId'` \- the delivered id + +`Message` + +`false` + +`advisoryForConsumed` + +`ActiveMQ.Advisory.FULL` + +A Usage resource is at its limit. + +`String='usageName'` \- the name of Usage resource + +`null` + +`false` + +`advisoryWhenFull` + +`ActiveMQ.Advisory.MasterBroker` + +A broker is now the master in a master/slave configuration. + +`null` + +`null` + +`true` + +`none` + +### New Advisories in 5.4 + +Advisory Topics + +Description + +Properties + +Data Structure + +Default + +PolicyEntry Property + +`ActiveMQ.Advisory.MessageDLQd.Queue` + +Message sent to DLQ. + +`String='orignalMessageId'` \- the delivered id + +`Message` + +Always on + +`advisoryForConsumed` + +`ActiveMQ.Advisory.MessageDLQd.Topic` + +Message sent to DLQ. + +`String='orignalMessageId'` \- the delivered id + +`Message` + +Always on + +`advisoryForConsumed` + +### Network bridge advisories + +Starting with ActiveMQ version 5.5 you can watch advisory topics for events related to the status of network bridges. You can get advisory messages when the network bridge is started or stopped. + +Advisory Topics + +Description + +Properties + +Data Structure + +Default + +`ActiveMQ.Advisory.NetworkBridge` + +Network bridge being stopped or started. + +`Boolean="started"` - **`true`** if bridge is started, **`false`** if it is stopped. +`Boolean="createdByDuplex"` - **`true`** if the bridge is created by remote network connector. + +`BrokerInfo` \- provides data of the remote broker + +Always on + +### Enabling Advisories Disabled by Default + +The advisories that are not turned on by default (see the last column) can be enabled on a **`PolicyEntry`** in the ActiveMQ Broker Configuration, e.g., to enable a message consumed advisory you can configure the following: + + + + + + + + + +Hint + +The **`>`** character matches all topics - you can use wild-card matches for setting a destination policy - see [Wildcards](wildcards.html) + +### Disabling Advisory Messages + +The use of advisory messages incurs a small overhead in terms of memory and connection resources that is related to the number of destinations in your system. In some cases it can make sense to disable all advisories. + +Advisories need to be disabled both on the Broker, via XML Configuration + + + +or from java code: + +BrokerService broker = new BrokerService(); +broker.setAdvisorySupport(false); +// ... +broker.start(); + +_and_ on your **`ActiveMQConnectionFactory`** (because a subscription to an advisory topic will auto create it) via the **`brokerUrl`**: + +tcp://localhost:61616?jms.watchTopicAdvisories=false + +or via java code using the **`watchTopicAdvisories`** attribute on the **`ActiveMQConnectionFactory`**. + +ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(); +factory.setWatchTopicAdvisories(false); + +Warning + +Advisory messages are required for [dynamic network broker topologies](networks-of-brokers.html) as `NetworkConnectors` subscribe to advisory messages. In the absence of advisories, a network must be statically configured. + +### Using the Destinations + +All of the above destinations are really prefixes which are appended with important information (like the actual topic or queue, the client ID, producer ID, consumer ID etc). This allows you to reuse the power of publish/subscribe, [Wildcards](wildcards.html) and [Selectors](selectors.html) to filter the advisory messages as you see fit. + +For example if you want to subscribe to expired messages on a topic **`FOO.BAR`** you could subscribe to **`ActiveMQ.Advisory.Expired.Topic.FOO.BAR`**. To subscribe to all messages of a certain kind of advisory just append **`.>`** to the topic, e.g., to subscribe to all the consumers starting and stopping to topics and queues subscribe to **`ActiveMQ.Advisory.Consumer..>`**. + +### Helper Methods + +Methods to get the advisory destination objects are available in [AdvisorySupport](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/advisory/AdvisorySupport.html) through the following methods. + +AdvisorySupport.getConsumerAdvisoryTopic() +AdvisorySupport.getProducerAdvisoryTopic() +AdvisorySupport.getExpiredTopicMessageAdvisoryTopic() +AdvisorySupport.getExpiredQueueMessageAdvisoryTopic() +AdvisorySupport.getNoTopicConsumersAdvisoryTopic() +AdvisorySupport.getNoQueueConsumersAdvisoryTopic() +AdvisorySupport.getDestinationAdvisoryTopic() +AdvisorySupport.getExpiredQueueMessageAdvisoryTopic() +AdvisorySupport.getExpiredTopicMessageAdvisoryTopic() +AdvisorySupport.getNoQueueConsumersAdvisoryTopic() +AdvisorySupport.getNoTopicConsumersAdvisoryTopic() + +// Version 5.2 on: + +AdvisorySupport.getSlowConsumerAdvisoryTopic() +AdvisorySupport.getFastProducerAdvisoryTopic() +AdvisorySupport.getMessageDiscardedAdvisoryTopic() +AdvisorySupport.getMessageDeliveredAdvisoryTopic() +AdvisorySupport.getMessageConsumedAdvisoryTopic() +AdvisorySupport.getMasterBrokerAdvisoryTopic() +AdvisorySupport.getFullAdvisoryTopic() + +Some helper classes to deal with advisory messages are available in the [advisories](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/advisory/package-summary.html) package. + diff --git a/advisory-support-in-activemq-3.md b/advisory-support-in-activemq-3.md new file mode 100644 index 0000000..9968b48 --- /dev/null +++ b/advisory-support-in-activemq-3.md @@ -0,0 +1,182 @@ +Apache ActiveMQ ™ -- Advisory Support in ActiveMQ 3 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [Previous Versions](previous-versions.html) > [Advisory Support in ActiveMQ 3](advisory-support-in-activemq-3.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +For users of Apache ActiveMQ 4.0 or later please see [Advisory Message](advisory-message.html "Advisory Message"). In previous 3.x versions the following is supported:- + +The destination string constants are available in [ActiveMQDestination](http://activemq.codehaus.org/maven/apidocs/org/activemq/message/ActiveMQDestination.html) + + + +A subscription to each of the destination returns an ObjectMessage with a specific object: [ConsumerInfo](http://activemq.codehaus.org/maven/apidocs/org/activemq/message/ConsumerInfo.html), [ProducerInfo](http://activemq.codehaus.org/maven/apidocs/org/activemq/message/ProducerInfo.html),[ConnectionInfo](http://activemq.codehaus.org/maven/apidocs/org/activemq/message/ConnectionInfo.html), [TempDestinationAdvisoryEvent](http://activemq.codehaus.org/maven/apidocs/org/activemq/advisories/TempDestinationAdvisoryEvent.html). + +For example: + + + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/ajax.md b/ajax.md new file mode 100644 index 0000000..8d92911 --- /dev/null +++ b/ajax.md @@ -0,0 +1,170 @@ +Apache ActiveMQ ™ -- Ajax + +[Connectivity](connectivity.html) > [Ajax](ajax.html) + + +Introduction +============ + +ActiveMQ supports [Ajax](http://en.wikipedia.org/wiki/Ajax_%28programming%29) which is an Asychronous Javascript And Xml mechanism for real time web applications. This means you can create highly real time web applications taking full advantage of the publish/subscribe nature of ActiveMQ + +Ajax allows a regular DHTML client (with JavaScript and a modern version 5 or later web browser) to send and receive messages over the web. Ajax support in ActiveMQ builds on the same basis as the [REST](rest.html) connector for ActiveMQ which allows any web capable device to send or receive messages over JMS. + +To see Ajax in action, try [running the examples](web-samples.html) + +The Servlet +=========== + +The AMQ AjaxServlet needs to be installed in your webapplications to support JMS over Ajax: + +... + + AjaxServlet + org.apache.activemq.web.AjaxServlet + + ... + + AjaxServlet + /amq/* + + +The servlet both serves the required js files and handles the JMS requests and responses. + +Javascript API +============== + +The ajax featues of amq are provided on the client side by the [amq.js](https://svn.apache.org/repos/asf/activemq/trunk/activemq-web-demo/src/main/webapp/js/amq.js) script. Beginning with ActiveMQ 5.4, this script utilizes one of three different adapters to support ajax communication with the server. Current [jQuery](http://jquery.org), [Prototype](http://prototypejs.org), and [Dojo](http://www.dojotoolkit.org) are supported, and recent versions of all three libraries are shipped with ActiveMQ. + + + + + + +Including these scripts results in the creation of a javascript object called `amq`, which provides the API to send messages and to subscribe to channels and topics. + +Sending a message +----------------- + +All that is required to send a JMS message from the javascript client, is to call the method: + +amq.sendMessage(myDestination,myMessage); + +where `myDestination` is the URL string address of the destination (e.g. "topic://MY.NAME" or "channel://MY.NAME") and `myMessage` is any well formed XML or plain text encoded as XML content. + +Receiving messages +------------------ + +To receive messages, the client must define a message handling function and register it with the [amq](https://svn.apache.org/repos/asf/activemq/trunk/activemq-web-demo/src/main/webapp/js/amq.js) object. For example: + +var myHandler = +{ + rcvMessage: function(message) + { + alert("received "+message); + } +}; + +amq.addListener(myId,myDestination,myHandler.rcvMessage); + +where `myId` is a string identifier that can be used for a later call to `amq.removeHandler(myId)` and `myDestination` is a URL string address of the destination (e.g. "topic://MY.NAME" or "channel://MY.NAME"). When a message is received, a call back to the `myHandler.rcvMessage` function passes the message to your handling code. +The "message" is actually a text of the Text message or a String representation (`toString()`) in case of Object messages. + +Be aware that, by default, messages published via [Stomp](http://activemq.apache.org/stomp.html) which include a `content-length` header will be converted by ActiveMQ to binary messages, and will not be visible to your web clients. Beginning with ActiveMQ 5.4.0, you can resolve this problem by always setting the [`amq-msg-type` header](https://issues.apache.org/jira/browse/AMQ-2833) to `text` in messages which will may be consumed by web clients. + +### Selector support + +By default, an ajax client will receive all messages on a topic or queue it is subscribed to. In [ActiveMQ 5.4.1](http://activemq.apache.org/activemq-541-release.html) amq.js supports [JMS selectors](http://activemq.apache.org/selectors.html) since it is frequently useful to receive only a subset of these messages. Selectors are supplied to an `amq.addListener` call by way of an optional 4th parameter. + +amq.addListener( myId, myDestination, myHandler.rcvMessage, { selector:"identifier='TEST'" } ); + +When used in this way, the Javascript client will receive only messages containing an `identifier` header set to the value `TEST`. + +Using AMQ Ajax in Multiple Browser Windows +------------------------------------------ + +All windows or tabs in a single browser share the same `JSESSIONID` on the ActiveMQ server. Unless the server can distinguish listeners from multiple windows, messages which were intended for 1 window will be delivered to another one instead. Effectively, this means that amq.js could be active in only a single browser window at any given time. Beginning in [ActiveMQ 5.4.2](http://activemq.apache.org/activemq-542-release.html), this is resolved by allowing each call to `amq.init` to specify a unique `clientId`. When this is done, multiple windows in the same browser can happily co-exist. Each can have a separate set of message subscriptions on the broker with no interactions between them. + +In this example, we use the current time (at the time the web page is loaded) as a unique identifier. This is effective as long as two browser windows are not opened within the same millisecond, and is the approach used by the example [chat.html](https://svn.apache.org/repos/asf/activemq/trunk/activemq-web-demo/src/main/webapp/chat.html) included with ActiveMQ. Other schemes to ensure the uniqueness of `clientId` can easily be devised. Note that this `clientId` need only be unique within a single session. (Browser windows opened in the same millisecond in separate browsers will not interact, since they are in different sessions.) + +org.activemq.Amq.init({ + uri: 'amq', + logging: true, + timeout: 45, + clientId:(new Date()).getTime().toString() +}); + +Note that this `clientId` is common to all message subscriptions in a single tab or window, and is entirely different from the `clientId` which is supplied as a first argument in `amq.addListener` calls. + +* In `amq.init`, `clientId` serves to distinguish different web clients sharing the same `JSESSIONID`. All windows in a single browser need a unique `clientId` when they call `amq.init`. +* In `amq.addListener`, `clientId` is used to associate a message subscription with the callback function which should be invoked when a message is received for that subscription. These `clientId` values are internal to each web page, and do not need to be unique across multiple windows or tabs. + +How it works +============ + +AjaxServlet and MessageListenerServlet +-------------------------------------- + +The ajax featues of amq are handled on the server side by the [AjaxServlet](https://svn.apache.org/repos/asf/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/AjaxServlet.java) which extends the [MessageListenerServlet](https://svn.apache.org/repos/asf/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/MessageListenerServlet.java). This servlet is responsible for tracking the existing clients (using a HttpSesssion) and lazily creating the AMQ and javax.jms objects required by the client to send and receive messages (eg. Destination, MessageConsumer, MessageAVailableListener). This servlet should be mapped to `/amq/*` in the web application context serving the Ajax client (this can be changed, but the client javascript `amq.uri` field needs to be updated to match.) + +Client Sending messages +----------------------- + +When a message is sent from the client it is encoded as the content of a POST request, using the API of one of the supported connection adapters (jQuery, Prototype, or Dojo) for [XmlHttpRequest](http://jibbering.com/2002/4/httprequest.html). The [amq](https://svn.apache.org/repos/asf/activemq/trunk/activemq-web-demo/src/main/webapp/js/amq.js) object may combine several sendMessage calls into a single POST if it can do so without adding additional delays (see polling below). + +When the MessageListenerServlet receives a POST, the messages are decoded as `application/x-www-form-urlencoded` parameters with their type (in this case `send` as opposed to `listen` or `unlisten` see below) and destination. If a destination channel or topic do not exist, it is created. The message is sent to the destination as a TextMessage. + +Listening for messages +---------------------- + +When a client registers a listener, a message subscription request is sent from the client to the server in a POST in the same way as a message, but with a type of `listen`. When the MessageListenerServlet receives a `listen` message, it lazily creates a MessageAvailableConsumer and registers a Listener on it. + +Waiting Poll for messages +------------------------- + +When a Listener created by the MessageListenerServlet is called to indicate that a message is available, due to the limitations of the HTTP client-server model, it is not possible to send that message directly to the ajax client. Instead the client must perform a special type of **Poll** for messages. Polling normally means periodically making a request to see if there are messages available and there is a trade off: either the poll frequency is high and excessive load is generated when the system is idle; or the frequency is low and the latency for detecting new messages is high. + +To avoid the load vs latency tradeoff, AMQ uses a waiting poll mechanism. As soon as the amq.js script is loaded, the client begins polling the server for available messages. A poll request can be sent as a GET request or as a POST if there are other messages ready to be delivered from the client to the server. When the MessageListenerServlet receives a poll it: + +1. if the poll request is a POST, all `send`, `listen` and `unlisten` messages are processed +2. if there are no messages available for the client on any of the subscribed channels or topic, the servlet suspends the request handling until: + * A MessageAvailableConsumer Listener is called to indicate that a message is now available; or + * A timeout expires (normally around 30 seconds, which is less than all common TCP/IP, proxy and browser timeouts). +3. A HTTP response is returned to the client containing all available messages encapsulated as `text/xml`. + +When the amq.js javascipt receives the response to the poll, it processes all the messages by passing them to the registered handler functions. Once it has processed all the messages, it immediately sends another poll to the server. + +Thus the idle state of the amq ajax feature is a poll request "parked" in the server, waiting for messages to be sent to the client. Periodically this "parked" request is refreshed by a timeout that prevents any TCP/IP, proxy or browser timeout closing the connection. The server is thus able to asynchronously send a message to the client by waking up the "parked" request and allowing the response to be sent. + +The client is able to asynchronously send a message to the server by creating (or using an existing) second connection to the server. However, during the processing of the poll response, normal client message sending is suspended, so that all messages to be sent are queued and sent as a single POST with the poll that will be sent (with no delay) at the end of the processing. This ensures that only two connections are required between client and server (the normal for most browsers). + +Threadless Waiting +------------------ + +The waiting poll described above is implemented using the [Jetty 6 Continuations](http://docs.codehaus.org/display/JETTY/Continuations) mechanism. This allows the thread associated with the request to be released during the wait, so that the container does not need to have a thread per client (which may be a large number). If another servlet container is used, the Continuation mechanism falls back to use a wait and the thread is not released. + +Comparison to Pushlets +====================== + +Firstly we could easily add support for pushlets to ActiveMQ. However we prefer the Ajax approach for various reasons + +* using Ajax means that we use a distinct HTTP request for each send/receive which is much more friendly to web infrastructure (firewalls, proxies, caches and so forth) rather than having an infinitely-long GET. + +* we can still take advantage of HTTP 1.1 keep-alive sockets and pipeline processing to gain the efficiency of a single socket used for communication between the client and server side; though in a way that works with any HTTP-capable infrastructure + +* the server is pure REST and so will work with any client side (rather than being tied to custom JavaScript function calls used on the page which the Pushlet approach requires). So Pushlets tie the server to the web page; with Ajax we can have a generic service which works with any page. + +* the client can be in control over frequency of polling & timeouts. e.g. it can avoid the memory issues of Pushlets in some browsers by using a 20-second timeout HTTP GET. Or using a zero timeout GET to poll queues. + +* its easier to take full advantage of HTTP encoding of messages, rather than using JavaScript function calls as the transfer protocol. + +* pushlets assume the server knows what functions are used on the client side as the server basically writes JavaScript function calls down the scoket - it's better for us to send generic XML packets (or strings or whatever the message format is) and let the JavaScript client side be totally decoupled from the server side + +* Ajax supports clean XML support allowing full XML documents to be streamed to the client for rich messages which are easy to process via standard JavaScript DOM support + diff --git a/all-forums.md b/all-forums.md new file mode 100644 index 0000000..a82c4af --- /dev/null +++ b/all-forums.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- All Forums + +[Community](community.html) > [Mailing Lists](mailing-lists.html) > [All Forums](all-forums.html) + + +[ActiveMQ](http://www.nabble.com/ActiveMQ-f2354.html) + diff --git a/amq-message-store.md b/amq-message-store.md new file mode 100644 index 0000000..89b6cae --- /dev/null +++ b/amq-message-store.md @@ -0,0 +1,160 @@ +Apache ActiveMQ ™ -- AMQ Message Store + +[Features](features.html) > [Persistence](persistence.html) > [AMQ Message Store](amq-message-store.html) + + +The Basics +---------- + +This is the default storage for AcitveMQ 5 and above. The AMQ Message Store is an embeddable transactional message storage solution that is extremely fast and reliable. +message commands are written to a transactional journal - which consists of rolling data logs - which means writing is extremely fast and the state of the store is easily recoverable. + +Messages themselves are persisted in the data logs of the journal - with references to their location being held by a reference store (by default Kaha) for fast retrevial. + +![](amq-message-store.data/amqstore.png) + + + + +References to messages are held in memory, and periodically inserted into the reference store to improve performance. + +The messages are stored in data logs, which are individual files, typically 32mb in size (though this is configurable, they can be larger if the size of a message is large than the file size). When all the messages in a data log have been successfully consumed, the data log file is marked as being ready to be deleted - or archived - which will happen at the next clean up period. + +Configuration +------------- + +By default ActiveMQ will use the the AMQ Store - and its default settings. You can configure the properties of the AMQ Store however, by explictly defining its persistence adapter (amqPersistenceAdapter): + + + + + + + + + + +The above shows the configuration required to set the AMQ Store through its amqPersistenceAdapter - and explicity setting the directory and maxFileLength properties. + +### AMQ Store Properties + +property name + +default value + +Comments + +directory + +activemq-data + +the path to the directory to use to store the message store data and log files + +useNIO + +true + +use NIO to write messages to the data logs + +syncOnWrite + +false + +sync every write to disk + +maxFileLength + +32mb + +a hint to set the maximum size of the message data logs + +persistentIndex + +true + +use a persistent index for the message logs. If this is false, an in-memory structure is maintained + +maxCheckpointMessageAddSize + +4kb + +the maximum number of messages to keep in a transaction before automatically committing + +cleanupInterval + +30000 + +time (ms) before checking for a discarding/moving message data logs that are no longer used + +indexBinSize + +1024 + +default number of bins used by the index. The bigger the bin size - the better the relative performance of the index + +indexKeySize + +96 + +the size of the index key - the key is the message id + +indexPageSize + +16kb + +the size of the index page - the bigger the page - the better the write performance of the index + +directoryArchive + +archive + +the path to the directory to use to store discarded data logs + +archiveDataLogs + +false + +if true data logs are moved to the archive directory instead of being deleted + +Data Structure +-------------- + +In the data directory defined for the AMQ Store there is the following directory structure: + +![](amq-message-store.data/amqdir.png) + +### Top level + +the message broker's name is used to distinguish its directory of message data. By default, the broker name is local host. +Below this top level directory are the following sub directories: + +### archive + +message data logs are moved here when they are discarded. +n.b. this directory only exists when the property archiveDataLogs is enabled + +### journal + +Used to hold the message data logs + +### kr-store + +The directory structure of the Kaha reference store (if used) + +##### data + +The indexes used to reference the message data logs in the journal for fast retrieval + +##### state + +The state of the store - i.e. names of durable subscribers - the reason for this is described in [Recovery](amq-message-store.html) + +### tmp-storage + +use to hold data files for transient messages that may be stored on disk to alleviate memory consumption - e.g. non-persistent topic messages awaiting delivery to an active, but slow subscriber. + +Recovery +-------- + +If the message broker does not shutdown properly, then the reference store indexes are cleaned and the message data files (which contain messages/acknowledgements and transactional boundaries) are replayed to rebuild up the message store state. It is possbile to force automatic recovery if using the Kaha reference store (the default) by deleting the kr-store/state/ directory. + diff --git a/amqp-build-notes.md b/amqp-build-notes.md new file mode 100644 index 0000000..3e95f1d --- /dev/null +++ b/amqp-build-notes.md @@ -0,0 +1,41 @@ +Apache ActiveMQ ™ -- AMQP Build Notes + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.AMQP](apachenmsamqp.html) > [AMQP Build Notes](amqp-build-notes.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Default build +============= + +Executing **nant** in the project home directory will produce two builds: + +* Debug/Release .NET 2.0 x86 in the \\net-2.0 folder built with Visual Studio 2008 +* Debug/Release .NET 4.0 x86 in the \\net-4.0 folder built with Visual Studio 2010 + +Your build system must have Visual Studio 2008, Visual Studio 2010, or both to produce the desired build. + +Dependencies and restrictions +============================= + +The version dependencies on Visual Studio and the x86-only restrictions are artefacts of the delivery mechanism for the vendor\\QPid\\Apache.QPID support libraries. These restrictions are important to understand for using this provider and for packaging this provider for your application. + +Support library components (x86 only) +------------------------------------- + +The support libraries consist of two parts: + +* Native C++ Qpid Messaging (qpid*.dll, boost*.dll) +* .NET interop binding between .NET and the native C++ code (org.apache.qpid.messaging.dll) + +The C++ support libraries are compiled with specific versions of Visual Studio and linked to the corresponding MSVC runtime libraries. In this release of Apache.NMS.AMQP only the x86 versions of Apache.QPID are provided. + +Running the Apache.NMS.AMQP provider in an x64 environment or in a .NET application choosing AnyCPU will not work correctly. Please choose **x86** for your application _Platform target_. + +Run time library staging +------------------------ + +When your application runs make sure that all of the Apache.QPID support library dll files are copied to the final execution directory. When the support library files are not in same folder as _org.apache.qpid.messaging.dll_ then the Apache.NMS.AMQP provider may not load correctly. Having the support files on your application's PATH is not sufficient for successful loading. + + diff --git a/amqp-downloads.md b/amqp-downloads.md new file mode 100644 index 0000000..9d9a77d --- /dev/null +++ b/amqp-downloads.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- AMQP Downloads + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.AMQP](apachenmsamqp.html) > [AMQP Downloads](amqp-downloads.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/amqp-examples.md b/amqp-examples.md new file mode 100644 index 0000000..c9fc12b --- /dev/null +++ b/amqp-examples.md @@ -0,0 +1,21 @@ +Apache ActiveMQ ™ -- AMQP Examples + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.AMQP](apachenmsamqp.html) > [AMQP Examples](amqp-examples.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +HelloWorld.cs +============= + +The source kit for the Apache.NMS.AMQP provider includes a HelloWorld project. + +HelloWorld requires an AMQP 1.0 broker (either ActiveMQ or Qpidd) to be running on localhost:5672. Of course you may specify a different URI to select any broker. + +NUnit test cases +================ + +Please refer to the _amqp-test_ project test case source code for examples of acceptable values for this provider. + + diff --git a/amqp-faq.md b/amqp-faq.md new file mode 100644 index 0000000..a091a9f --- /dev/null +++ b/amqp-faq.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- AMQP FAQ + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.AMQP](apachenmsamqp.html) > [AMQP FAQ](amqp-faq.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/amqp-manual.md b/amqp-manual.md new file mode 100644 index 0000000..60c3d30 --- /dev/null +++ b/amqp-manual.md @@ -0,0 +1,167 @@ + + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +Apollo 1.7.1 AMQP Protocol Manual +================================= + +* [Using the AMQP Protocol](#Using_the_AMQP_Protocol) +* * [AMPQ Protocol Options](#AMPQ_Protocol_Options) + * [Connecting](#Connecting) + * [Destination Types](#Destination_Types) + * [Reliable Messaging](#Reliable_Messaging) + * [Message Expiration](#Message_Expiration) + * [Topic Durable Subscriptions](#Topic_Durable_Subscriptions) + * [Browsing Queues](#Browsing_Queues) + * [Temporary Destinations](#Temporary_Destinations) + * [Destination Wildcards](#Destination_Wildcards) + * [Composite Destinations](#Composite_Destinations) + * [Message Selectors](#Message_Selectors) + * [Destination Name Restrictions](#Destination_Name_Restrictions) + +Using the AMQP Protocol +----------------------- + +Clients can connect to Apollo using the [AMQP](http://amqp.github.com/) protocol. AMQP's mission is “To become the standard protocol for interoperability between all messaging middleware”. Apollo implements version 1.0 of AMQP which has become an OASIS Standard. + +It is recommend that you use an AMQP 1.0 client library like the one provided by the [Apache Qpid Proton](http://qpid.apache.org/proton/) project in order to access this server or any other AMQP 1.0 server. + +AMQP clients can connect to any of the default connectors that the default Apollo configuration opens up, but since AMQP has the IANA-assigned port of 5672 and 5671 for SSL secured AMQP, you might want to add the following configuration elements to your Apollo config file so that AMQP clients can more easily connect to Apollo. + + + + + + +### AMPQ Protocol Options + +You can use the `amqp` configuration element within the `connector` element in the `apollo.xml` configuration file to change the default settings used in the AMQP protocol implementation. The `amqp` element supports the following configuration attributes: + +* `max_frame_size` : The maximum allowed size of an AMQP frame. Defaults to `100M`. +* `trace` : Set to `true` if you want to enabled AMQP frame tracing to get logged. Defaults to `false`. +* `buffer_size` : How much each sender or receiver will buffer between the client and the broker. If not set, it will be auto tuned between `640k` and `20k` depending on the number of connections open on the broker. +* `die_delay` : The amount of time to delay in milliseconds after an AMQP connection is + closed before the socket is closed/reset. + +The amqp configuration element can also be used to control how the destination headers are parsed and interpreted. The supported attributes are: + +* `queue_prefix` : Defaults to `queue://` +* `topic_prefix` : Defaults to `topic://` +* `path_separator` : Defaults to `.` +* `destination_separator` : Defaults to `,` +* `any_child_wildcard` : Defaults to `*` +* `regex_wildcard_start` : Defaults to `{` +* `regex_wildcard_end` : Defaults to `}` +* `any_descendant_wildcard` : Defaults to `**` + +Example: + + + + + + + +### Connecting + +The default broker configuration secures access to the broker so that only the `admin` user can connect. The default password for the `admin` user is `password`. Your client must use PLAIN Sasl to pass the credentials. + +If the client does not specify the remote host when in the AMQP Open frame, the client will be connected to the first virtual host defined in it's configuration. If a remote host is specified, then connection will be closed with an error if it cannot find a virtual with that match name defined. Therefore, it is critical that the virtual hosts configuration define all the possible host names that clients may connect to host with. + +### Destination Types + +Apollo supports three types of destinations, queues, topics, and durable subscriptions. + +The difference between queues and topics is how messages are delivered to consumers. A queue will load balance it's messages over the connected subscribers so that only one subscriber gets a message. Topics replicate every message sent to it to all the connected subscribers. Queues hold on to unconsumed messages even when there are no receivers attached, while a topic will drop messages when there are no connected receivers. + +A durable subscription allows you to create a subscription against a topic which will queue messages even after the client disconnects. Clients can reconnect and consume the queued message originating from the topic at a later time. + +If you want to send or subscribe to a queue, topic, or durable subscription the AMQP address should be prefixed with `queue://`, `topic://` or `dsub://` respectively. + +### Reliable Messaging + +Apollo supports reliable messaging by allowing messages to be durable so that they can be recovered if there is failure which kills the broker. Processing durable messages has orders of magnitude more overhead than non-durable variety. You should only mark messages durable if you can't afford to loose the message. + +Durable messages should be sent either as part of a transaction or not pre-settled so that the client can be notified when the durable message has been fully received the the broker. + +### Message Expiration + +Apollo supports expiring old messages. Unconsumed expired messages are automatically removed from the queue. You just need to specify when the message expires by setting the message header. + +### Topic Durable Subscriptions + +A durable subscription is a queue which is subscribed to a topic so that even if the client which created the durable subscription is not online, he can still get a copy of all the messages sent to the topic when he comes back online. Multiple clients can subscribe to the same durable subscription and since it's backed by a queue, those subscribers will have the topic's messages load balanced across them. + +To create or reattach to a a durable subscription with AMQP, you create an AMQP receiver link and use the Link name to identify the durable subscription. The link source durable property must be set to DURABLE and the expiry policy must be set to NEVER. + +If you want the durable subscription to be destroyed, change the source expiry policy to LINK_DETACH and then close the link. + +If the durable subscription already exists you can address it directly using `dsub://` prefix on the `destination` header. For example, send a message to the previously created `mysub` durable subscription, you would message to the target address of `dsub://mysub`. + +Similarly, you can also receive messages from the durable subscription by using the source address of `dsub://mysub`, + +Unlike typical AMQP link id's which are local to the AMQP client's connection, the durable subscription id's are global across a virtual host. If two different connections setup receivers against the same durable subscription id, then messages from the durable subscription will get load balanced across the two connections. + +### Browsing Queues + +To browse messages on a queue without consuming them, the receiver should set the distribution mode attribute of the source to COPY. + +### Temporary Destinations + +Temporary destinations are typically used to receive response messages in a request/response messaging exchange. A temporary destination can only be consumed by a subscription created on the connection which is associated with the temporary destination. Once the connection is closed, all associated temporary destinations are removed. To create a temporary destination, set the dynamic attribute on a source or target and do not set the address attribute. Once the link is opened, address will be updated to be temporary address that you should use when sending messages. + +Temporary destination names actually map to normal queues and topics. They just have a `temp...` prefix. Any destination which starts with `temp.` has a security policy which only allows the connection which created it to subscribe from it. These destinations are also auto deleted once the connection is closed. + +### Destination Wildcards + +We support destination wildcards to easily subscribe to multiple destinations with one subscription. This concept has been popular in financial market data for some time as a way of organizing events (such as price changes) into hierarchies and to use wildcards for easy subscription of the range of information you're interested in. + +* `.` is used to separate names in a path +* `*` is used to match any name in a path +* `{regex}` is used to match a path name against a regular expression. +* `**` is used to recursively match path names + +For example imagine you are sending price messages from a stock exchange feed. You might use some kind of destination naming conventions such as: + +* `topic://PRICE.STOCK.NASDAQ.IBM` to publish IBM's price on NASDAQ and +* `topic://PRICE.STOCK.NYSE.SUNW` to publish Sun's price on the New York Stock Exchange + +A subscriber could then use exact destinations to subscribe to exactly the prices it requires. Or it could use wildcards to define hierarchical pattern matches to the destinations to subscribe from. + +For example using the example above, these subscriptions are possible + +* `topic://PRICE.**` : Any price for any product on any exchange +* `topic://PRICE.STOCK.**` : Any price for a stock on any exchange +* `topic://PRICE.STOCK.NASDAQ.*` : Any stock price on NASDAQ +* `topic://PRICE.STOCK.*.IBM` : Any IBM stock price on any exchange +* `topic://PRICE.STOCK.*.I*` : Any stock price starting with 'I' on any exchange +* `topic://PRICE.STOCK.*.*{[0-9]}` : Any stock price that ends in a digit on any exchange + +Destination wildcards can only be used in a SUBSCRIBE frame. + +### Composite Destinations + +You can use composite destinations to send or subscribe to multiple destinations at one time. You use separator of `,` between destination names. For example to send one message to 2 queues and 1 topic, you would use an address of 'queue://a,queue://b,topic://c' + +### Message Selectors + +Message selectors allow a receiver to only receive a subset of the messages sent to a destination. The selector acts like a filter which is applied against the message properties and only those messages which match pass through to the subscription. + +The broker currently only support JMS style selectors. These selectors are defined using SQL 92 syntax. + +Here is an example selector: + + type = 'car' AND color = 'blue' AND weight > 2500 + +To use the selector just set filter attribute of the source to a map which contains a `jms-selector` symbol key mapped to your selector string value. + +### Destination Name Restrictions + +Destination names are restricted to using the characters `a-z`, `A-Z`, `0-9`, `_`, `-` `%`, `~`, `:`, ' ', '(', ')' or `.` in addition to composite separator `,` and the wild card `*`. Any other characters must be UTF-8 and then URL encoded if you wish to preserve their significance. + +External Resources: + +* [AMQP 1.0 Specification](http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-complete-v1.0-os.pdf) \ No newline at end of file diff --git a/amqp.md b/amqp.md new file mode 100644 index 0000000..976969d --- /dev/null +++ b/amqp.md @@ -0,0 +1,353 @@ +Apache ActiveMQ ™ -- AMQP + +[Connectivity](connectivity.html) > [Protocols](protocols.html) > [AMQP](amqp.html) + + +ActiveMQ supports the [AMQP 1.0](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=amqp) protocol which is an OASIS standard. + +Availability + +Available from ActiveMQ version [5.8](activemq-580-release.html) onward. + +### Enabling the ActiveMQ Broker for AMQP + +To enable AMQP protocol support on the broker add the following transport connector configuration referencing the **`amqp`** scheme in its URI: + + + + + +It is enabled in the default ActiveMQ server configuration. For more help see [Run Broker](run-broker.html). + +### Security + +The AMQP implementation fully supports an [ActiveMQ security](security.html) mechanism. This allows the broker to accept plain SASL authentication. Authorization policies are applied to a destination when it's accessed (read/write). + +SSL + +For additional security AMQP can be configured to run over SSL as described in the following section. + +### Enabling AMQP over NIO + +For better scalability (and performance) the AMQP protocol should be configured to use NIO, rather than the default of TCP. To use NIO use the transport scheme **`amqp+nio`** instead of **`amqp`**. + +Example: + + + +This transport uses the [NIO transport](http://activemq.apache.org/configuring-transports.html#ConfiguringTransports-TheNIOTransport) underneath and will generally use much less threads than the standard connector. This connector can help if you want to use [large number of queues](http://activemq.apache.org/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.html) + +### Enabling AMQP over SSL + +It's easy to configure ActiveMQ to use AMQP over a SSL connection. To use SSL use the transport scheme **`amqp+ssl`** instead of **`amqp`**. + +Example: + + + +For more details on using SSL with ActiveMQ, see the following article ([How do I use SSL](http://activemq.apache.org/how-do-i-use-ssl.html)). + +### Working with Destinations with AMQP + +You should prefix destination address with **`queue://`** to use queue based destinations or **`topic://`** to use topic based destinations. The destination type defaults to queue when the destination prefix is omitted. + +### Prefetch Size and Credit + +When AMQP receiver connects to the broker it's mapped to the JMS consumer. This JMS consumer has to have appropriate [prefetch size](what-is-the-prefetch-limit-for.html) set. The broker will honor the credit set by the client or use the default value of **`1000`** if client doesn't set it. + +Example: tuning the default **`prefetch`** size: + + + +In this case, client preference will be ignored and the configured value will be used. + +You can also tune broker-side **`amqp`** receiver link that handles incoming messages. It will use credit of **`1000`** messages by default, but you can override this by using **`producerCredit`** property, like  + + + +### Mapping to JMS + +There are three basic conversion strategies that can be used with AMQP and inter-operating with the JMS API. + +Strategy + +Description + +`native` + +(**Default**) Wraps the bytes of the AMQP message into a JMS **`BytesMessage`** and maps the headers of the AMQP message to headers on the JMS message. + +`raw` + +Wraps the bytes of the AMQP message into a JMS **`BytesMessage`**. + +`jms` + +Maps headers of the AMQP message to JMS message headers and the body of the AMQP message to the JMS body. + +Set the **transformer** transport option on the **`transportConnector`** to the desired mapping strategy. For example, to inter-operate with JMS at the payload level, set the **`transformer`** option to **`jms`**: + + + +#### How AMQP Message Headers are Mapped to JMS Headers + +The following headers are mapped regardless of the transformer used: + +AMQP Message + +JMS Message + +Notes + +`JMS_AMQP_NATIVE` + +Will be set to **`true`** if the transformer is **`native`** or **`raw`**, **`false`** otherwise. + +`message-format` + +`JMS_AMQP_MESSAGE_FORMAT` + +The following header mappings apply when the transformer is either **`native`** or **`jms`**: + +AMQP Message + +JMS Message + +Notes + +`application-properties.JMSXGroupID` + +`JMSXGroupID` + +`application-properties.JMSXGroupSequence` + +`JMSXGroupSequence` + +`application-properties.JMSXUserID` + +`JMSXUserID` + +`application-properties.**name**` + +**`name`** + +`delivery-annotations.**name**` + +`JMS_AMQP_DA_**name**` + +`footer.**name**` + +`JMS_AMQP_FT_**name**` + +`header.deliveryCount` + +`JMSXDeliveryCount` + +  + +`header.durable` + +`JMSDeliveryMode` + +**`javax.jms.Message.DEFAULT_DELIVERY_MODE`** if not set. + +`header.first-acquirer` + +`JMS_AMQP_FirstAcquirer` + +`header.priority` + +`JMSPriority` + +**`javax.jms.Message.DEFAULT_PRIORITY`** if not set. + +`header.ttl` + +`JMSExpiration` + +**`javax.jms.Message.DEFAULT_TIME_TO_LIVE`** if not set. + +`message-annotations.**name**` + +`JMS_AMQP_MA_**name**` + +`message-annotations.x-opt-jms-type` + +`JMSType` + +`message-annotations.x-opt-reply-type` + +Type of the `JMSReplyTo` + +Comma separated list of **`queue`**, **`topic`**, or **`temporary`**. Defaults to **`queue`** if not set. + +`message-annotations.x-opt-to-type` + +Type of the `JMSDestination` + +Comma separated list of **`queue`**, **`topic`**, or **`temporary`**. Defaults to **`queue`** if not set. + +`properties.content-encoding` + +`JMS_AMQP_ContentEncoding` + +`properties.content-type` + +`JMS_AMQP_ContentType` + +`properties.correlation-id` + +`JMSCorrelationID` + +`properties.creation-time` + +`JMSTimestamp` + +`properties.group-sequence` + +`JMSXGroupSequence` + +`properties.message-id` + +`JMSMessageID` + +Auto generated if not set. + +`properties.reply-to` + +`JMSReplyTo` + +The name of the **`JMSReplyTo`** + +`properties.reply-to-group-id` + +`JMS_AMQP_ReplyToGroupID` + +`properties.subject` + +`JMS_AMQP_Subject` + +`properties.to` + +`JMSDestination` + +The name of the **`JMSDestination`** + +`properties.user-id` + +`JMSXUserID` + +**`properties.user-id`** is decoded as a UTF-8 String. + +AMQP property value types are converted as follows: + +AMQP Type + +Java Type + +Notes + +`binary` + +`String` + +Hex encoding of the binary value + +`bool` + +`Boolean` + +`byte` + +`Byte` + +`double` + +`Double` + +`float` + +`Float` + +`int` + +`Integer` + +`long` + +`Long` + +`short` + +`Short` + +`symbol` + +`String` + +`ubyte` + +`Byte` or `Short` + +**`Short`** is used if: **`value >`** **`Byte.MAX_VALUE`** + +`uint` + +`Integer` or `Long` + +**`Long`** is used if: **`value >`** **`Integer.MAX_VALUE`** + +`ulong` + +`Long` + +`ushort` + +`Short` or `Integer` + +**`Integer`** is used if: **`value >`** **`Short.MAX_VALUE`** + +#### How a AMQP Messages Body is Mapped to a JMS Message + +If the transformer is set to **`jms`** then the JMS message type will depend on the body type of the AMQP message. + +Body Type + +JMS Message Type + +`AmqpSequence` + +`StreamMessage` + +`AmqpValue` + +`ObjectMessage` + +`AmqpValue` holding a `null` + +`Message` + +`AmqpValue` holding a `String` + +`TextMessage` + +`AmqpValue` holding a `binary` + +`BytesMessage` + +`AmqpValue` holding a `list` + +`StreamMessage` + +`Data` + +`BytesMessage` + +`null` + +`Message` + +### AMQP 1.0 client library + +You can use [Apache Qpid Proton](http://qpid.apache.org/proton/). + diff --git a/apache-activemq-5132-released.md b/apache-activemq-5132-released.md new file mode 100644 index 0000000..7ad6c2f --- /dev/null +++ b/apache-activemq-5132-released.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.13.2 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2016 > 03 > 07 > [Apache ActiveMQ 5.13.2 Released](apache-activemq-5132-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.13.2](http://activemq.apache.org/activemq-5132-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-5133-released.md b/apache-activemq-5133-released.md new file mode 100644 index 0000000..dd3f24e --- /dev/null +++ b/apache-activemq-5133-released.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.13.3 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2016 > 05 > 03 > [Apache ActiveMQ 5.13.3 Released](apache-activemq-5133-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.13.3](http://activemq.apache.org/activemq-5133-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-5134-released.md b/apache-activemq-5134-released.md new file mode 100644 index 0000000..7cb05bb --- /dev/null +++ b/apache-activemq-5134-released.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.13.4 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2016 > 07 > 21 > [Apache ActiveMQ 5.13.4 Released](apache-activemq-5134-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.13.4](http://activemq.apache.org/activemq-5134-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-5140-released.md b/apache-activemq-5140-released.md new file mode 100644 index 0000000..362b7be --- /dev/null +++ b/apache-activemq-5140-released.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.14.0 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2016 > 08 > 08 > [Apache ActiveMQ 5.14.0 Released](apache-activemq-5140-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.0](http://activemq.apache.org/activemq-5140-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-5141-released.md b/apache-activemq-5141-released.md new file mode 100644 index 0000000..c294127 --- /dev/null +++ b/apache-activemq-5141-released.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.14.1 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2016 > 10 > 03 > [Apache ActiveMQ 5.14.1 Released](apache-activemq-5141-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.1](http://activemq.apache.org/activemq-5141-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-5142-released.md b/apache-activemq-5142-released.md new file mode 100644 index 0000000..9016db6 --- /dev/null +++ b/apache-activemq-5142-released.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.14.2 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2016 > 12 > 09 > [Apache ActiveMQ 5.14.2 Released](apache-activemq-5142-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.2](http://activemq.apache.org/activemq-5142-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-5144-released.md b/apache-activemq-5144-released.md new file mode 100644 index 0000000..cff77b9 --- /dev/null +++ b/apache-activemq-5144-released.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.14.4 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2017 > 03 > 03 > [Apache ActiveMQ 5.14.4 Released](apache-activemq-5144-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.4](http://activemq.apache.org/activemq-5144-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-5145-released.md b/apache-activemq-5145-released.md new file mode 100644 index 0000000..6176dee --- /dev/null +++ b/apache-activemq-5145-released.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.14.5 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2017 > 04 > 17 > [Apache ActiveMQ 5.14.5 Released](apache-activemq-5145-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.5](http://activemq.apache.org/activemq-5145-release.html) +A big thanks to everyone who contributed to this release. +We look forward to your feedback. + diff --git a/apache-activemq-5150-released.md b/apache-activemq-5150-released.md new file mode 100644 index 0000000..90ba018 --- /dev/null +++ b/apache-activemq-5150-released.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.15.0 Released + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](../../../index.html) > 2017 > 07 > 06 > [Apache ActiveMQ 5.15.0 Released](apache-activemq-5150-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.15.0](http://activemq.apache.org/activemq-5150-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-5152-released.md b/apache-activemq-5152-released.md new file mode 100644 index 0000000..374ecb3 --- /dev/null +++ b/apache-activemq-5152-released.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ 5.15.2 Released + +[Index](../../../index.html) > 2017 > 10 > 23 > [Apache ActiveMQ 5.15.2 Released](apache-activemq-5152-released.html) + + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.15.2](http://activemq.apache.org/activemq-5152-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/apache-activemq-board-report-200708-august.md b/apache-activemq-board-report-200708-august.md new file mode 100644 index 0000000..bc4238d --- /dev/null +++ b/apache-activemq-board-report-200708-august.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2007.08 (August) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2007.08 (August)](apache-activemq-board-report-200708-august.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +July board report was missed in part due to a change in PMC chair. + +Community: + \* The developer and user communities remain very active. + \* New committer added: Albert Strasheim + +Development: + The CMS API has been extracted from the ActiveMQ CPP module and turned into + an independently versioned module. ActiveMQ 5.0 is starting to solidify and + in all likelihood will be released within the next quarter. + +Brand New Releases: + \* ActiveMQ CMS 1.0 - Defines an abstract messaging API for C++ + \* ActiveMQ Camel 1.0.0 - A routing and mediation engine + +Maintenance Releases: + \* ActiveMQ CPP 2.0.1 - Updated to use the CMS 1.0 API + \* ActiveMQ CMS 1.1 - Updated to build as a shared lib + diff --git a/apache-activemq-board-report-200710-october.md b/apache-activemq-board-report-200710-october.md new file mode 100644 index 0000000..c272955 --- /dev/null +++ b/apache-activemq-board-report-200710-october.md @@ -0,0 +1,24 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2007.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2007.10 (October)](apache-activemq-board-report-200710-october.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +Community: + \* The developer and user communities remain very active. + \* The Camel project, NMS project, and recent release candidate for ActiveMQ + 5.0 have generated much mailing list activity. + \* A code grant has been submitted for an NMS implementation that access + Tibco EMS. (JIRA issue AMQNET-68) + +Development: + \* We are starting to produce ActiveMQ 5.0.0 release candidates so a release + is now eminent. + \* Camel 1.2.0 is also producing release candidates. + +Releases: + \* ActiveMQ Camel 1.1.0 - A routing and mediation engine + \* ActiveMQ CPP 2.1 - A C++ client to ActiveMQ that implements the CMS API + diff --git a/apache-activemq-board-report-200801-january.md b/apache-activemq-board-report-200801-january.md new file mode 100644 index 0000000..1749629 --- /dev/null +++ b/apache-activemq-board-report-200801-january.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2008.01 (January) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2008.01 (January)](apache-activemq-board-report-200801-january.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +Community: + \* Nicky Sandhu and Hadrian Zbarcea were voted in and accepted becoming ActiveMQ committers + \* A code grant was accepted for an NMS implementation that access + Tibco EMS. + \* The development and user lists continue to stay vibrant. + +Development: + \* ActiveMQ 5.0 continues to stabilize and should produce a 5.0.1 bug fix release shortly. + \* NMS subproject refactored to make each NMS implementation independently versioned. + +Releases: + \* ActiveMQ 5.0.0 + \* Camel 1.2.0 + \* CMS 1.2 + \* ActiveMQ CPP 2.1.1 + \* ActiveMQ CPP 2.1.2 + \* ActiveMQ CPP 2.1.3 + diff --git a/apache-activemq-board-report-200807-july.md b/apache-activemq-board-report-200807-july.md new file mode 100644 index 0000000..333fb63 --- /dev/null +++ b/apache-activemq-board-report-200807-july.md @@ -0,0 +1,30 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2008.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2008.07 (July)](apache-activemq-board-report-200807-july.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +Community: + \* The ActiveMQ project has had another very busy quarter. Seven new contributors were voted in and accepted becoming ActiveMQ committers: + \* Gary Tully + \* Gert Vanthienen + \* Dejan Bosanac + \* Claus Ibsen + \* Roman Kalukiewicz + \* Willem Jiang + \* Jim Gomes + \* The development and user lists continue to stay vibrant. + +Development: + \* Lots of development effort continues around pushing out new versions of ActiveMQ, ActiveMQ-CPP, and Camel. + +Releases: + \* Camel 1.3.0 + \* ActiveMQ 5.1.0 + \* ActiveMQ 4.1.2 + \* ActiveIO 3.1.0 + \* ActiveIO 3.0.1 + \* ActiveMQ-CPP 2.2 + diff --git a/apache-activemq-board-report-200810-october.md b/apache-activemq-board-report-200810-october.md new file mode 100644 index 0000000..2ed776c --- /dev/null +++ b/apache-activemq-board-report-200810-october.md @@ -0,0 +1,20 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2008.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2008.10 (October)](apache-activemq-board-report-200810-october.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +Community: + \* The ActiveMQ project has had another very busy quarter. Jonathan Anstey was voted in as an ActiveMQ committer. + \* The development and user lists continue to stay vibrant. + +Development: + \* Lots of development effort continues around pushing out new versions of ActiveMQ, ActiveMQ-CPP, and Camel. A new 5.2.0 release + of ActiveMQ is currently in the works. + +Releases: + \* ActiveMQ-CPP 2.2.1 + \* Camel 1.4.0 + diff --git a/apache-activemq-board-report-200901-january.md b/apache-activemq-board-report-200901-january.md new file mode 100644 index 0000000..82e49b0 --- /dev/null +++ b/apache-activemq-board-report-200901-january.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2009.01 (January) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2009.01 (January)](apache-activemq-board-report-200901-january.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +Community: + \* The ActiveMQ project has had another very busy quarter. William Tam has been added as an ActiveMQ committer. + \* The development and user lists continue to stay vibrant. + \* The Camel sub project has been approved to become a TLP and is currently setting it's infrastructure to do so. + \* A privacy policy page has been added to all the ActiveMQ wikis and websites. + +Development: + \* ActiveMQ 5.3.x development is underway. Several new ideas are being researched like a new storage implementation + and a protocol buffer based wire encoding. If accepted into the main line this may bump up the major version to + 6.0. + \* ActiveMQ-CPP 3.0 development is underway. The current architecture is being refactored to improve performance and + to allow for new features to be added more easily such as a Failover Transport. + +Releases: + \* ActiveMQ 5.2.0 + \* ActiveMQ-CPP 2.2.2 + \* ActiveMQ-CPP 2.2.3 + \* Camel 1.5.0 + diff --git a/apache-activemq-board-report-200904-april.md b/apache-activemq-board-report-200904-april.md new file mode 100644 index 0000000..314cb05 --- /dev/null +++ b/apache-activemq-board-report-200904-april.md @@ -0,0 +1,24 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2009.04 (April) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2009.04 (April)](apache-activemq-board-report-200904-april.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +Community: + \* The ActiveMQ project has had another very busy but quiet quarter. + \* The development and user lists continue to stay vibrant. + \* The Camel sub project has completed moving to a TLP. + +Development: + \* ActiveMQ 5.3.x development is underway. Several new ideas are being researched like a new storage implementation + and a protocol buffer based wire encoding. If accepted into the main line this may bump up the major version to + 6.0. + \* ActiveMQ-CPP 3.0 development is underway. The current architecture is being refactored to improve performance and + to allow for new features to be added more easily such as a Failover Transport. + +Releases: + \* ActiveMQ-CPP 2.2.4 + \* ActiveMQ-CPP 2.2.5 + diff --git a/apache-activemq-board-report-200907-july.md b/apache-activemq-board-report-200907-july.md new file mode 100644 index 0000000..003933c --- /dev/null +++ b/apache-activemq-board-report-200907-july.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2009.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2009.07 (July)](apache-activemq-board-report-200907-july.html) + + +Community: + \* The ActiveMQ project has had another very busy but quiet quarter. + \* The development and user lists continue to stay vibrant. + \* New PMC members: Dejan Bosanac + \* New Committers: Colin MacNaughton, Bruce Snyder + +Development: + \* The first release of the Apache ActiveMQ .NET 1.1.0 project is underway. + \* ActiveMQ 5.3.x maintenance development continues expect a release soon. + \* Lots of impressive work being done sandbox area for a revolutionary + version of the Broker may one day become ActiveMQ 6.0. + +Releases: + \* ActiveMQ-CPP 2.2.6 + \* ActiveMQ-CPP 3.0.0 + \* ActiveMQ-CPP 3.0.1 + diff --git a/apache-activemq-board-report-200910-october.md b/apache-activemq-board-report-200910-october.md new file mode 100644 index 0000000..eeb096f --- /dev/null +++ b/apache-activemq-board-report-200910-october.md @@ -0,0 +1,23 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2009.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2009.10 (October)](apache-activemq-board-report-200910-october.html) + + +Community: + \* The ActiveMQ project has had another very busy but quiet quarter. + \* The development and user lists continue to stay vibrant. + +Development: + \* It was a busy an fruitful quarter which produced several new releases. + +Releases: + \* Apache.NMS 1.1.0 + \* Apache.NMS.ActiveMQ 1.1.0 + \* Apache.NMS.EMS 1.1.0 + \* Apache.NMS.MSMQ 1.1.0 + \* Apache.NMS.WCF 1.1.0 + \* ActiveIO 3.1.1 + \* ActiveIO 3.1.2 + \* ActiveMQ Protocol Buffers 1.0 + \* ActiveMQ 5.3.0 + diff --git a/apache-activemq-board-report-201001-january.md b/apache-activemq-board-report-201001-january.md new file mode 100644 index 0000000..8c9259f --- /dev/null +++ b/apache-activemq-board-report-201001-january.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2010.01 (January) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2010.01 (January)](apache-activemq-board-report-201001-january.html) + + +Community: + \* The ActiveMQ project has had another very busy but quiet quarter. + \* The development and user lists continue to stay vibrant. + \* Tim Bish has joined the ActiveMQ PMC + +Development: + \* The Apache.NMS.Stomp project has begun development of its first release. + + +Releases: + \* ActiveMQ-CPP 3.1.0 + diff --git a/apache-activemq-board-report-201005-may.md b/apache-activemq-board-report-201005-may.md new file mode 100644 index 0000000..8df0045 --- /dev/null +++ b/apache-activemq-board-report-201005-may.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2010.05 (May) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2010.05 (May)](apache-activemq-board-report-201005-may.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +Apologies for missing the April board report deadline. + +Community: + \* The ActiveMQ project has had another very busy but quiet quarter. + \* The development and user lists continue to stay vibrant. + +Development: + \* Working towards an ActiveMQ 5.4 release. + +Releases: + \* ActiveMQ 5.3.2 + \* ActiveMQ-CPP 3.1.2 + \* ActiveMQ 5.3.1 + \* ActiveMQ-CPP 3.1.1 + \* Apache.NMS.ActiveMQ v1.2.0 + \* Apache.NMS.Stomp v1.2.0 + \* Apache.NMS API 1.2.0 + diff --git a/apache-activemq-board-report-201007-july.md b/apache-activemq-board-report-201007-july.md new file mode 100644 index 0000000..3e31b62 --- /dev/null +++ b/apache-activemq-board-report-201007-july.md @@ -0,0 +1,24 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2010.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2010.07 (July)](apache-activemq-board-report-201007-july.html) + + +Community: + +* The development and user lists continue to stay active and vibrant. +* No new committers or PMC members added + +Development: + +* Working towards an ActiveMQ 5.4 release. +* Prototype broker core for ActiveMQ 6.x is showing promise + +Releases: + +* ActiveMQ-CPP 3.2.1 +* ActiveMQ-CPP 3.2.0 +* ActiveMQ-CPP 3.1.3 +* Apache.NMS API 1.3.0 +* Apache.NMS.ActiveMQ 1.3.0 +* Apache.NMS.Stomp 1.3.0 + diff --git a/apache-activemq-board-report-201010-october.md b/apache-activemq-board-report-201010-october.md new file mode 100644 index 0000000..7d72d3f --- /dev/null +++ b/apache-activemq-board-report-201010-october.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2010.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2010.10 (October)](apache-activemq-board-report-201010-october.html) + + +Community: + +* The development and user lists continue to stay active and vibrant. +* No new committers or PMC members added + +Development: + +* Development has started on the next ActiveMQ 5.5 release. +* Prototype broker core slated for ActiveMQ 6.x is still under development + +Releases: + +* Apache.NMS.ActiveMQ 1.4.1 +* Apache ActiveMQ 5.4.1 +* Apache.NMS.Stomp 1.4.0 +* Apache.NMS.ActiveMQ 1.4.0 +* ActiveMQ-CPP 3.2.3 +* Apache.NMS API 1.4.0 +* Apache ActiveMQ 5.4.0 +* Apache ActiveMQ Protocol Buffers 1.1 +* ActiveMQ-CPP 3.2.2 + diff --git a/apache-activemq-board-report-201101-january.md b/apache-activemq-board-report-201101-january.md new file mode 100644 index 0000000..afbe9f2 --- /dev/null +++ b/apache-activemq-board-report-201101-january.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2011.01 (January) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2011.01 (January)](apache-activemq-board-report-201101-january.html) + + +Community: + +* The development and user lists continue to stay active. +* No new committers or PMC members added. + +Development: + +* Development has started on the next ActiveMQ 5.5 release. +* Prototype broker core slated for ActiveMQ 6.x is still under development. +* Apache.NMS.Stomp 1.5.0 is being readied for release. + +Releases: + +* Apache ActiveMQ 5.4.2 +* Apache ActiveMQ CPP 3.2.4 +* Apache.NMS 1.5.0 + diff --git a/apache-activemq-board-report-201104-april.md b/apache-activemq-board-report-201104-april.md new file mode 100644 index 0000000..d558f39 --- /dev/null +++ b/apache-activemq-board-report-201104-april.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2011.04 (April) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2011.04 (April)](apache-activemq-board-report-201104-april.html) + + +Community: + +* The development and user lists continue to stay active. +* Alex Dean (alexd) added as a committer to the project + +Development: + +* Development has started on the next ActiveMQ 5.6 release. +* Development continues on the ActiveMQ Apollo 1.0 release. +* Development has started on the next Apache.NMS.ActiveMQ 1.5.1 release. +* ActiveMQ-CPP v3.3.0 is being prepared for release. + +Releases: + +* Apache ActiveMQ 5.5.0 +* Apache ActiveMQ Apollo 1.0 Beta 1 +* Apache ActiveMQ-CPP v3.2.5 +* Apache.NMS.ActiveMQ 1.5.0 +* Apache.NMS.Stomp 1.5.1 +* Apache.NMS.Stomp 1.5.0 + diff --git a/apache-activemq-board-report-201107-july.md b/apache-activemq-board-report-201107-july.md new file mode 100644 index 0000000..2546272 --- /dev/null +++ b/apache-activemq-board-report-201107-july.md @@ -0,0 +1,39 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2011.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2011.07 (July)](apache-activemq-board-report-201107-july.html) + + +Community: + +* The development and user lists continue to stay active. +* No new committers or PMC members added. + +Development: + +* Development has started on the next ActiveMQ 5.6 release. +* Apollo 1.0 is approaching completion. Several betas have been released and it has shown to be stable and easy to manage. The Apollo messaging engine will likely be the path used to implement ActiveMQ 6.0. +* Development has started on a new ZeroMQ provider for the NMS project. This new provider named Apache.NMS.ZMQ will be compatible with the Apache.NMS 1.5.1 API. + +Trademark / Branding Status: + +* activemq.apache.org has been updated to follow the trademark guidelines +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache Apollo 1.0 beta 4 +* Apache Apollo 1.0 beta 3 +* Apache Apollo 1.0 beta 2 +* Apache Apollo 1.0 beta 1 +* Apache.NMS.ActiveMQ 1.5.1 +* Apache ActiveMQ-CPP v3.4.0 +* Apache ActiveMQ-CPP v3.3.0 +* Apache ActiveMQ 5.5.0 +* Apache ActiveMQ-CPP v3.2.5 +* Apache.NMS.ActiveMQ 1.5.0 +* Apache.NMS.Stomp 1.5.1 +* Apache.NMS.Stomp 1.5.0 + diff --git a/apache-activemq-board-report-201110-october.md b/apache-activemq-board-report-201110-october.md new file mode 100644 index 0000000..af741f2 --- /dev/null +++ b/apache-activemq-board-report-201110-october.md @@ -0,0 +1,30 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2011.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2011.10 (October)](apache-activemq-board-report-201110-october.html) + + +Community: + +* The development and user lists continue to stay active. +* No new committers or PMC members added. + +Development: + +* A LGPL licensed artifact was discovered to be in a Apache Camel dependency which was included in the ActiveMQ 5.4.0, 5.4.1, 5.4.2 and 5.5.0 releases. We have removed the release from the Apache download server and released ActiveMQ 5.4.3 and 5.5.1 with the artifacts removed. +* ActiveMQ 5.6 is about to be released. +* Apollo 1.0 is approaching completion. Several betas have been released and it has shown to be stable and easy to manage. The Apollo messaging engine will likely be the path used to implement ActiveMQ 6.0. + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache ActiveMQ 5.5.1 +* Apache ActiveMQ 5.4.3 +* Apache Apollo 1.0 beta 5 +* Apache ActiveIO 3.1.3 + diff --git a/apache-activemq-board-report-201201-january.md b/apache-activemq-board-report-201201-january.md new file mode 100644 index 0000000..0d139bf --- /dev/null +++ b/apache-activemq-board-report-201201-january.md @@ -0,0 +1,34 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2012.01 (January) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2012.01 (January)](apache-activemq-board-report-201201-january.html) + + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* Torsten Mielke we voted in as a new committer. +* PMC members Aaron Mulder and Alan D. Cabrera changed status to emeritus + +Development: + +* ActiveMQ 5.6 is still being worked on. +* Apollo 1.0 is approaching completion. Several betas have been released and it has shown to be stable and easy to manage. The Apollo messaging engine will likely be the path used to implement ActiveMQ 6.0. + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache ActiveMQ-CPP v3.4.1 +* Apache Apollo 1.0 beta 6 +* Apache.NMS.Stomp v1.5.2 +* Apache.NMS.ActiveMQ 1.5.2 + diff --git a/apache-activemq-board-report-201204-april.md b/apache-activemq-board-report-201204-april.md new file mode 100644 index 0000000..9a7d4d2 --- /dev/null +++ b/apache-activemq-board-report-201204-april.md @@ -0,0 +1,32 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2012.04 (April) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2012.04 (April)](apache-activemq-board-report-201204-april.html) + + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* No changes in the committer or PMC membership rosters + +Development: + +* The ActiveMQ 5.6 should be getting released shortly +* Apollo 1.0 finally came out of beta and is now having regular releases + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache Apollo 1.1 +* Apache Apollo 1.0 +* Apache.NMS.ActiveMQ 1.5.3 + diff --git a/apache-activemq-board-report-201207-july.md b/apache-activemq-board-report-201207-july.md new file mode 100644 index 0000000..6f5eb6c --- /dev/null +++ b/apache-activemq-board-report-201207-july.md @@ -0,0 +1,40 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2012.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2012.07 (July)](apache-activemq-board-report-201207-july.html) + + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* No changes in the committer or PMC membership rosters + +Development: + +* It was a busy quarter in which we finally released ActiveMQ 5.6.0 along with server native client releases and a couple of Apollo releases. +* ActiveMQ 5.7 and Apollo 1.4 is under development + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache.NMS.ActiveMQ 1.5.6 +* Apache.NMS 1.5.1 +* Apache ActiveMQ-CPP v3.4.4 +* Apache ActiveMQ-CPP v3.4.3 +* Apache Apollo 1.3 +* Apache ActiveMQ 5.6.0 +* Apache.NMS.ActiveMQ 1.5.5 +* Apache ActiveMQ-CPP v3.4.2 +* Apache ActiveIO 3.1.4 +* Apache Apollo 1.2 +* Apache.NMS.ActiveMQ 1.5.4 + diff --git a/apache-activemq-board-report-201210-october.md b/apache-activemq-board-report-201210-october.md new file mode 100644 index 0000000..65b48e7 --- /dev/null +++ b/apache-activemq-board-report-201210-october.md @@ -0,0 +1,34 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2012.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2012.10 (October)](apache-activemq-board-report-201210-october.html) + + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* Christian Posta was voted in to be an ActiveMQ committer + +Development: + +* It was a busy quarter in which we released ActiveMQ 5.7.0 along with a native client releas and an Apollo releases. +* ActiveMQ 5.8 has just started development and is working towards implmenting AMQP 1.0 using the proton library from the Apache Qpid project. +* ActiveMQ-CPP 3.5.0 is in testing now and should be completed before years end. + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache ActiveMQ 5.7.0 +* Apache.NMS.Stomp 1.5.3 +* Apache Apollo 1.4 +* Apache ActiveMQ 3.4.5 in progress. + diff --git a/apache-activemq-board-report-201301-january.md b/apache-activemq-board-report-201301-january.md new file mode 100644 index 0000000..615976d --- /dev/null +++ b/apache-activemq-board-report-201301-january.md @@ -0,0 +1,31 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2013.01 (January) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2013.01 (January)](apache-activemq-board-report-201301-january.html) + + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. + +Development: + +* Migration to svnpubsub is almost complete. +* ActiveMQ 5.8 is almost ready for a release and has implemented AMQP 1.0 using the proton library from the Apache Qpid project. + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache Apollo 1.5 +* Apache ActiveMQ CPP 3.5.0 +* Apache ActiveMQ CPP 3.4.5 + diff --git a/apache-activemq-board-report-201304-april.md b/apache-activemq-board-report-201304-april.md new file mode 100644 index 0000000..56601cf --- /dev/null +++ b/apache-activemq-board-report-201304-april.md @@ -0,0 +1,31 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2013.04 (April) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2013.04 (April)](apache-activemq-board-report-201304-april.html) + + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. + +Development: + +* Migration to svnpubsub was completed. +* Development on ActiveMQ 5.9 is underway + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache ActiveMQ-CPP 3.6.0 (Mar 7/2013) +* Apache Apollo 1.6 (Feb 25/2013) +* Apache ActiveMQ 5.8.0 (Feb 11/2013) + diff --git a/apache-activemq-board-report-201307-july.md b/apache-activemq-board-report-201307-july.md new file mode 100644 index 0000000..90f3fa0 --- /dev/null +++ b/apache-activemq-board-report-201307-july.md @@ -0,0 +1,31 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2013.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2013.07 (July)](apache-activemq-board-report-201307-july.html) + + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* Developers voted to switch ActiveMQ from SVN to Git. +* Christian Posta was voted in as a PMC member +* Several ActiveMQ related presentations were done at CamelOne. + +Development: + +* Development on ActiveMQ 5.9 is underway + +Trademark / Branding Status: + +* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache.NMS.ActiveMQ 1.6.0 +* Apache.NMS API 1.6.0 +* ActiveMQ-CPP v3.7.0 + diff --git a/apache-activemq-board-report-201310-october.md b/apache-activemq-board-report-201310-october.md new file mode 100644 index 0000000..bf9d6fb --- /dev/null +++ b/apache-activemq-board-report-201310-october.md @@ -0,0 +1,28 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2013.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2013.10 (October)](apache-activemq-board-report-201310-october.html) + + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* Most SCM roots in ActiveMQ have switched from SVN to Git. + +Development: + +* It's been a busy quarter preparing for the The ActiveMQ 5.9 release. It should be done soon! + +Trademark / Branding Status: + +* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* ActiveMQ-CPP v3.8.1 - Sep 19th 2013 +* ActiveMQ-CPP v3.8.0 - Sep 6th 2013 + diff --git a/apache-activemq-board-report-201401-january.md b/apache-activemq-board-report-201401-january.md new file mode 100644 index 0000000..2a3ede0 --- /dev/null +++ b/apache-activemq-board-report-201401-january.md @@ -0,0 +1,28 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2014.01 (January) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2014.01 (January)](apache-activemq-board-report-201401-january.html) + + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +* Kevin Earls, Jean-Baptiste Onofre, and Matt Pavlovich became ActiveMQ committers. +\* Debate erupted over the inclusion of the hawt.io web console in the ActiveMQ 5.9 release. A resolution is being worked on. + +Development: +\* A follow up ActiveMQ 5.9.1 release is being prepared. + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: + +\* Apache.NMS.ActiveMQ 1.6.2 - 12/22/13 +\* Apache ActiveMQ-CPP v3.8.2 - 12/9/13 +\* Apache.NMS.Stomp 1.5.4 - 10/24/13 +\* Apache ActiveMQ 5.9.0 - 10/21/13 +\* Apache.NMS.ActiveMQ 1.6.1 - 10/19/13 + diff --git a/apache-activemq-board-report-201404-april.md b/apache-activemq-board-report-201404-april.md new file mode 100644 index 0000000..aa8bc61 --- /dev/null +++ b/apache-activemq-board-report-201404-april.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2014.04 (April) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2014.04 (April)](apache-activemq-board-report-201404-april.html) + + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* The Debate over the inclusion of the hawt.io web console in the ActiveMQ 5.9 release had been resolved. It has been removed in the 5.9.1 release and the upcoming 5.10. + +Development: +\* An ActiveMQ 5.10 release is being prepared. +\* The project moved to the new svnpubsub way to publish distros (INFRA-7539) + +Trademark / Branding Status: + +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: + +\* Apache ActiveMQ 5.9.1 - 4/4/14 +\* Apache Apollo 1.7 - 3/10/14 + diff --git a/apache-activemq-board-report-201407-july.md b/apache-activemq-board-report-201407-july.md new file mode 100644 index 0000000..c053a5c --- /dev/null +++ b/apache-activemq-board-report-201407-july.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2014.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2014.07 (July)](apache-activemq-board-report-201407-july.html) + + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* Dhiraj Bokde became a committer 6/6/14 + +Development: +\* Development on ActiveMQ 5.11 has started + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: +\* Apache ActiveMQ 5.10.0 - 6/10/14 + diff --git a/apache-activemq-board-report-201410-october.md b/apache-activemq-board-report-201410-october.md new file mode 100644 index 0000000..89125a3 --- /dev/null +++ b/apache-activemq-board-report-201410-october.md @@ -0,0 +1,29 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2014.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2014.10 (October)](apache-activemq-board-report-201410-october.html) + + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* Dan Kulp became a committer 7/21/14 +\* HornetQ project has started talks about donating their codebase to the ASF.  The ActiveMQ project is shepherding the ip clearance and is working towards integrating them into the project. +\* HornetQ code donation accepted by ActiveMQ Project - 9/30/14 +\* 5 HornetQ committers (Clebert Suconic, Andy Taylor, Justin Bertram, Youg Hao Gao, Martyn Taylor) added as committers to ActiveMQ Project - 9/30/14  + +Development: +\* Development on ActiveMQ 5.11 is in progress. + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: +\* Apache ActiveMQ-CPP v3.8.3 \- 7/17/14 +\* Apache.NMS.ActiveMQ 1.6.3 - 7/21/14 +\* Apache.NMS.ActiveMQ 1.6.4 - 9/12/14 + + + diff --git a/apache-activemq-board-report-201502-february.md b/apache-activemq-board-report-201502-february.md new file mode 100644 index 0000000..affdc18 --- /dev/null +++ b/apache-activemq-board-report-201502-february.md @@ -0,0 +1,31 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2015.02 (February) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.02 (February)](apache-activemq-board-report-201502-february.html) + + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* Robbie Gemmell became a committer 12/9/14 +\* Emeritus PMC members removed. +\* Arthur Naseef joined the ActiveMQ PMC +\* Dan Kulp joined the ActiveMQ PMC   + +Development: +\* trunk branch renamed to master to follow git naming conventions. +\* Development on ActiveMQ 5.12 is in progress. +\* Development on ActiveMQ 6.0 is in progress. + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: +\* Apache.NMS 1.7.0 - 1/8/15 +\* Apache.NMS.ActiveMQ 1.7.0 - 1/16/15 +\* Apache ActiveMQ 5.10.1 - 1/20/15 +* Apache ActiveMQ 5.11.0 - 2/3/15 +\* Apache Apollo 1.7.1 - 2/3/15 + diff --git a/apache-activemq-board-report-201504-april.md b/apache-activemq-board-report-201504-april.md new file mode 100644 index 0000000..8f2bedc --- /dev/null +++ b/apache-activemq-board-report-201504-april.md @@ -0,0 +1,85 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2015.04 (April) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.04 (April)](apache-activemq-board-report-201504-april.html) + + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* Several ActiveMQ based presentation were given at Apachecon NA. +\* The ActiveMQ community has voted to name the HortnetQ code donation ActiveMQ Artemis. +\* Apache board members requested a special report to address what the plan is of the hornetq code donation.  There were some specific question what were directed at the PMC: + +    Q. Red Hat has a product, called HornetQ, which includes a website; +         branding, etc.  [http://hornetq.jboss.org/](http://hornetq.jboss.org/) + +    A. ActiveMQ PMC does not intend to use the HornetQ branding in any code, +        docs or website. The code donation has been updated to remove such +        references. The HornetQ open source project is now considered a legacy + project and the code is no longer maintained as the open source project + HornetQ. The ActiveMQ community is beginning to work together to  +        develop a plan to take the donated code base forward and to develop + community around this code base.  + +    Q. The ActiveMQ PMC needs to deliver a plan for: +A.  Apache ActiveMQ has multiple products with multiple versions: + a.  ActiveMQ - (version 5.x.x) + b.  ActiveMQ Artemis \- (version 1.x.x) + +          This means that we are not yet ready to declare that ActiveMQ Artemis is the successor to ActiveMQ 5.x.  We will wait until the product matures to make that decision. + +Q. The current chair has been the chair for \*many\* years and based on the +current status and issues in the community, I would strongly suggest having +a plan for potentially replacing the chair of the project. + +    A. The PMC agrees. + +\* The PMC has voted to give the code donation a code name so that it is not referred to as HornetQ anymore within ActiveMQ. +\* IP clearance for the code donation is almost complete: [http://incubator.apache.org/ip-clearance/hornetq.html +](http://incubator.apache.org/ip-clearance/hornetq.html)* At least one member of the PMC, as well as several members of the community, feels strongly that disagreements and concerns are not getting addressed.  They would rather have Artemis go through the incubator.  +\* PMC is in discussions looking for ways to increase community diversity +\* PMC has voted to appoint Bruce Snyder as the ActiveMQ PMC chair.  The PMC requests that the board approve the the following resolution: + +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- + +WHEREAS, the Board of Directors heretofore appointed Hiram Chirino to +the office of Vice President, Apache ActiveMQ, and + +WHEREAS, the Board of Directors is in receipt of the resignation +of Hiram Chirino from the office of Vice President, Apache +ActiveMQ, and + +WHEREAS, the Project Management Committee of the Apache ActiveMQ +project has chosen by vote to recommend Bruce Snyder as the Successor +to the post; + +NOW, THEREFORE, BE IT RESOLVED, that Hiram Chirino is +relieved and discharged from the duties and responsibilities of +the office of Vice President, Apache ActiveMQ, and + +BE IT FURTHER RESOLVED, that Bruce Snyder be and hereby +is appointed to the office of Vice President, Apache ActiveMQ, to +serve in accordance with and subject to the direction of the +Board of Directors and the Bylaws of the Foundation until +death, resignation, retirement, removal or disqualification, or +until a successor is appointed. + +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- + +Development: +\* Development on ActiveMQ 5.12 is in progress. +\* Development on ActiveMQ Artemis is in progress. + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: +* Apache ActiveMQ 5.11.1 - 2/17/15 +* Apache ActiveMQ 5.10.2 - 2/17/15 +\* Apache ActiveMQ-CPP v3.8.4 - 2/19/15  + + + diff --git a/apache-activemq-board-report-201505-may.md b/apache-activemq-board-report-201505-may.md new file mode 100644 index 0000000..607e536 --- /dev/null +++ b/apache-activemq-board-report-201505-may.md @@ -0,0 +1,169 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2015.05 (May) + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.05 (May)](apache-activemq-board-report-201505-may.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Icon + +**The May ASF board meeting already took place this week, so we will need to publish this report in time for next month's meeting. ** + +**TLP Description:** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Community: ** + +* The development and user lists continue to remain active +\* Two resignations from the PMC, one suspended his request to resign and other is currently reconsidering  +* New mailing list created for JIRA issues, git pull requests, etc. named [issues@activemq.apache.org](mailto:issues@activemq.apache.org) +\* Donated code base renamed to ActiveMQ Artemis (based on a vote) +\* Marc Schöchlin voted in as a committer on 16 May 2015 +* Jeff Genender voted in as a committer on 16 May 2015 + +**Development: ** + +* Development on ActiveMQ 5.12 is in progress and remains very active +* Development on ActiveMQ Artemis 1.0.0 RC2 is in progress and is very active +\* Development on ActiveMQ Apollo seems to have stalled + +**Trademark / Branding Status:** + +* Sub-projects need to be reviewed to make sure they are also compliant with trademark policies +\* Documentation also being reviewed for compliance + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://javabot.evanchooly.com/logs/%23apache-activemq/today) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-201506-june.md b/apache-activemq-board-report-201506-june.md new file mode 100644 index 0000000..5ed2e25 --- /dev/null +++ b/apache-activemq-board-report-201506-june.md @@ -0,0 +1,38 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2015.06 (June) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.06 (June)](apache-activemq-board-report-201506-june.html) + + +**The May ASF board meeting already took place this week, so we will need to publish this report in time for next month's meeting. ** + +**TLP Description:** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Community: ** + +* The development and user lists continue to remain active +\* Two resignations from the PMC, but upon further discussion and consideration, both have suspended the request +* New mailing list created for JIRA issues, git pull requests, etc. named [issues@activemq.apache.org](mailto:issues@activemq.apache.org) +\* Donated code base renamed to ActiveMQ Artemis (based on a vote) +\* Marc Schöchlin voted in as a committer on 16 May 2015 +* Jeff Genender voted in as a committer on 16 May 2015 +* Developing guidelines on what it takes to become a committer on the ActiveMQ project  +\* Discussions have started around some of the differences between the processes of the ActiveMQ community and the Artemis developer workflow to get them aligned with the expectations of the entire community. + +**Development: ** + +* Development on ActiveMQ 5.12 is in progress and remains very active +* Development on ActiveMQ Artemis 1.0.1 is in progress and is active +\* Development on ActiveMQ Apollo seems to have stalled + +**Trademark / Branding Status:** + +* Sub-projects need to be reviewed to make sure they are also compliant with trademark policies +\* Documentation also being reviewed for compliance + +**Releases:** + +\* ActiveMQ Artemis 1.0.0 released on May 29, 2015 +\* ActiveMQ 5.10.2 and ActiveMQ 5.11.1 released on February 17, 2015 + diff --git a/apache-activemq-board-report-201507-july.md b/apache-activemq-board-report-201507-july.md new file mode 100644 index 0000000..cfad861 --- /dev/null +++ b/apache-activemq-board-report-201507-july.md @@ -0,0 +1,28 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2015.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.07 (July)](apache-activemq-board-report-201507-july.html) + + +**TLP Description:** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Community: ** + +* The development and user lists continue to remain active +\* Kevin Burton voted in as a committer on 27 June 2015 + +**Development: ** + +* Development on ActiveMQ 5.12 is in progress and remains very active +* Development on ActiveMQ Artemis 1.0.1 is in progress and is active + +**Trademark / Branding Status:** + +* Sub-projects need to be reviewed to make sure they are also compliant with trademark policies +\* Documentation also being reviewed for compliance + +**Releases:** + +\* No releases this month + diff --git a/apache-activemq-board-report-201508-august.md b/apache-activemq-board-report-201508-august.md new file mode 100644 index 0000000..cee5384 --- /dev/null +++ b/apache-activemq-board-report-201508-august.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2015.08 (August) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.08 (August)](apache-activemq-board-report-201508-august.html) + + +**TLP Description:** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Report: ** + +* HornetQ IP clearance has been completed 100%  + * HornetQ code base migrated to ActiveMQ Artemis + * Eliminated all HornetQ references  + * The code base is now 100% an ActiveMQ project +* Discussion around development methodology differences between the 5.x code base and the ActiveMQ Artemis + * Garnered fairly active participation from many committers + * It did result in a good description of the commit then review process that was agreed upon on the mailing list which was then documented at **[http://s.apache.org/zD7](http://s.apache.org/zD7)** + * There were also good discussions around code formatting setups to make working on the various codebases within ActiveMQ more consistent and easier to pull ideas and code back and forth +* ActiveMQ Artemis code base is now receiving contributions from a wider scope of people (beyond just the original HornetQ contributors) + * Long standing committers from the 5.x project are starting to contribute to ActiveMQ Artemis +* Active collaboration between 5.x development and ActiveMQ Artemis development is now taking place  + * ActiveMQ 5.x features actively being migrated to Artemis  + * Test framework from 5.x migrated ActiveMQ Artemis  + * Migration of the MQTT protocol from 5.x to ActiveMQ Artemis  + * Also discussion is taking place to improve the the 5.x code base with regard multi-protocol detection on a single socket based on ideas from Artemis and Apollo +* PMC is actively working toward diversifying the community by inviting more committers to the project + * Christopher Shannon was added this month + * Three others added since May 2015 +* Artemis 1.0 was successfully released  + * Work is on-going for the 1.0.1 release +* Back in the April report, one PMC member voiced the following concern: + _"At least one member of the PMC, as well as several members of the community, feels strongly that disagreements and concerns are not getting addressed in a manner that will move the community toward consensus." _ + * While this comment is true, the community member who was raising these concerns has gone silent +* Initiated discussion to address past issues from some community members as instructed by the board + * Result so far is zero replies + diff --git a/apache-activemq-board-report-201510-october.md b/apache-activemq-board-report-201510-october.md new file mode 100644 index 0000000..3704321 --- /dev/null +++ b/apache-activemq-board-report-201510-october.md @@ -0,0 +1,75 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2015.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.10 (October)](apache-activemq-board-report-201510-october.html) + + +**TLP Description:** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Activity: ** + +* ActiveMQ 5 saw two new releases this quarter one major release and an additional bug fix release. + * ActiveMQ 5.11.2 was released on Mon Aug 10 2015 + * ActiveMQ 5.12.0 was released on Thu Aug 13 2015 +* Some discussion on the mailing list around when to release ActiveMQ 5.12.1 and what fixes should be included.  +* The ActiveMQ native clients also saw some releases this quarter and continue to see active development. + * ActiveMQ-CPP 3.9.0 was released on Sat Aug 15 2015 + * The Apache.NMS API  v1.7.1 was released on Fri Sep 04 2015. + * The Apache.NMS.ActiveMQ client library v1.7.1 was released on Mon Oct 05 2015. +* The Artemis project continues to see some very active development and discussion on the mailing lists. + * ActiveMQ Artemis 1.1.0 was released on Wed Sep 23 2015 + +**Health Report:** + +* As the number and scope of the recent releases shows, there is a lot of development occurring throughout all of the ActiveMQ products  +* Many bugs are being raised, but they are being looked at fairly promptly  +* There were a couple of bugs raised that resulted in good “cross team” discussions as to whether the bug was, indeed, a bug or a desired change in behavior +* While some of these discussions did hold up the creations of a patch release (5.12.1), it was important for the team to reach a consensus on the outcome and plans are starting to finish the release + +**Issues:** + +* There are no issues requiring board attention at this time + +**PMC changes:** + +* Currently 20 PMC members.  +* No new PMC members added in the last 3 months  + +**LDAP changes:** + +* Currently 54 committers and 20 committee group members.  +* No new committee group members added in the last 3 months  +* Christopher L. Shannon was added as a committer on Thu Jul 30 2015  + +**Releases:** + +* ActiveMQ-CPP 3.9.0 was released on Fri Aug 14 2015  +* ActiveMQ Artemis 1.1.0 was released on Wed Sep 23 2015  +* 5.11.2 was released on Mon Aug 10 2015  +* activemq-cpp-3.9.0 was released on Sat Aug 15 2015  +* 5.12.0 was released on Wed Aug 12 2015  +* Apache.NMS.ActiveMQ v1.7.1 was released on Sun Oct 04 2015  +* Apache.NMS v1.7.1 was released on Thu Sep 03 2015  + +**Mailing list activity:** + +* users@activemq.apache.org:  + * 721 subscribers (up 20 in the last 3 months):  + * 727 emails sent to list (815 in previous quarter)  +* dev@activemq.apache.org:  + * 336 subscribers (up 9 in the last 3 months):  + * 777 emails sent to list (1557 in previous quarter)  +* issues@activemq.apache.org:  + * 27 subscribers (up 6 in the last 3 months):  + * 1807 emails sent to list (1357 in previous quarter)  +* announce@activemq.apache.org:  + * 8 subscribers (up 0 in the last 3 months)  + +**JIRA activity:** + +* 248 JIRA tickets created in the last 3 months  +* 209 JIRA tickets closed/resolved in the last 3 months + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-2016-05-may.md b/apache-activemq-board-report-2016-05-may.md new file mode 100644 index 0000000..ad86bd7 --- /dev/null +++ b/apache-activemq-board-report-2016-05-may.md @@ -0,0 +1,39 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2016-05 (May) + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2016.04 (April)](apache-activemq-board-report-201604-april.html) > [Apache ActiveMQ Board Report - 2016-05 (May)](apache-activemq-board-report-2016-05-may.html) + + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Past Activity** + +* This report is being filed based on a request from some board members during the April 2016 meeting. The request is to recap the results of challenges within the ActiveMQ project during the 2014-2015 time frame + + * The [April 2015 ActiveMQ Board Report](https://mail-search.apache.org/members/private-arch/board/201504.mbox/%3CCAGZ-RDL96UCbTzwsLznEBQykBHNhj_usw95VjeJ8cEiF4gef=A@mail.gmail.com%3E) included the following activities: + * Bruce Snyder elected to the PMC chair position + * HornetQ code donation accepted + * The [June 2015 ActiveMQ Board Report](apache-activemq-board-report-201506-june.html) included the following activities: + * Donated code base renamed to ActiveMQ Artemis (based on a vote)  + * The HornetQ code donation was officially renamed to ActiveMQ Artemis + * Marc Schöchlin voted in as a committer + * Jeff Genender voted in as a committer + + * On 7 August, 2015, [Hadrian Zbarcea resigned the ActiveMQ PMC](https://mail-search.apache.org/members/private-arch/board/201508.mbox/%3C55C52714.4090400@gmail.com%3E) + * Unfortunately this activity was not noted in the [August 2015 ActiveMQ Board Report](apache-activemq-board-report-201508-august.html) + * I, Bruce Snyder, was still new to the position of PMC chair and failed to add this item to the board report + * The [August 2015 ActiveMQ Board Report](apache-activemq-board-report-201508-august.html) included the following activities: + * Christopher Shannon was added to the PMC + * The [February 2016 ActiveMQ Board Report](apache-activemq-board-report-20162-february.html) included the following activities: + * Christopher Shannon was added to the PMC on Sun Jan 24 2016 + + * Jeff Genender was added to the PMC on Sun Jan 24 2016 + +* Regarding the overarching question that was asked about the turmoil within the ActiveMQ project in 2014-2015 timeframe: + * Neither were there any disagreements in the second half of 2015 nor have there been any disagreements in 2016 + +**Current Activity** + +* CHANGE ME + diff --git a/apache-activemq-board-report-201602-february.md b/apache-activemq-board-report-201602-february.md new file mode 100644 index 0000000..15a45d1 --- /dev/null +++ b/apache-activemq-board-report-201602-february.md @@ -0,0 +1,88 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2016.02 (February) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2016.02 (February)](apache-activemq-board-report-201602-february.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Activity** + +* Apache.NMS added a new provider implementation **Apache.NMS.XMS** for connecting to IBM WebSphere MQSeries.  This was contributed by the user community, and based on the existing Apache.NMS provider implementation for TIBCO EMS.  There are now eight NMS provider implementations. + +* ActiveMQ 5.x added several new features in version 5.13.0 + * There is now support for automatic wire protocol detection (OpenWire, STOMP, MQTT, and AMQP) using the new [auto transport](auto.html). + * Improved metrics as the broker now keeps track of the memory size of pending messages. + * A pure Java API for runtime configuration changes to the broker.  Previously only changes could be done in XML. + * There is now support for [dynamic network demand](networks-of-brokers.html) based on the existence of Virtual Consumers. + * Support was added for sending scheduled message using message annotations when using AMQP. + * The ability to dynamically shrink and regrow the store size at runtime based on available disk space. + +**PMC changes** + +* Currently 20 PMC members + +* New PMC members  + + * Christopher Shannon was added to the PMC on Sun Jan 24 2016 + + * Jeff Genender was added to the PMC on Sun Jan 24 2016 + + +**Committer base changes** + +* Currently 56 committers + +* New commmitters + + * Matt Richard Hogstrom was added as a committer on Thu Jan 28 2016 (not sure why he was added, got this info from [reporter.apache.org](http://reporter.apache.org)) + + * John Robert Sisson was added as a committer on Thu Jan 28 2016 (not sure why he was added, got this info from [reporter.apache.org](http://reporter.apache.org/)) + + +**Releases** + +* Activemq-CPP v3.9.1 was released on Thu Dec 03 2015 + +* Activemq-CPP v3.9.2 was released on Thu Feb 08 2016 + +* 5.11.3 was released on Sun Nov 01 2015 + +* 5.12.1 was released on Wed Oct 14 2015 + +* 5.12.2 was released on Sun Jan 10 2016 + +* 5.13.0 was released on Wed Dec 02 2015 + +* 5.13.1 was released on Fri Feb 05 2016 +* ActiveMQ Artemis 1.2.0 was released on Thu Jan 07 2016 + + +**Mailing list activity** + +* [users@activemq.apache.org](mailto:users@activemq.apache.org) + + * 716 subscribers (down -5 in the last 3 months) + * 816 emails sent to list (712 in previous quarter) +* [dev@activemq.apache.org](mailto:dev@activemq.apache.org) + + * 344 subscribers (up 7 in the last 3 months) + * 837 emails sent to list (765 in previous quarter) +* [issues@activemq.apache.org](mailto:issues@activemq.apache.org) + + * 35 subscribers (up 4 in the last 3 months) + * 2045 emails sent to list (1763 in previous quarter) +* [announce@activemq.apache.org](mailto:announce@activemq.apache.org) + + * 9 subscribers (up 1 in the last 3 months) + +**JIRA activity** + +* 233 JIRA tickets created in the last 3 months + +* 257 JIRA tickets closed/resolved in the last 3 months + + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-201604-april.md b/apache-activemq-board-report-201604-april.md new file mode 100644 index 0000000..1d823da --- /dev/null +++ b/apache-activemq-board-report-201604-april.md @@ -0,0 +1,65 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2016.04 (April) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2016.04 (April)](apache-activemq-board-report-201604-april.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Activity** + +* Apache ActiveMQ Artemis has been working towards adding ActiveMQ 5.x equivalent features and client compatibility improvements: + + * The OpenWire protocol module has been completely refactored, improvements include: + + * Improved message encoding support with increased performance + * Cluster connections can now be configured using ActiveMQ 5.x style URI + + * Equivalent implementations of all ActiveMQ 5.x JAAS modules are now available in Artemis + + * Artemis has initial support for database backed Journal. + + * Various improvements and bug fixes to: + * HA Replication, STOMP protocol module, File Journal Storage. + + +**PMC changes** + +* Currently 20 PMC members + + +**Committer base changes** + +* Currently 56 committers + + +**Releases** + +* **5.13.2 was released on** Fri Mar 04 2016 + +* **AcitveMQ-CPP v3.9.3** on Thu Mar 31 2016 +* **Apache.NMS.ActiveMQ v1.7.2** on Thu Apr 7 2016 + +**Mailing list activity** + +* [users@activemq.apache.org](mailto:users@activemq.apache.org) + + * TODO +* [dev@activemq.apache.org](mailto:dev@activemq.apache.org) + + * TODO +* [issues@activemq.apache.org](mailto:issues@activemq.apache.org) + + * TODO +* [announce@activemq.apache.org](mailto:announce@activemq.apache.org) + + * TODO + +**JIRA activity** + +* TODO + + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-201605-may.md b/apache-activemq-board-report-201605-may.md new file mode 100644 index 0000000..42e569a --- /dev/null +++ b/apache-activemq-board-report-201605-may.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2016.05 (May) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2016.05 (May)](apache-activemq-board-report-201605-may.html) + + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Past Activity** + +* This report is being filed based on a request from some board members during the April 2016 meeting. The request is to recap the results of challenges within the ActiveMQ project during the 2014-2015 time frame + + * The [April 2015 ActiveMQ Board Report](https://mail-search.apache.org/members/private-arch/board/201504.mbox/%3CCAGZ-RDL96UCbTzwsLznEBQykBHNhj_usw95VjeJ8cEiF4gef=A@mail.gmail.com%3E) included the following activities: + * Bruce Snyder elected to the PMC chair position + * HornetQ code donation accepted + * The [June 2015 ActiveMQ Board Report](apache-activemq-board-report-201506-june.html) included the following activities: + * Donated code base renamed to ActiveMQ Artemis (based on a vote)  + * The HornetQ code donation was officially renamed to ActiveMQ Artemis + * Marc Schöchlin voted in as a committer + * Jeff Genender voted in as a committer + + * On 7 August, 2015, [Hadrian Zbarcea resigned the ActiveMQ PMC](https://mail-search.apache.org/members/private-arch/board/201508.mbox/%3C55C52714.4090400@gmail.com%3E) + * Unfortunately this activity was not noted in the [August 2015 ActiveMQ Board Report](apache-activemq-board-report-201508-august.html) + * I, Bruce Snyder, was still new to the position of PMC chair and failed to add this item to the board report + * The [August 2015 ActiveMQ Board Report](apache-activemq-board-report-201508-august.html) included the following activities: + * Christopher Shannon was added to the PMC + * The [February 2016 ActiveMQ Board Report](apache-activemq-board-report-201602-february.html) included the following activities: + * Christopher Shannon was added to the PMC on Sun Jan 24 2016 + + * Jeff Genender was added to the PMC on Sun Jan 24 2016 + +* Regarding the overarching question that was asked about the turmoil within the ActiveMQ project in 2014-2015 timeframe: + * Neither were there any disagreements in the second half of 2015 nor have there been any disagreements in 2016 + +**Current Activity** + +* CHANGE ME + diff --git a/apache-activemq-board-report-201607-july.md b/apache-activemq-board-report-201607-july.md new file mode 100644 index 0000000..ceb580b --- /dev/null +++ b/apache-activemq-board-report-201607-july.md @@ -0,0 +1,93 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2016.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2016.07 (July)](apache-activemq-board-report-201607-july.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Activity** + +* The ActiveMQ Broker continues to see continued bug fixes and feature additions + * Support added for AMQP over WebSockets added for inclusion in 5.14.0 + * Improvements to the KahaDB message store allowing for better store clean up. + * Important fixes continue to be ported to the 5.13.x branch and a new 5.13.4 release is nearing release readiness. + +* ActiveMQ Artemis continues working towards adding ActiveMQ 5.x equivalent features, client compatibility and improvements: + +* The OpenWire protocol implementation is now feature complete + +* The Database journal has been improved and support added for: + + * MySQL + + * PostgreSQL + +* Database storage for large messages has been added + +* HA using replication has been heavily tested and had several improvements + +* The AMQP protocol has had a lot of attention including many fixes and support for AMQP link drain and subscription addresses + +* MQTT protocol has been updated to support interceptors and cross protocol communication + +* Dual-authentication is now supported so SSL and non-SSL connections can be authenticated by different JAAS login modules. + +* The broker's SSL keystores can now be reloaded on demand without stopping the broker. + +* JMS topics are now auto-created by default when a producer sends a message or a client subscribes. + +* The name of the authenticated user can now be automatically added to the messages it sends. + +* STOMP clients can now have their authentication and authorization based on their SSL certificate. + +* Lots of smaller bug fixes and performance improvements + + + + +**PMC changes** + +* Currently 23 PMC members +* Martyn Taylor was added to the PMC on Sun Jul 10 2016 +* Last PMC addition: Sun Jul 10 2016 (Martyn Taylor) + + +**Committer base changes** + +* Currently 56 committers +* No new committers added in the last 3 months +* Last committer addition was Matt Richard Hogstrom at Thu Jan 28 2016 + + +**Releases** + +* 5.13.3 was released on Sun May 01 2016 +* ActiveMQ Artemis 1.3.0 was released on Tue Jun 14 2016 +* Apache.NMS.ActiveMQ v1.7.2 was released on Wed Apr 06 2016 + +**Mailing list activity** + +* [users@activemq.apache.org](mailto:users@activemq.apache.org) + * 741 subscribers (up 14 in the last 3 months) + * 638 emails sent to list (837 in previous quarter) + +* [dev@activemq.apache.org](mailto:dev@activemq.apache.org) + * 367 subscribers (up 14 in the last 3 months) + * 909 emails sent to list (653 in previous quarter) + +* [announce@activemq.apache.org](mailto:announce@activemq.apache.org) + * [](mailto:announce@activemq.apache.org)9 subscribers (up 0 in the last 3 months) + +* [issues@activemq.apache.org](mailto:issues@activemq.apache.org) + * 43 subscribers (up 3 in the last 3 months) + * 2159 emails sent to list (1698 in previous quarter) + +**JIRA activity** + +* 261 JIRA tickets created in the last 3 months +* 262 JIRA tickets closed/resolved in the last 3 months + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-20161-january.md b/apache-activemq-board-report-20161-january.md new file mode 100644 index 0000000..8650e51 --- /dev/null +++ b/apache-activemq-board-report-20161-january.md @@ -0,0 +1,83 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2016.1 (January) + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.10 (October)](apache-activemq-board-report-201510-october.html) > [Apache ActiveMQ Board Report - 2016.1 (January)](apache-activemq-board-report-20161-january.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Activity** + +* Apache.NMS added a new provider implementation **Apache.NMS.XMS** for connecting to IBM WebSphere MQSeries.  This was contributed by the user community, and based on the existing Apache.NMS provider implementation for TIBCO EMS.  There are now eight NMS provider implementations. + +* ActiveMQ 5.x added several new features in version 5.13.0 + * There is now support for automatic wire protocol detection (OpenWire, STOMP, MQTT, and AMQP) using the new [auto transport](auto.html). + * Improved metrics as the broker now keeps track of the memory size of pending messages. + * A pure Java API for runtime configuration changes to the broker.  Previously only changes could be done in XML. + * There is now support for [dynamic network demand](networks-of-brokers.html) based on the existence of Virtual Consumers. + * Support was added for sending scheduled message using message annotations when using AMQP. + * The ability to dynamically shrink and regrow the store size at runtime based on available disk space. + +**PMC changes** + +* Currently 20 PMC members + +* No new PMC members added in the last 3 months + +* Last PMC addition was Arthur Naseef on Mon Feb 09 2015 + + +**Committer base changes** + +* Currently 54 committers + +* No new committers added in the last 3 months + +* Last committer addition was Christopher L. Shannon at Thu Jul 30 2015 + + +**Releases** + +* Activemq-CPP v3.9.1 was released on Thu Dec 03 2015 + +* 5.11.3 was released on Sun Nov 01 2015 + +* 5.12.1 was released on Wed Oct 14 2015 + +* 5.12.2 was released on Sun Jan 10 2016 + +* 5.13.0 was released on Wed Dec 02 2015 + +* ActiveMQ Artemis 1.2.0 was released on Thu Jan 07 2016 + + +**Mailing list activity** + +* [users@activemq.apache.org](mailto:users@activemq.apache.org) + + * 716 subscribers (down -5 in the last 3 months) + * 815 emails sent to list (712 in previous quarter) +* [dev@activemq.apache.org](mailto:dev@activemq.apache.org) + + * 341 subscribers (up 7 in the last 3 months) + * 742 emails sent to list (765 in previous quarter) +* [issues@activemq.apache.org](mailto:issues@activemq.apache.org) + + * 31 subscribers (up 4 in the last 3 months) + * 1890 emails sent to list (1763 in previous quarter) +* [announce@activemq.apache.org](mailto:announce@activemq.apache.org) + + * 9 subscribers (up 1 in the last 3 months) + +**JIRA activity** + +* 214 JIRA tickets created in the last 3 months + +* 227 JIRA tickets closed/resolved in the last 3 months + + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-201610-october.md b/apache-activemq-board-report-201610-october.md new file mode 100644 index 0000000..9a22465 --- /dev/null +++ b/apache-activemq-board-report-201610-october.md @@ -0,0 +1,62 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2016.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2016.10 (October)](apache-activemq-board-report-201610-october.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 2.0, AMQP 1.0, MQTT, Stomp and REST. + +**Activity** + +* Overall, the project health is very stable. No disgreements in the community and the folks on the project are working together on both ActiveMQ and Artemis. The ActiveMQ code base continues to grow and improve and it is pushing releases more frequently as was the plan. Activity with the Artemis code base continues its successful march toward full compatibility with ActiveMQ. + +* ActiveMQ + * Active Discussions around a new web console + * The project is a little stuck on the docker issues pending infra and legal resolution + +* ActiveMQ Artemis + + * Apache Artemis 1.4.0 Released + + * AMQP 1.0 implementation improvements + + * Local transaction support improved + + * Multi-session-per-tx and multi-tx-per-session capabilities support + + * Support for OASIS AMQP JMS mappings for JMS 1.1 over AMQP 1.0 added + + * Major refactor of the AMQP implementation making it simpler and easier to understand + + * \[CVE-2016-4978\] Apache ActiveMQ Artemis: Deserialization of untrusted input vunerability. + + * Fixed in Apache Artemis 1.4.0 + + * Announcement made + + * Support for setting global limits (total memory and disk utilization) added + + * Basic Java EE CDI integration added + + +**PMC changes** + +* Currently 23 PMC members +* No new PMC members added in the last 3 months +* Last PMC addition was Martyn Taylor on Fri Jul 08 2016  + +**Committer base changes** + +* Currently 57 committers +* John D. Ament was added as a committer on Mon Aug 08 2016 + +**Releases** + +* 5.13.4 was released on Mon Jul 18 2016 +* 5.14.0 was released on Thu Aug 04 2016 +* 5.14.1 was released on Thu Sep 29 2016 +* ActiveMQ Artemis 1.4.0 was released on Mon Sep 12 2016 + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-20162-february.md b/apache-activemq-board-report-20162-february.md new file mode 100644 index 0000000..f5c7016 --- /dev/null +++ b/apache-activemq-board-report-20162-february.md @@ -0,0 +1,90 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2016.2 (February) + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2015.10 (October)](apache-activemq-board-report-201510-october.html) > [Apache ActiveMQ Board Report - 2016.2 (February)](apache-activemq-board-report-20162-february.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Activity** + +* Apache.NMS added a new provider implementation **Apache.NMS.XMS** for connecting to IBM WebSphere MQSeries.  This was contributed by the user community, and based on the existing Apache.NMS provider implementation for TIBCO EMS.  There are now eight NMS provider implementations. + +* ActiveMQ 5.x added several new features in version 5.13.0 + * There is now support for automatic wire protocol detection (OpenWire, STOMP, MQTT, and AMQP) using the new [auto transport](auto.html). + * Improved metrics as the broker now keeps track of the memory size of pending messages. + * A pure Java API for runtime configuration changes to the broker.  Previously only changes could be done in XML. + * There is now support for [dynamic network demand](networks-of-brokers.html) based on the existence of Virtual Consumers. + * Support was added for sending scheduled message using message annotations when using AMQP. + * The ability to dynamically shrink and regrow the store size at runtime based on available disk space. + +**PMC changes** + +* Currently 20 PMC members + +* New PMC members  + + * Christopher Shannon was added to the PMC on Sun Jan 24 2016 + + * Jeff Genender was added to the PMC on Sun Jan 24 2016 + + +**Committer base changes** + +* Currently 56 committers + +* New commmitters + + * Matt Richard Hogstrom was added as a committer on Thu Jan 28 2016 (not sure why he was added, got this info from [reporter.apache.org](http://reporter.apache.org)) + + * John Robert Sisson was added as a committer on Thu Jan 28 2016 (not sure why he was added, got this info from [reporter.apache.org](http://reporter.apache.org/)) + + +**Releases** + +* Activemq-CPP v3.9.1 was released on Thu Dec 03 2015 + +* Activemq-CPP v3.9.2 was released on Thu Feb 08 2016 + +* 5.11.3 was released on Sun Nov 01 2015 + +* 5.12.1 was released on Wed Oct 14 2015 + +* 5.12.2 was released on Sun Jan 10 2016 + +* 5.13.0 was released on Wed Dec 02 2015 + +* 5.13.1 was released on Fri Feb 05 2016 +* ActiveMQ Artemis 1.2.0 was released on Thu Jan 07 2016 + + +**Mailing list activity** + +* [users@activemq.apache.org](mailto:users@activemq.apache.org) + + * 716 subscribers (down -5 in the last 3 months) + * 816 emails sent to list (712 in previous quarter) +* [dev@activemq.apache.org](mailto:dev@activemq.apache.org) + + * 344 subscribers (up 7 in the last 3 months) + * 837 emails sent to list (765 in previous quarter) +* [issues@activemq.apache.org](mailto:issues@activemq.apache.org) + + * 35 subscribers (up 4 in the last 3 months) + * 2045 emails sent to list (1763 in previous quarter) +* [announce@activemq.apache.org](mailto:announce@activemq.apache.org) + + * 9 subscribers (up 1 in the last 3 months) + +**JIRA activity** + +* 233 JIRA tickets created in the last 3 months + +* 257 JIRA tickets closed/resolved in the last 3 months + + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-201701-january.md b/apache-activemq-board-report-201701-january.md new file mode 100644 index 0000000..96c9552 --- /dev/null +++ b/apache-activemq-board-report-201701-january.md @@ -0,0 +1,63 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2017.01 (January) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2017.01 (January)](apache-activemq-board-report-201701-january.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 2.0, AMQP 1.0, MQTT, Stomp and REST. + +**Activity** + +* ActiveMQ + * Continued hardening of AMQP protocol support + * Fixes to some memory leaks and deadlocks added + * Latest release now supports Jetty releases in the 9.3.x family. + +* ActiveMQ Artemis + + +* Apache Artemis 1.5.0 released with follow up of 1.5.1 maintenance release.  Highlights: + + * Outgoing AMQP connections supported + + * The ability to broker to detect network failures was added + + * CDI Integration was added + +* Apache Artemis 2.0.0 is planned which includes major overhaul of the Artemis addressing model + + +* New model has been proposed and implemented, highlights include: + + +* Better support for address naming across protocols added + +* Ability to define prefixes for specifying pub/sub and point to point messaging requirements added + +* Consolidation of JMS and other protocol management/configuration + + +* Both projects are now base-lined on Java 8 +* Begin blogging about the ActiveMQ project on [https://blogs.apache.org/](https://blogs.apache.org/) + +**PMC changes** + +* Currently 23 PMC members +* Clebert Suconic was added to the PMC on Thu Oct 27 2016 + +**Committer base changes** + +* Currently 58 committers +* Christian Schneider was added as a committer on Wed Jan 04 2017 + +**Releases** + +* 5.13.5 was released on Mon Dec 19 2016 +* 5.14.2 was released on Wed Dec 07 2016 +* 5.14.3 was released on Wed Dec 21 2016 +* ActiveMQ Artemis 1.5.0 was released on Mon Nov 07 2016 +* ActiveMQ Artemis 1.5.1 was released on Thu Dec 08 2016 + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-201704-april.md b/apache-activemq-board-report-201704-april.md new file mode 100644 index 0000000..2b102b7 --- /dev/null +++ b/apache-activemq-board-report-201704-april.md @@ -0,0 +1,50 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2017.04 (April) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2017.04 (April)](apache-activemq-board-report-201704-april.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 2.0, AMQP 1.0, MQTT, Stomp and REST. + +**Activity** + +* ActiveMQ + * The 5.x broker continues to see ongoing bug fixing and stabilization work. + +* ActiveMQ Artemis + + +* Continued work on broker performance especially around the AMQP protocol. + +* Artemis now uses Netty Epoll on platforms that support it providing improved performance at the network layer. + + +* ActiveMQ Other + * A new tooling project aimed at provided a simple means of migrating data from existing ActiveMQ 5.x brokers to Artemis install has started. + * The ActiveMQ NMS project had its SVN repositories migrated to Git to make future contributions simpler. + * Discussion in the community around donation of work on a new ActiveMQ NMS AMQP client implementation. + + +**PMC changes** + +* Currently 24 PMC members +* Clebert Suconic was added to the PMC on Thu Oct 27 2016 + +**Committer base changes** + +* Currently 58 committers +* Christian Schneider was added as a committer on Wed Jan 04 2017 + +**Releases** + +* **ActiveMQ 5.14.4** was released on Wed Mar 01 2017 +* **ActiveMQ Artemis 1.5.3** was released on Sun Feb 19 2017 +* **ActiveMQ Artemis 1.5.4** was released on Sun Mar 12 2017 +* **ActiveMQ Artemis 2.0.0** was released on Sun Mar 19 2017 +* **ActiveMQ-CPP v3.9.4** was released on Wed Feb 22 2017 + +Report submitted on 11 Apr 2017 + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-201707-july.md b/apache-activemq-board-report-201707-july.md new file mode 100644 index 0000000..7de50f1 --- /dev/null +++ b/apache-activemq-board-report-201707-july.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2017.07 (July) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2017.07 (July)](apache-activemq-board-report-201707-july.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 2.0, AMQP 1.0, MQTT, Stomp and REST. + +**Activity** + +* ActiveMQ + + * Work continues on bug fixes and hardening of the ActiveMQ 5.x broker. + + * New 5.15.0 release is out which now requires Java 8 and includes the latest Camel 2.19.0 release + + + +* ActiveMQ Artemis + +* * Continued work on adding new features with several active discussions both on the mailing list and in JIRA and PR comments around the implementation of those features and their affect on existing usecases from members of the community. + + * Improving AMQP support + * Many fixes around compatibility with older clients. + +* ActiveMQ Other + * The community has opened up a call for new Logo's for the project website, a vote to pick a winner is expected late July. + + +**PMC changes** + +* Last PMC addition: Thu Oct 27 2016 (Clebert Suconic) +* Currently 24 PMC members + +**Committer base changes** + +* Currently 59 committers.  +* Francesco Nigro was added as a committer on Tue May 09 2017  + +**Releases** + +* 5.14.5 was released on Sun Apr 16 2017 +* 5.15.0 was released on Thu Jun 29 2017 +* ActiveMQ Artemis 1.5.5 was released on Sun May 14 2017 +* ActiveMQ Artemis 2.1.0 was released on Sun May 14 2017 +* ActiveMQ CLI Tools 0.1.0 was released on Sun May 07 2017 + +Report submitted: 11 Jul 2017 + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-201710-october.md b/apache-activemq-board-report-201710-october.md new file mode 100644 index 0000000..6a17d25 --- /dev/null +++ b/apache-activemq-board-report-201710-october.md @@ -0,0 +1,36 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2017.10 (October) + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - 2017.10 (October)](apache-activemq-board-report-201710-october.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 2.0, AMQP 1.0, MQTT, Stomp and REST. + +**Activity** + +* ActiveMQ + * ActiveMQ 5.15.1 released on Oct 2nd +* ActiveMQ Artemis + +* * Artemis 2.3.0 was released on Sept 13th + * Artemis 2.2.0 was released on July 31st + * An embedded web management console was added + * The download page was refreshed to improve clarity and ease future maintenance + +* ActiveMQ Other + * A new logo was selected by community vote following a period of open submissions. + * The website was updated to use the new logo and slightly freshen the look. + + * Some release process improvements were discussed and implemented. + + +**Releases** + +* **5.15.1** was released on Sun Oct 01 2017 +* **ActiveMQ Artemis 2.2.0** was released on Sun Jul 30 2017 + +Report submitted on 10 Oct 2017 + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/apache-activemq-board-report-april-2008.md b/apache-activemq-board-report-april-2008.md new file mode 100644 index 0000000..f1d88b8 --- /dev/null +++ b/apache-activemq-board-report-april-2008.md @@ -0,0 +1,44 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - April 2008 + +[Apache ActiveMQ Board Report - April 2008](apache-activemq-board-report-april-2008.html) + + +Status report for the Apache ActiveMQ Project +============================================= + +Community: + + The ActiveMQ community continues to stay vibrant with a very healthy amount of email traffic + flowing through it's email lists. It has also added several new committers to it's ranks. + +New Committers: + + \* Jim Gomes + \* Roman Kalukiewicz + \* Willem Jiang + \* Claus Ibsen + +Development: + + Development continues at a good pace. Several releases are eminent and may get fully + released by the time this board report is submitted. Those releases include a bug fix + release for ActiveMQ 4.1.2 and ActiveMQ 5.1.0. We are also reviewing the LICENSE and + NOTICE files for conformance with the recent clarifications on legal-discuss about + what they are intended to contain. + +Releases: + + \* Apache ActiveIO 3.0.1 + \* Apache ActiveIO 3.1.0 + \* Apache Camel 1.3.0 + +ECN Status: + + Notices have sent to the BIS/NSA and they have been documented at the official + location http://www.apache.org/licenses/exports/ . + The only projects using crypto software were: + + \* Apache ActiveMQ + \* Apache Camel + + diff --git a/apache-activemq-board-report-april-2009.md b/apache-activemq-board-report-april-2009.md new file mode 100644 index 0000000..00fbd8b --- /dev/null +++ b/apache-activemq-board-report-april-2009.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - April 2009 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - April 2009](apache-activemq-board-report-april-2009.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Status report for the Apache ActiveMQ Project +============================================= + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-april-2011.md b/apache-activemq-board-report-april-2011.md new file mode 100644 index 0000000..65989d5 --- /dev/null +++ b/apache-activemq-board-report-april-2011.md @@ -0,0 +1,162 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - April 2011 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - April 2011](apache-activemq-board-report-april-2011.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + +* The development and user lists continue to stay active. +* Alex Dean (alexd) added as a committer to the project + +Development: + +* Development has started on the next ActiveMQ 5.6 release. +* Development continues on the ActiveMQ Apollo 1.0 release. +* Development has started on the next Apache.NMS.ActiveMQ 1.5.1 release. +* ActiveMQ-CPP v3.3.0 is being prepared for release. + +Releases: + +* Apache ActiveMQ 5.5.0 +* Apache ActiveMQ Apollo 1.0 Beta 1 +* Apache ActiveMQ-CPP v3.2.5 +* Apache.NMS.ActiveMQ 1.5.0 +* Apache.NMS.Stomp 1.5.1 +* Apache.NMS.Stomp 1.5.0 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-april-2012.md b/apache-activemq-board-report-april-2012.md new file mode 100644 index 0000000..360eebb --- /dev/null +++ b/apache-activemq-board-report-april-2012.md @@ -0,0 +1,168 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - April 2012 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - April 2012](apache-activemq-board-report-april-2012.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* No changes in the committer or PMC membership rosters + +Development: + +* The ActiveMQ 5.6 should be getting released shortly +* Apollo 1.0 finally came out of beta and is now having regular releases + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache Apollo 1.1 +* Apache Apollo 1.0 +* Apache.NMS.ActiveMQ 1.5.3 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-april-2013.md b/apache-activemq-board-report-april-2013.md new file mode 100644 index 0000000..59c7c06 --- /dev/null +++ b/apache-activemq-board-report-april-2013.md @@ -0,0 +1,167 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - April 2013 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - April 2013](apache-activemq-board-report-april-2013.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. + +Development: + +* Migration to svnpubsub was completed. +* Development on ActiveMQ 5.9 is underway + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache ActiveMQ-CPP 3.6.0 (Mar 7/2013) +* Apache Apollo 1.6 (Feb 25/2013) +* Apache ActiveMQ 5.8.0 (Feb 11/2013) + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-april-2014.md b/apache-activemq-board-report-april-2014.md new file mode 100644 index 0000000..bed708c --- /dev/null +++ b/apache-activemq-board-report-april-2014.md @@ -0,0 +1,162 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - April 2014 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - April 2014](apache-activemq-board-report-april-2014.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* The Debate over the inclusion of the hawt.io web console in the ActiveMQ 5.9 release had been resolved. It has been removed in the 5.9.1 release and the upcoming 5.10. + +Development: +\* An ActiveMQ 5.10 release is being prepared. +\* The project moved to the new svnpubsub way to publish distros (INFRA-7539) + +Trademark / Branding Status: + +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: + +\* Apache ActiveMQ 5.9.1 - 4/4/14 +\* Apache Apollo 1.7 - 3/10/14 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-august-2007.md b/apache-activemq-board-report-august-2007.md new file mode 100644 index 0000000..dca5ac5 --- /dev/null +++ b/apache-activemq-board-report-august-2007.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - August 2007 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - August 2007](apache-activemq-board-report-august-2007.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Status report for the Apache ActiveMQ Project +============================================= + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-february-2015.md b/apache-activemq-board-report-february-2015.md new file mode 100644 index 0000000..3a28e78 --- /dev/null +++ b/apache-activemq-board-report-february-2015.md @@ -0,0 +1,167 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - February 2015 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - February 2015](apache-activemq-board-report-february-2015.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* Robbie Gemmell became a committer 12/9/14 +\* Emeritus PMC members removed. +\* Arthur Naseef joined the ActiveMQ PMC +\* Dan Kulp joined the ActiveMQ PMC   + +Development: +\* trunk branch renamed to master to follow git naming conventions. +\* Development on ActiveMQ 5.12 is in progress. +\* Development on ActiveMQ 6.0 is in progress. + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: +\* Apache.NMS 1.7.0 - 1/8/15 +\* Apache.NMS.ActiveMQ 1.7.0 - 1/16/15 +\* Apache ActiveMQ 5.10.1 - 1/20/15 +* Apache ActiveMQ 5.11.0 - 2/3/15 +\* Apache Apollo 1.7.1 - 2/3/15 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-january-2008.md b/apache-activemq-board-report-january-2008.md new file mode 100644 index 0000000..5c7f719 --- /dev/null +++ b/apache-activemq-board-report-january-2008.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - January 2008 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - January 2008](apache-activemq-board-report-january-2008.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Status report for the Apache ActiveMQ Project +============================================= + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-january-2009.md b/apache-activemq-board-report-january-2009.md new file mode 100644 index 0000000..e399cf3 --- /dev/null +++ b/apache-activemq-board-report-january-2009.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - January 2009 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - January 2009](apache-activemq-board-report-january-2009.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Status report for the Apache ActiveMQ Project +============================================= + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-january-2010.md b/apache-activemq-board-report-january-2010.md new file mode 100644 index 0000000..c88fd5d --- /dev/null +++ b/apache-activemq-board-report-january-2010.md @@ -0,0 +1,153 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - January 2010 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - January 2010](apache-activemq-board-report-january-2010.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + \* The ActiveMQ project has had another very busy but quiet quarter. + \* The development and user lists continue to stay vibrant. + \* Tim Bish has joined the ActiveMQ PMC + +Development: + \* The Apache.NMS.Stomp project has begun development of its first release. + + +Releases: + \* ActiveMQ-CPP 3.1.0 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-january-2011.md b/apache-activemq-board-report-january-2011.md new file mode 100644 index 0000000..b766041 --- /dev/null +++ b/apache-activemq-board-report-january-2011.md @@ -0,0 +1,158 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - January 2011 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - January 2011](apache-activemq-board-report-january-2011.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + +* The development and user lists continue to stay active. +* No new committers or PMC members added. + +Development: + +* Development has started on the next ActiveMQ 5.5 release. +* Prototype broker core slated for ActiveMQ 6.x is still under development. +* Apache.NMS.Stomp 1.5.0 is being readied for release. + +Releases: + +* Apache ActiveMQ 5.4.2 +* Apache ActiveMQ CPP 3.2.4 +* Apache.NMS 1.5.0 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-january-2012.md b/apache-activemq-board-report-january-2012.md new file mode 100644 index 0000000..b7897af --- /dev/null +++ b/apache-activemq-board-report-january-2012.md @@ -0,0 +1,170 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - January 2012 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - January 2012](apache-activemq-board-report-january-2012.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* Torsten Mielke we voted in as a new committer. +* PMC members Aaron Mulder and Alan D. Cabrera changed status to emeritus + +Development: + +* ActiveMQ 5.6 is still being worked on. +* Apollo 1.0 is approaching completion. Several betas have been released and it has shown to be stable and easy to manage. The Apollo messaging engine will likely be the path used to implement ActiveMQ 6.0. + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache ActiveMQ-CPP v3.4.1 +* Apache Apollo 1.0 beta 6 +* Apache.NMS.Stomp v1.5.2 +* Apache.NMS.ActiveMQ 1.5.2 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-january-2013.md b/apache-activemq-board-report-january-2013.md new file mode 100644 index 0000000..99d4c8d --- /dev/null +++ b/apache-activemq-board-report-january-2013.md @@ -0,0 +1,167 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - January 2013 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - January 2013](apache-activemq-board-report-january-2013.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. + +Development: + +* Migration to svnpubsub is almost complete. +* ActiveMQ 5.8 is almost ready for a release and has implemented AMQP 1.0 using the proton library from the Apache Qpid project. + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache Apollo 1.5 +* Apache ActiveMQ CPP 3.5.0 +* Apache ActiveMQ CPP 3.4.5 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-january-2014.md b/apache-activemq-board-report-january-2014.md new file mode 100644 index 0000000..857557b --- /dev/null +++ b/apache-activemq-board-report-january-2014.md @@ -0,0 +1,164 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - January 2014 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - January 2014](apache-activemq-board-report-january-2014.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +* Kevin Earls, Jean-Baptiste Onofre, and Matt Pavlovich became ActiveMQ committers. +\* Debate erupted over the inclusion of the hawt.io web console in the ActiveMQ 5.9 release. A resolution is being worked on. + +Development: +\* A follow up ActiveMQ 5.9.1 release is being prepared. + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: + +\* Apache.NMS.ActiveMQ 1.6.2 - 12/22/13 +\* Apache ActiveMQ-CPP v3.8.2 - 12/9/13 +\* Apache.NMS.Stomp 1.5.4 - 10/24/13 +\* Apache ActiveMQ 5.9.0 - 10/21/13 +\* Apache.NMS.ActiveMQ 1.6.1 - 10/19/13 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-july-2008.md b/apache-activemq-board-report-july-2008.md new file mode 100644 index 0000000..5ed7a0d --- /dev/null +++ b/apache-activemq-board-report-july-2008.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - July 2008 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - July 2008](apache-activemq-board-report-july-2008.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Status report for the Apache ActiveMQ Project +============================================= + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-july-2009.md b/apache-activemq-board-report-july-2009.md new file mode 100644 index 0000000..5941490 --- /dev/null +++ b/apache-activemq-board-report-july-2009.md @@ -0,0 +1,158 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - July 2009 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - July 2009](apache-activemq-board-report-july-2009.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + \* The ActiveMQ project has had another very busy but quiet quarter. + \* The development and user lists continue to stay vibrant. + \* New PMC members: Dejan Bosanac + \* New Committers: Colin MacNaughton, Bruce Snyder + +Development: + \* The first release of the Apache ActiveMQ .NET 1.1.0 project is underway. + \* ActiveMQ 5.3.x maintenance development continues expect a release soon. + \* Lots of impressive work being done sandbox area for a revolutionary + version of the Broker may one day become ActiveMQ 6.0. + +Releases: + \* ActiveMQ-CPP 2.2.6 + \* ActiveMQ-CPP 3.0.0 + \* ActiveMQ-CPP 3.0.1 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-july-2010.md b/apache-activemq-board-report-july-2010.md new file mode 100644 index 0000000..deb2bce --- /dev/null +++ b/apache-activemq-board-report-july-2010.md @@ -0,0 +1,160 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - July 2010 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - July 2010](apache-activemq-board-report-july-2010.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + +* The development and user lists continue to stay active and vibrant. +* No new committers or PMC members added + +Development: + +* Working towards an ActiveMQ 5.4 release. +* Prototype broker core for ActiveMQ 6.x is showing promise + +Releases: + +* ActiveMQ-CPP 3.2.1 +* ActiveMQ-CPP 3.2.0 +* ActiveMQ-CPP 3.1.3 +* Apache.NMS API 1.3.0 +* Apache.NMS.ActiveMQ 1.3.0 +* Apache.NMS.Stomp 1.3.0 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-july-2011.md b/apache-activemq-board-report-july-2011.md new file mode 100644 index 0000000..4bc8b60 --- /dev/null +++ b/apache-activemq-board-report-july-2011.md @@ -0,0 +1,175 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - July 2011 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - July 2011](apache-activemq-board-report-july-2011.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + +* The development and user lists continue to stay active. +* No new committers or PMC members added. + +Development: + +* Development has started on the next ActiveMQ 5.6 release. +* Apollo 1.0 is approaching completion. Several betas have been released and it has shown to be stable and easy to manage. The Apollo messaging engine will likely be the path used to implement ActiveMQ 6.0. +* Development has started on a new ZeroMQ provider for the NMS project. This new provider named Apache.NMS.ZMQ will be compatible with the Apache.NMS 1.5.1 API. + +Trademark / Branding Status: + +* activemq.apache.org has been updated to follow the trademark guidelines +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache Apollo 1.0 beta 4 +* Apache Apollo 1.0 beta 3 +* Apache Apollo 1.0 beta 2 +* Apache Apollo 1.0 beta 1 +* Apache.NMS.ActiveMQ 1.5.1 +* Apache ActiveMQ-CPP v3.4.0 +* Apache ActiveMQ-CPP v3.3.0 +* Apache ActiveMQ 5.5.0 +* Apache ActiveMQ-CPP v3.2.5 +* Apache.NMS.ActiveMQ 1.5.0 +* Apache.NMS.Stomp 1.5.1 +* Apache.NMS.Stomp 1.5.0 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-july-2012.md b/apache-activemq-board-report-july-2012.md new file mode 100644 index 0000000..faf84d1 --- /dev/null +++ b/apache-activemq-board-report-july-2012.md @@ -0,0 +1,176 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - July 2012 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - July 2012](apache-activemq-board-report-july-2012.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* No changes in the committer or PMC membership rosters + +Development: + +* It was a busy quarter in which we finally released ActiveMQ 5.6.0 along with server native client releases and a couple of Apollo releases. +* ActiveMQ 5.7 and Apollo 1.4 is under development + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache.NMS.ActiveMQ 1.5.6 +* Apache.NMS 1.5.1 +* Apache ActiveMQ-CPP v3.4.4 +* Apache ActiveMQ-CPP v3.4.3 +* Apache Apollo 1.3 +* Apache ActiveMQ 5.6.0 +* Apache.NMS.ActiveMQ 1.5.5 +* Apache ActiveMQ-CPP v3.4.2 +* Apache ActiveIO 3.1.4 +* Apache Apollo 1.2 +* Apache.NMS.ActiveMQ 1.5.4 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-july-2013.md b/apache-activemq-board-report-july-2013.md new file mode 100644 index 0000000..7b6acbf --- /dev/null +++ b/apache-activemq-board-report-july-2013.md @@ -0,0 +1,167 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - July 2013 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - July 2013](apache-activemq-board-report-july-2013.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* Developers voted to switch ActiveMQ from SVN to Git. +* Christian Posta was voted in as a PMC member +* Several ActiveMQ related presentations were done at CamelOne. + +Development: + +* Development on ActiveMQ 5.9 is underway + +Trademark / Branding Status: + +* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache.NMS.ActiveMQ 1.6.0 +* Apache.NMS API 1.6.0 +* ActiveMQ-CPP v3.7.0 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-july-2014.md b/apache-activemq-board-report-july-2014.md new file mode 100644 index 0000000..7501810 --- /dev/null +++ b/apache-activemq-board-report-july-2014.md @@ -0,0 +1,158 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - July 2014 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - July 2014](apache-activemq-board-report-july-2014.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* Dhiraj Bokde became a committer 6/6/14 + +Development: +\* Development on ActiveMQ 5.11 has started + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: +\* Apache ActiveMQ 5.10.0 - 6/10/14 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-may-2010.md b/apache-activemq-board-report-may-2010.md new file mode 100644 index 0000000..9ff55dd --- /dev/null +++ b/apache-activemq-board-report-may-2010.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - May 2010 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - May 2010](apache-activemq-board-report-may-2010.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Status report for the Apache ActiveMQ Project +============================================= + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-october-2007.md b/apache-activemq-board-report-october-2007.md new file mode 100644 index 0000000..d5a7b6c --- /dev/null +++ b/apache-activemq-board-report-october-2007.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - October 2007 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - October 2007](apache-activemq-board-report-october-2007.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Status report for the Apache ActiveMQ Project +============================================= + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-october-2008.md b/apache-activemq-board-report-october-2008.md new file mode 100644 index 0000000..41f1087 --- /dev/null +++ b/apache-activemq-board-report-october-2008.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - October 2008 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - October 2008](apache-activemq-board-report-october-2008.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Status report for the Apache ActiveMQ Project +============================================= + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-october-2009.md b/apache-activemq-board-report-october-2009.md new file mode 100644 index 0000000..03b5a2e --- /dev/null +++ b/apache-activemq-board-report-october-2009.md @@ -0,0 +1,159 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - October 2009 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - October 2009](apache-activemq-board-report-october-2009.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + \* The ActiveMQ project has had another very busy but quiet quarter. + \* The development and user lists continue to stay vibrant. + +Development: + \* It was a busy an fruitful quarter which produced several new releases. + +Releases: + \* Apache.NMS 1.1.0 + \* Apache.NMS.ActiveMQ 1.1.0 + \* Apache.NMS.EMS 1.1.0 + \* Apache.NMS.MSMQ 1.1.0 + \* Apache.NMS.WCF 1.1.0 + \* ActiveIO 3.1.1 + \* ActiveIO 3.1.2 + \* ActiveMQ Protocol Buffers 1.0 + \* ActiveMQ 5.3.0 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-october-2010.md b/apache-activemq-board-report-october-2010.md new file mode 100644 index 0000000..7915dfd --- /dev/null +++ b/apache-activemq-board-report-october-2010.md @@ -0,0 +1,163 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - October 2010 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - October 2010](apache-activemq-board-report-october-2010.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + +* The development and user lists continue to stay active and vibrant. +* No new committers or PMC members added + +Development: + +* Development has started on the next ActiveMQ 5.5 release. +* Prototype broker core slated for ActiveMQ 6.x is still under development + +Releases: + +* Apache.NMS.ActiveMQ 1.4.1 +* Apache ActiveMQ 5.4.1 +* Apache.NMS.Stomp 1.4.0 +* Apache.NMS.ActiveMQ 1.4.0 +* ActiveMQ-CPP 3.2.3 +* Apache.NMS API 1.4.0 +* Apache ActiveMQ 5.4.0 +* Apache ActiveMQ Protocol Buffers 1.1 +* ActiveMQ-CPP 3.2.2 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-october-2011.md b/apache-activemq-board-report-october-2011.md new file mode 100644 index 0000000..81d8adc --- /dev/null +++ b/apache-activemq-board-report-october-2011.md @@ -0,0 +1,166 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - October 2011 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - October 2011](apache-activemq-board-report-october-2011.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +Community: + +* The development and user lists continue to stay active. +* No new committers or PMC members added. + +Development: + +* A LGPL licensed artifact was discovered to be in a Apache Camel dependency which was included in the ActiveMQ 5.4.0, 5.4.1, 5.4.2 and 5.5.0 releases. We have removed the release from the Apache download server and released ActiveMQ 5.4.3 and 5.5.1 with the artifacts removed. +* ActiveMQ 5.6 is about to be released. +* Apollo 1.0 is approaching completion. Several betas have been released and it has shown to be stable and easy to manage. The Apollo messaging engine will likely be the path used to implement ActiveMQ 6.0. + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache ActiveMQ 5.5.1 +* Apache ActiveMQ 5.4.3 +* Apache Apollo 1.0 beta 5 +* Apache ActiveIO 3.1.3 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-october-2012.md b/apache-activemq-board-report-october-2012.md new file mode 100644 index 0000000..22cdb1d --- /dev/null +++ b/apache-activemq-board-report-october-2012.md @@ -0,0 +1,170 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - October 2012 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - October 2012](apache-activemq-board-report-october-2012.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* Christian Posta was voted in to be an ActiveMQ committer + +Development: + +* It was a busy quarter in which we released ActiveMQ 5.7.0 along with a native client releas and an Apollo releases. +* ActiveMQ 5.8 has just started development and is working towards implmenting AMQP 1.0 using the proton library from the Apache Qpid project. +* ActiveMQ-CPP 3.5.0 is in testing now and should be completed before years end. + +Trademark / Branding Status: + +* The activemq.org and activemq.com TLD's are owned by other entities +* Need to investiate if we should be using (R) instead of (TM) for the ActiveMQ mark +* Sub-projects need to be reviewed to make sure they are also compliant +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* Apache ActiveMQ 5.7.0 +* Apache.NMS.Stomp 1.5.3 +* Apache Apollo 1.4 +* Apache ActiveMQ 3.4.5 in progress. + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-october-2013.md b/apache-activemq-board-report-october-2013.md new file mode 100644 index 0000000..cec74c0 --- /dev/null +++ b/apache-activemq-board-report-october-2013.md @@ -0,0 +1,164 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - October 2013 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - October 2013](apache-activemq-board-report-october-2013.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: + +* The development and user lists continue to stay active. +* Most SCM roots in ActiveMQ have switched from SVN to Git. + +Development: + +* It's been a busy quarter preparing for the The ActiveMQ 5.9 release. It should be done soon! + +Trademark / Branding Status: + +* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +* Documentation and readme files will also be reviewed for compliance + +Releases: + +* ActiveMQ-CPP v3.8.1 - Sep 19th 2013 +* ActiveMQ-CPP v3.8.0 - Sep 6th 2013 + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-report-october-2014.md b/apache-activemq-board-report-october-2014.md new file mode 100644 index 0000000..61e5bb8 --- /dev/null +++ b/apache-activemq-board-report-october-2014.md @@ -0,0 +1,165 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - October 2014 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Apache ActiveMQ Board Report - October 2014](apache-activemq-board-report-october-2014.html) + +[Download](download.html) | [JavaDocs](http://activemq.apache.org/maven/5.11.0/apidocs/index.html) [More...](javadocs.html) | [Source](source.html) | [Forums](discussion-forums.html) | [Support](support.html) + +TLP Description: +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. + +Community: +\* The development and user lists continue to stay active. +\* Dan Kulp became a committer 7/21/14 +\* HornetQ project has started talks about donating their codebase to the ASF.  The ActiveMQ project is shepherding the ip clearance and is working towards integrating them into the project. +\* HornetQ code donation accepted by ActiveMQ Project - 9/30/14 +\* 5 HornetQ committers (Clebert Suconic, Andy Taylor, Justin Bertram, Youg Hao Gao, Martyn Taylor) added as committers to ActiveMQ Project - 9/30/14  + +Development: +\* Development on ActiveMQ 5.11 is in progress. + +Trademark / Branding Status: +\* Sub-projects need to be reviewed to make sure they are also compliant /w TM policies +\* Documentation and readme files will also be reviewed for compliance + +Releases: +\* Apache ActiveMQ-CPP v3.8.3 \- 7/17/14 +\* Apache.NMS.ActiveMQ 1.6.3 - 7/21/14 +\* Apache.NMS.ActiveMQ 1.6.4 - 9/12/14 + + + +### [Overview](overview.html) + +* [Index](index.html) +* [News](news.html) +* [New Features](new-features.html) +* [Getting Started](getting-started.html) +* [FAQ](faq.html) +* [Articles](articles.html) +* [Books](books.html) +* [Download](download.html) +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") + +### [Community](community.html) + +* [Support](support.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [IRC](irc.html) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html) +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Users](users.html) +* [Team](team.html) +* [Thanks](thanks.html) + +### [Features](features.html) + +* [Advisory Message](advisory-message.html) +* [Clustering](clustering.html) +* [Cross Language Clients](cross-language-clients.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [JMX](jmx.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [MasterSlave](masterslave.html) +* [Message Groups](message-groups.html) +* [Networks of Brokers](networks-of-brokers.html) +* [Performance](performance.html) +* [Persistence](persistence.html) +* [Security](security.html) +* [Virtual Destinations](virtual-destinations.html) +* [Visualisation](visualisation.html) +* [More ...](features.html) + +### [Connectivity](connectivity.html) + +* [Ajax](ajax.html) +* [AMQP](amqp.html) +* [Axis and CXF Support](axis-and-cxf-support.html) +* [C Integration](c-integration.html) +* [C++](activemq-c-clients.html) +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html) +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Spring Support](spring-support.html) +* [Stomp](stomp.html) +* [Tomcat](tomcat.html) +* [Unix Service](unix-service.html) +* [WebLogic Integration](weblogic-integration.html) +* [XMPP](xmpp.html) +* [More ...](connectivity.html) + +### [Using ActiveMQ 5](using-activemq-5.html) + +* [Getting Started](version-5-getting-started.html) +* [Initial Configuration](version-5-initial-configuration.html) +* [Running a Broker](version-5-run-broker.html) +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html) +* [Command Line Tools](activemq-command-line-tools-reference.html) +* [Configuring Transports](configuring-version-5-transports.html) +* [Examples](version-5-examples.html) +* [Web Samples](version-5-web-samples.html) +* [Monitoring the Broker](how-can-i-monitor-activemq.html) +* [Xml Configuration](version-5-xml-configuration.html) +* [Xml Reference](xml-reference.html) +* [More ...](using-activemq-5.html) + +### [Tools](tools.html) + +* [Web Console](web-console.html) +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) + +### [Support](support.html) + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### [Developers](developers.html) + +* [Source](source.html) +* [Building](building.html) +* [Developer Guide](developer-guide.html) +* [Becoming a committer](becoming-a-committer.html) +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Release Guide](release-guide.html) + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html) +* [Benchmark Tests](benchmark-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [Integration Tests](integration-tests.html) + +### Project Reports + +* [JUnit Reports](junit-reports.html) +* [Source XRef](source-xref.html) +* [Test Source XRef](test-source-xref.html) +* [Xml Reference](xml-reference.html) + + + diff --git a/apache-activemq-board-reports.md b/apache-activemq-board-reports.md new file mode 100644 index 0000000..487b662 --- /dev/null +++ b/apache-activemq-board-reports.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- Apache ActiveMQ Board Reports + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) + + +The current ActiveMQ reporting schedule is: January, April, July, October + +* [Apache ActiveMQ Board Report - 2017.10 (October)](apache-activemq-board-report-201710-october.html) +* [Apache ActiveMQ Board Report - 2017.07 (July)](apache-activemq-board-report-201707-july.html) +* [Apache ActiveMQ Board Report - 2017.04 (April)](apache-activemq-board-report-201704-april.html) +* [Apache ActiveMQ Board Report - 2017.01 (January)](apache-activemq-board-report-201701-january.html) +* [Apache ActiveMQ Board Report - 2016.10 (October)](apache-activemq-board-report-201610-october.html) +* [Apache ActiveMQ Board Report - 2016.07 (July)](apache-activemq-board-report-201607-july.html) +* [Apache ActiveMQ Board Report - 2016.05 (May)](apache-activemq-board-report-201605-may.html) +* [Apache ActiveMQ Board Report - 2016.04 (April)](apache-activemq-board-report-201604-april.html) +* [Apache ActiveMQ Board Report - 2016.02 (February)](apache-activemq-board-report-201602-february.html) +* [Apache ActiveMQ Board Report - 2015.10 (October)](apache-activemq-board-report-201510-october.html) +* [Apache ActiveMQ Board Report - 2015.08 (August)](apache-activemq-board-report-201508-august.html) +* [Apache ActiveMQ Board Report - 2015.07 (July)](apache-activemq-board-report-201507-july.html) +* [Apache ActiveMQ Board Report - 2015.06 (June)](apache-activemq-board-report-201506-june.html) +* [Apache ActiveMQ Board Report - 2015.04 (April)](apache-activemq-board-report-201504-april.html) +* [Apache ActiveMQ Board Report - 2015.02 (February)](apache-activemq-board-report-201502-february.html) +* [Apache ActiveMQ Board Report - 2014.10 (October)](apache-activemq-board-report-201410-october.html) +* [Apache ActiveMQ Board Report - 2014.07 (July)](apache-activemq-board-report-201407-july.html) +* [Apache ActiveMQ Board Report - 2014.04 (April)](apache-activemq-board-report-201404-april.html) +* [Apache ActiveMQ Board Report - 2014.01 (January)](apache-activemq-board-report-201401-january.html) +* [Apache ActiveMQ Board Report - 2013.10 (October)](apache-activemq-board-report-201310-october.html) +* [Apache ActiveMQ Board Report - 2013.07 (July)](apache-activemq-board-report-201307-july.html) +* [Apache ActiveMQ Board Report - 2013.04 (April)](apache-activemq-board-report-201304-april.html) +* [Apache ActiveMQ Board Report - 2013.01 (January)](apache-activemq-board-report-201301-january.html) +* [Apache ActiveMQ Board Report - 2012.10 (October)](apache-activemq-board-report-201210-october.html) +* [Apache ActiveMQ Board Report - 2012.07 (July)](apache-activemq-board-report-201207-july.html) +* [Apache ActiveMQ Board Report - 2012.04 (April)](apache-activemq-board-report-201204-april.html) +* [Apache ActiveMQ Board Report - 2012.01 (January)](apache-activemq-board-report-201201-january.html) +* [Apache ActiveMQ Board Report - 2011.10 (October)](apache-activemq-board-report-201110-october.html) +* [Apache ActiveMQ Board Report - 2011.07 (July)](apache-activemq-board-report-201107-july.html) +* [Apache ActiveMQ Board Report - 2011.04 (April)](apache-activemq-board-report-201104-april.html) +* [Apache ActiveMQ Board Report - 2011.01 (January)](apache-activemq-board-report-201101-january.html) +* [Apache ActiveMQ Board Report - 2010.10 (October)](apache-activemq-board-report-201010-october.html) +* [Apache ActiveMQ Board Report - 2010.07 (July)](apache-activemq-board-report-201007-july.html) +* [Apache ActiveMQ Board Report - 2010.05 (May)](apache-activemq-board-report-201005-may.html) +* [Apache ActiveMQ Board Report - 2010.01 (January)](apache-activemq-board-report-201001-january.html) +* [Apache ActiveMQ Board Report - 2009.10 (October)](apache-activemq-board-report-200910-october.html) +* [Apache ActiveMQ Board Report - 2009.07 (July)](apache-activemq-board-report-200907-july.html) +* [Apache ActiveMQ Board Report - 2009.04 (April)](apache-activemq-board-report-200904-april.html) +* [Apache ActiveMQ Board Report - 2009.01 (January)](apache-activemq-board-report-200901-january.html) +* [Apache ActiveMQ Board Report - 2008.10 (October)](apache-activemq-board-report-200810-october.html) +* [Apache ActiveMQ Board Report - 2008.07 (July)](apache-activemq-board-report-200807-july.html) +* [Apache ActiveMQ Board Report - 2008.01 (January)](apache-activemq-board-report-200801-january.html) +* [Apache ActiveMQ Board Report - 2007.10 (October)](apache-activemq-board-report-200710-october.html) +* [Apache ActiveMQ Board Report - 2007.08 (August)](apache-activemq-board-report-200708-august.html) + diff --git a/apachenms-150-release.md b/apachenms-150-release.md new file mode 100644 index 0000000..95eb858 --- /dev/null +++ b/apachenms-150-release.md @@ -0,0 +1,200 @@ +Apache ActiveMQ ™ -- Apache.NMS 1.5.0 Release + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [Apache.NMS 1.5.0 Release](apachenms-150-release.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS client libraries and fixes several bugs found in the 1.4.0 release.  Some highlights for this release. + +##### NMS API + +* New Optional .NET Transaction Specific Connection classes that allow a client to offer support for operations within MS .NET Distributed Transactions. + +##### ActiveMQ Client. + +##### Stomp Client. + +###### v1.5.0 + +* Support for the current changes in the Stomp 1.1 draft specification. +* Improved Inactivity Monitoring with two way heartbeats when used with a Stomp v1.1 broker. +* New startupMaxReconnectAttempts option in the failover transport. +* Several other bugfixes for issues found since v1.4.0 was released. + +###### v1.5.1 + +* Fixed a memory leak in the Inactivity Monitoring code. +* Fixed a bug that could cause the Failover to not work. +* Fixed a bug that caused SSL Certs to not be loaded in some cases. +* Fixed a bug that was causing major performance issues for synchronous consumers. +* Fixed issues found with the Stomp v1.1 support. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.0-src.zip) + +[Apache.NMS-1.5.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.0-src.zip.asc) + +1.5.0.2194 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.5.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.0-bin.zip) + +[Apache.NMS-1.5.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.0-bin.zip.asc) + +1.5.0.2194 + +Apache.NMS Client Downloads +--------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.5.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-src.zip) + +[Apache.NMS.Stomp-1.5.1-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-src.zip.asc) + +1.5.1.2216 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.5.1-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-bin.zip) + +[Apache.NMS.Stomp-1.5.1-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-bin.zip.asc) + +1.5.1.2216 + +The NMS 1.5.0 Client Releases are still in progress the NMS below providers will be released following a release the NMS 1.5.0 API based on availability of providers maintainers. + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.0-src.zip) + +[Apache.NMS.ActiveMQ-1.5.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.0-src.zip.asc) + +1.5.0.2194 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.5.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.5.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.0-bin.zip.asc) + +1.5.0.2194 + +The NMS 1.5.0 Client Releases are still in progress the NMS below providers will be released following a release the NMS 1.5.0 API based on availability of providers maintainers. + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.EMS Source code + +[Apache.NMS.EMS-1.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.EMS-1.5.0-src.zip) + +[Apache.NMS.EMS-1.5.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.EMS-1.5.0-src.zip.asc) + +1.5.0.2075 + +Apache.NMS.EMS Binary Assemblies + +[Apache.NMS.EMS-1..0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.EMS-1.5.0-bin.zip) + +[Apache.NMS.EMS-1.5.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.EMS-1.5.0-bin.zip.asc) + +1.5.0.2075 + +Apache.NMS.MSMQ Source code + +[Apache.NMS.MSMQ-1.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.MSMQ-1.5.0-src.zip) + +[Apache.NMS.MSMQ-1.5.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.MSMQ-1.5.0-src.zip.asc) + +1.5.0.2075 + +Apache.NMS.MSMQ Binary Assemblies + +[Apache.NMS.MSMQ-1.5.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.MSMQ-1.5.0-bin.zip) + +[Apache.NMS.MSMQ-1.5.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.MSMQ-1.5.0-bin.zip.asc) + +1.5.0.2075 + +Apache.NMS.WCF Source code + +[Apache.NMS.WCF-1.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.WCF-1.5.0-src.zip) + +[Apache.NMS.WCF-1.5.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.WCF-1.5.0-src.zip.asc) + +1.5.0.2075 + +Apache.NMS.WCF Binary Assemblies + +[Apache.NMS.WCF-1.5.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.WCF-1.5.0-bin.zip) + +[Apache.NMS.WCF-1.5.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.WCF-1.5.0-bin.zip.asc) + +1.5.0.2075 + +**_NOTE:_** _In order to use the_ **Apache.NMS.EMS** _project files, you will need to provide your own copy of the TIBCO.EMS.dll, as this is a licensed 3rd Party application._ + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. Support TIBCO EMS 4.1.0 and above. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/tags/1.5.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315640) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +  + + diff --git a/apachenms-activemq-v110.md b/apachenms-activemq-v110.md new file mode 100644 index 0000000..860108b --- /dev/null +++ b/apachenms-activemq-v110.md @@ -0,0 +1,65 @@ +Apache ActiveMQ ™ -- Apache.NMS ActiveMQ v1.1.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS ActiveMQ v1.1.0](apachenms-activemq-v110.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The 1.1.0 release is a major milestone for the Apache NMS project. It is the first official release of the main Apache.NMS.ActiveMQ project, and all provider implementation projects. Following are some highlights of this release: + +* Support for Failover Transport +* Support for Discovery protocol. +* Improved API Documentation. +* Many bug fixes. + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.ActiveMQ-1.1.0-src.zip) + +[Apache.NMS.ActiveMQ-1.1.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.ActiveMQ-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.1.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.ActiveMQ-1.1.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.1.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.ActiveMQ-1.1.0-bin.zip.asc) + +1.1.0.1642 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-net/Apache.NMS.ActiveMQ/tags/1.1.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11814) + + diff --git a/apachenms-api-v110.md b/apachenms-api-v110.md new file mode 100644 index 0000000..99b3270 --- /dev/null +++ b/apachenms-api-v110.md @@ -0,0 +1,59 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.1.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.1.0](apachenms-api-v110.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The 1.1.0 release is a major milestone for the Apache NMS project. It is the first official release of the main Apache.NMS project, and all provider implementation projects. Following are some highlights of this release: + +* Improved API Documentation. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS-1.1.0-src.zip) + +[Apache.NMS-1.1.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.1.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS-1.1.0-bin.zip) + +[Apache.NMS-1.1.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS-1.1.0-bin.zip.asc) + +1.1.0.1642 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-net/Apache.NMS/tags/1.1.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11814) + + diff --git a/apachenms-api-v120.md b/apachenms-api-v120.md new file mode 100644 index 0000000..261455a --- /dev/null +++ b/apachenms-api-v120.md @@ -0,0 +1,65 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.2.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.2.0](apachenms-api-v120.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS API and fixes several bugs found in the 1.1.0 release.  Some highlights for this release. + +* Addition of IConnectionMeteData to the Connection API. +* Addition of IQueueBrowser to the Session API. +* Improved API Documentation. +* New IStreamMessage interface. +* New IRedeliveryPolicy interface. +* Expanded IByteMessage interface to read/write primitive types. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS-1.2.0-src.zip) + +[Apache.NMS-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS-1.2.0-src.zip.asc) + +1.2.0.1836 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS-1.2.0-bin.zip) + +[Apache.NMS-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS-1.2.0-bin.zip.asc) + +1.2.0.1836 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS/tags/1.2.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11815) + + diff --git a/apachenms-api-v130.md b/apachenms-api-v130.md new file mode 100644 index 0000000..43a4afa --- /dev/null +++ b/apachenms-api-v130.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.3.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.3.0](apachenms-api-v130.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS API and fixes several bugs found in the 1.2.0 release.  Some highlights for this release. + +* Improved API Documentation. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.3.0-src.zip](http://archive.apache.org/dist/activemq/apache-nms/1.3.0/Apache.NMS-1.3.0-src.zip) + +[Apache.NMS-1.3.0-src.zip.asc](http://archive.apache.org/dist/activemq/apache-nms/1.3.0/Apache.NMS-1.3.0-src.zip.asc) + +1.3.0.1959 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.3.0-bin.zip](http://archive.apache.org/dist/activemq/apache-nms/1.3.0/Apache.NMS-1.3.0-bin.zip) + +[Apache.NMS-1.3.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-nms/1.3.0/Apache.NMS-1.3.0-bin.zip.asc) + +1.3.0.1959 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS/tags/1.3.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12150) + + diff --git a/apachenms-api-v140.md b/apachenms-api-v140.md new file mode 100644 index 0000000..0d36c3d --- /dev/null +++ b/apachenms-api-v140.md @@ -0,0 +1,62 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.4.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.4.0](apachenms-api-v140.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS API and fixes several bugs found in the 1.3.0 release.  Some highlights for this release. + +* Improved URI handling in all NMS clients. +* Added a new SetBytes method to IMapMessage. +* Added a new MessageTransformer API. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS-1.4.0-src.zip) + +[Apache.NMS-1.4.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS-1.4.0-src.zip.asc) + +1.4.0.2075 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.4.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS-1.4.0-bin.zip) + +[Apache.NMS-1.4.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS-1.4.0-bin.zip.asc) + +1.4.0.2075 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS/tags/1.4.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12188) + + diff --git a/apachenms-api-v150.md b/apachenms-api-v150.md new file mode 100644 index 0000000..335b029 --- /dev/null +++ b/apachenms-api-v150.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.5.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.5.0](apachenms-api-v150.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS API. + +##### NMS API Updates + +* New Optional .NET Transaction Specific Connection classes that allow a client to offer support for operations within MS .NET Distributed Transactions. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.0-src.zip) + +[Apache.NMS-1.5.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.0-src.zip.asc) + +1.5.0.2194 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.5.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.0-bin.zip) + +[Apache.NMS-1.5.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.0-bin.zip.asc) + +1.5.0.2194 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS/tags/1.5.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315640) + + diff --git a/apachenms-api-v151.md b/apachenms-api-v151.md new file mode 100644 index 0000000..5a55ce6 --- /dev/null +++ b/apachenms-api-v151.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.5.1 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.5.1](apachenms-api-v151.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a bugfix release of the NMS API there are no API changes in this release. + +##### NMS fixes + +* Fixes a bug that can cause the Message properties object to marshal to a byte array that is much larger than needed which adds unwanted overhead on the wire for marshaled Messages. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.5.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.1-src.zip) + +[Apache.NMS-1.5.1-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.1-src.zip.asc) + +1.5.1.2739 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.5.1-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.1-bin.zip) + +[Apache.NMS-1.5.1-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS-1.5.1-bin.zip.asc) + +1.5.1.2739 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS/tags/1.5.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315640) + + diff --git a/apachenms-api-v160.md b/apachenms-api-v160.md new file mode 100644 index 0000000..1f1fd65 --- /dev/null +++ b/apachenms-api-v160.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.6.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.6.0](apachenms-api-v160.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a major release of the NMS API which adds some new APIs and fixes some minor bugs in the NMS API libraries common code. + +* Added Recover method to ISession. +* Added new events to ISession for Transaction begin, commit and rollback. +* Added method in IConnection to purge created Temp Destinations. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.6.0-src.zip](https://archive.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS-1.6.0-src.zip) + +[Apache.NMS-1.6.0-src.zip.asc](https://archive.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS-1.6.0-src.zip.asc) + +1.6.0.3061 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.6.0-bin.zip](https://archive.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS-1.6.0-bin.zip) + +[Apache.NMS-1.6.0-bin.zip.asc](https://archive.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS-1.6.0-bin.zip.asc) + +1.6.0.3061 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS/tags/1.6.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315987) + + diff --git a/apachenms-api-v170.md b/apachenms-api-v170.md new file mode 100644 index 0000000..82f8f59 --- /dev/null +++ b/apachenms-api-v170.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.7.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.7.0](apachenms-api-v170.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a major release of the NMS API which adds some new APIs and fixes some minor bugs in the NMS API libraries common code. + +* Added IDisposable as a base of IDestination. +* Added some improvements to the Unit tests framework. +* Added some new provider names (AMQP and MQTT) to allow for future clients. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.7.0-src.zip](https://archive.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS-1.7.0-src.zip) + +[Apache.NMS-1.7.0-src.zip.asc](https://archive.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS-1.7.0-src.zip.asc) + +1.7.0.3635 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.7.0-bin.zip](https://archive.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS-1.7.0-bin.zip) + +[Apache.NMS-1.7.0-bin.zip.asc](https://archive.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS-1.7.0-bin.zip.asc) + +1.7.0.3635 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS/tags/1.7.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12325350) + + diff --git a/apachenms-api-v171.md b/apachenms-api-v171.md new file mode 100644 index 0000000..76b03b3 --- /dev/null +++ b/apachenms-api-v171.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- Apache.NMS API v1.7.1 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) > [Apache.NMS API v1.7.1](apachenms-api-v171.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a minor release of the NMS API which adds a few minor fixes for NMS Providers operating in MSDTC Transactions. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS Source code + +[Apache.NMS-1.7.1-src.zip](http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS-1.7.1-src.zip) + +[Apache.NMS-1.7.1-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS-1.7.1-src.zip.asc) + +1.7.1.3894 + +Apache.NMS Binary Assemblies + +[Apache.NMS-1.7.1-bin.zip](http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS-1.7.1-bin.zip) + +[Apache.NMS-1.7.1-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS-1.7.1-bin.zip.asc) + +1.7.1.3894 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS/tags/1.7.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12329541) + + diff --git a/apachenms-ems-v110.md b/apachenms-ems-v110.md new file mode 100644 index 0000000..73fa8c6 --- /dev/null +++ b/apachenms-ems-v110.md @@ -0,0 +1,55 @@ +Apache ActiveMQ ™ -- Apache.NMS EMS v1.1.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.EMS](apachenmsems.html) > [EMS Downloads](ems-downloads.html) > [Apache.NMS EMS v1.1.0](apachenms-ems-v110.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The 1.1.0 release is a major milestone for the Apache NMS EMS client. It is the first official release of the main Apache.NMS project, and all provider implementation projects. Following are some highlights of this release: + +* Improved API Documentation. +* Many bug fixes. + +**NOTE:** Support TIBCO EMS 4.1.0 and above. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Apache.NMS.EMS Source code + +[Apache.NMS.EMS-1.1.0-src.zip](https://archive.apache.org/dist/activemq/apache-nms/1.1.0/Apache.NMS.EMS-1.1.0-src.zip) + +[Apache.NMS.EMS-1.1.0-src.zip.asc](https://archive.apache.org/dist/activemq/apache-nms/1.1.0/Apache.NMS.EMS-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS.EMS Binary Assemblies + +[Apache.NMS.EMS-1.1.0-bin.zip](https://archive.apache.org/dist/activemq/apache-nms/1.1.0/Apache.NMS.EMS-1.1.0-bin.zip) + +[Apache.NMS.EMS-1.1.0-bin.zip.asc](https://archive.apache.org/dist/activemq/apache-nms/1.1.0/Apache.NMS.EMS-1.1.0-bin.zip.asc) + +1.1.0.1642 + +**_NOTE:_** _In order to use the_ **Apache.NMS.EMS** _project files, you will need to provide your own copy of the TIBCO.EMS.dll, as this is a licensed 3rd Party application._ + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-net/Apache.NMS.EMS/tags/1.1.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11814) + + diff --git a/apachenms-msmq-v110.md b/apachenms-msmq-v110.md new file mode 100644 index 0000000..7cdced2 --- /dev/null +++ b/apachenms-msmq-v110.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- Apache.NMS MSMQ v1.1.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.MSMQ](apachenmsmsmq.html) > [MSMQ Downloads](msmq-downloads.html) > [Apache.NMS MSMQ v1.1.0](apachenms-msmq-v110.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The 1.1.0 release is a major milestone for the Apache NMS MSMQ client. It is the first official release of the main Apache.NMS project, and all provider implementation projects. Following are some highlights of this release: + +* Improved API Documentation. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Apache.NMS.MSMQ Source code + +[Apache.NMS.MSMQ-1.1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.MSMQ-1.1.0-src.zip) + +[Apache.NMS.MSMQ-1.1.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.MSMQ-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS.MSMQ Binary Assemblies + +[Apache.NMS.MSMQ-1.1.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.MSMQ-1.1.0-bin.zip) + +[Apache.NMS.MSMQ-1.1.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.1.0/Apache.NMS.MSMQ-1.1.0-bin.zip.asc) + +1.1.0.1642 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-net/Apache.NMS.MSMQ/tags/1.1.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11814) + + diff --git a/apachenms.md b/apachenms.md new file mode 100644 index 0000000..f00648c --- /dev/null +++ b/apachenms.md @@ -0,0 +1,38 @@ +Apache ActiveMQ ™ -- Apache.NMS + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +An Overview of NMS +------------------ + +The [NMS API](nms-api.html) (_.Net Message Service API_) providers a standard .NET interface to Messaging Systems. There could be multiple implementations to different [providers](nms-providers.html) (including MSMQ). The NMS API This allows you to build .NET applications in C#, VB, or any other .NET language, using a single API to connect to multiple different providers using a JMS style API. + +NMS API currently supports all of the features of JMS in a simple pure C# API and implementation apart from XA. Current features include + +* creating & disposing of connections, sessions, producers, consumers +* sending of messages to topics, queues with durable or non durable along with temporary destination support +* synchronous consuming (blocking receive, receive with no wait or receive with a timeout) +* asynchronous consuming (adding a MessageListener to be dispatched in the thread pool) +* message header support along with custom properties +* Text, Bytes, Stream and Map message support +* support for transactions (sending and acknowledging multiple messages in an atomic transaction) +* redelivery of messages in rollbacks up to some configured maximum redelivery count +* Optional Queue browser interface for providers that can support it. +* Optional .NET Distributed Transaction Support for providers that can support that. + +A provider implementation based on a pure C# implementation of [OpenWire](http://activemq.apache.org/openwire.html) is provided for working with the Apache ActiveMQ broker.  There are other [provider implementations](nms-providers.html) for working with Stomp, TIBCO, Microsoft Message Queue (MSMQ), and Windows Communication Foundation (WCF). + +If you are curious you can browse the [source code and tests](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/) for the entire project or download an [NMS Provider](nms-providers.html). + +* [NMS API](nms-api.html) +* [NMS API Downloads](nms-api-downloads.html) +* [NMS Examples](nms-examples.html) +* [NMS FAQ](nms-faq.html) +* [NMS Providers](nms-providers.html) +* [NMS URI Configuration](nms-uri-configuration.html) + + diff --git a/apachenmsactivemq-v120.md b/apachenmsactivemq-v120.md new file mode 100644 index 0000000..ac1f0ac --- /dev/null +++ b/apachenmsactivemq-v120.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.2.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.2.0](apachenmsactivemq-v120.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS ActiveMQ library and fixes several bugs found in the 1.1.0 release.  Some highlights for this release. + +* Addition of ConnectionMeteData to the Connection API. +* Addition of QueueBrowser to the Session API. +* Addition of an Individual Acknowledge Mode. +* Improvements to the Failover Transport. +* Improved API Documentation. +* New IStreamMessage interface. +* New IRedeliveryPolicy interface. +* Expanded IByteMessage interface to read/write primitive types. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +Apache.NMS ActiveMQ Downloads +----------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.ActiveMQ-1.2.0-src.zip) + +[Apache.NMS.ActiveMQ-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.ActiveMQ-1.2.0-src.zip.asc) + +1.2.0.1864 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.ActiveMQ-1.2.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.ActiveMQ-1.2.0-bin.zip.asc) + +1.2.0.1864 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.2.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11815) + + diff --git a/apachenmsactivemq-v130.md b/apachenmsactivemq-v130.md new file mode 100644 index 0000000..031cc71 --- /dev/null +++ b/apachenmsactivemq-v130.md @@ -0,0 +1,62 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.3.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.3.0](apachenmsactivemq-v130.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS ActiveMQ library and fixes several bugs found in the 1.2.0 release.  Some highlights for this release. + +* Addition of QueueBrowser support +* Addition of SSL Support +* Improvements to the Failover Transport. +* Improved API Documentation. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +Apache.NMS Client Downloads +--------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.ActiveMQ-1.3.0-src.zip) + +[Apache.NMS.ActiveMQ-1.3.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.ActiveMQ-1.3.0-src.zip.asc) + +1.3.0.1965 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.3.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.ActiveMQ-1.3.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.3.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.ActiveMQ-1.3.0-bin.zip.asc) + +1.3.0.1965 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.ActiveMQ/tags/1.3.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12150) + + diff --git a/apachenmsactivemq-v140.md b/apachenmsactivemq-v140.md new file mode 100644 index 0000000..c14ba1d --- /dev/null +++ b/apachenmsactivemq-v140.md @@ -0,0 +1,67 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.4.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.4.0](apachenmsactivemq-v140.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS ActiveMQ library and fixes several bugs found in the 1.3.0 release.  Some highlights for this release. + +* Improved URI handling in all NMS clients. +* Improved handling of Request Timeout settings. +* Added a new SetBytes method to IMapMessage. +* Added a new MessageTransformer API. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS Client Downloads +--------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.0-src.zip) + +[Apache.NMS.ActiveMQ-1.4.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.0-src.zip.asc) + +1.4.0.2098 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.4.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.4.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.0-bin.zip.asc) + +1.4.0.2098 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. Support TIBCO EMS 4.1.0 and above. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.4.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12188) + + diff --git a/apachenmsactivemq-v141.md b/apachenmsactivemq-v141.md new file mode 100644 index 0000000..24e7baf --- /dev/null +++ b/apachenmsactivemq-v141.md @@ -0,0 +1,63 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.4.1 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.4.1](apachenmsactivemq-v141.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS.ActiveMQ library and fixes several bugs found in the 1.3.0 release.  Some highlights for this release. + +* Improved URI handling. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.ActiveMQ Client Downloads +------------------------------------ + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.4.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.1-src.zip) + +[Apache.NMS.ActiveMQ-1.4.1-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.1-src.zip.asc) + +1.4.1.2098 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.4.1-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.1-bin.zip) + +[Apache.NMS.ActiveMQ-1.4.1-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.ActiveMQ-1.4.1-bin.zip.asc) + +1.4.1.2098 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. Support TIBCO EMS 4.1.0 and above. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.4.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12188) + + diff --git a/apachenmsactivemq-v150.md b/apachenmsactivemq-v150.md new file mode 100644 index 0000000..5956a31 --- /dev/null +++ b/apachenmsactivemq-v150.md @@ -0,0 +1,71 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.5.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.5.0](apachenmsactivemq-v150.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS ActiveMQ library and fixes several bugs found in the 1.4.0 release. + +##### New in this version + +* New startupMaxReconnectAttempts option in the failover transport. +* Fixed a memory leak in the Inactivity Monitoring code. +* Fixed a bug that could cause the Failover to not work. +* Fixed a bug that caused SSL Certs to not be loaded in some cases. +* Several other bugfixes for issues found since v1.4.0 was released. +* Added support for participation in .NET Distributed Transactions (MSDTC). +* Added .NET 4.0 build. +* Many more fixes and internal improvements. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.ActiveMQ Client Downloads +------------------------------------ + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.0-src.zip) + +[Apache.NMS.ActiveMQ-1.5.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.0-src.zip.asc) + +1.5.0.2235 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.5.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.5.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.0-bin.zip.asc) + +1.5.0.2235 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.5.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315640) + + diff --git a/apachenmsactivemq-v151.md b/apachenmsactivemq-v151.md new file mode 100644 index 0000000..eeeeca8 --- /dev/null +++ b/apachenmsactivemq-v151.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.5.1 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.5.1](apachenmsactivemq-v151.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS.ActiveMQ API. + +##### NMS API Updates + +* Many fixes for the MS Distributed Transaction support along with other minor bug fixes for issues found since the initial v1.5.0 release. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.5.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.1-src.zip) + +[Apache.NMS.ActiveMQ-1.5.1-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.1-src.zip.asc) + +1.5.1.2341 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.5.1-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.1-bin.zip) + +[Apache.NMS.ActiveMQ-1.5.1-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.1-bin.zip.asc) + +1.5.1.2341 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.5.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315986) + + diff --git a/apachenmsactivemq-v152.md b/apachenmsactivemq-v152.md new file mode 100644 index 0000000..e23792a --- /dev/null +++ b/apachenmsactivemq-v152.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.5.2 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.5.2](apachenmsactivemq-v152.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new fixes to the NMS.ActiveMQ API. + +##### NMS.ActiveMQ Updates + +This release focuses on performance and stability fixes to the ActiveMQ provider. No new features were added in this release. See the release notes below for a list of issues that were fixed in this release. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.5.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.2-src.zip) + +[Apache.NMS.ActiveMQ-1.5.2-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.2-src.zip.asc) + +1.5.2.2508 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.5.2-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.2-bin.zip) + +[Apache.NMS.ActiveMQ-1.5.2-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.2-bin.zip.asc) + +1.5.2.2508 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.5.2/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12316156) + + diff --git a/apachenmsactivemq-v153.md b/apachenmsactivemq-v153.md new file mode 100644 index 0000000..16edf0c --- /dev/null +++ b/apachenmsactivemq-v153.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.5.3 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.5.3](apachenmsactivemq-v153.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new fixes to the NMS.ActiveMQ API. + +##### NMS.ActiveMQ Updates + +This release focuses on stability fixes to the ActiveMQ provider. No new features were added in this release. See the release notes below for a list of issues that were fixed in this release. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.5.3-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.3-src.zip) + +[Apache.NMS.ActiveMQ-1.5.3-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.3-src.zip.asc) + +1.5.3.2578 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.5.3-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.3-bin.zip) + +[Apache.NMS.ActiveMQ-1.5.3-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.3-bin.zip.asc) + +1.5.3.2578 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.5.3/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12319084) + + diff --git a/apachenmsactivemq-v154.md b/apachenmsactivemq-v154.md new file mode 100644 index 0000000..c0c0b94 --- /dev/null +++ b/apachenmsactivemq-v154.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.5.4 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.5.4](apachenmsactivemq-v154.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new fixes to the NMS.ActiveMQ API. + +##### NMS.ActiveMQ Updates + +This release focuses on stability fixes to the ActiveMQ provider. No new features were added in this release. See the release notes below for a list of issues that were fixed in this release. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.5.4-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.4-src.zip) + +[Apache.NMS.ActiveMQ-1.5.4-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.4-src.zip.asc) + +1.5.4.2655 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.5.4-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.4-bin.zip) + +[Apache.NMS.ActiveMQ-1.5.4-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.4-bin.zip.asc) + +1.5.4.2655 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.5.4/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12319545) + + diff --git a/apachenmsactivemq-v155.md b/apachenmsactivemq-v155.md new file mode 100644 index 0000000..8e3c1a3 --- /dev/null +++ b/apachenmsactivemq-v155.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.5.5 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.5.5](apachenmsactivemq-v155.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new fixes to the NMS.ActiveMQ API. + +* Sending to non-existent temp queue causes consumer to shutdown +* Consumers frequently fail to reconnect after broker outage/failover. +* FailoverTransport doesn't trigger a reconnect on send of a Tracked Command. +* ActiveMQ.NMS hangs sometimes due to concurrency problems while accessing static IDictionary +* Apache.NMS.ActiveMQ discovery protocol throwing ArgumentOutOfRangeException + +##### NMS.ActiveMQ Updates + +This release focuses on stability fixes to the ActiveMQ provider. No new features were added in this release. See the release notes below for a list of issues that were fixed in this release. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.5.5-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.5-src.zip) + +[Apache.NMS.ActiveMQ-1.5.5-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.5-src.zip.asc) + +1.5.5.2676 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.5.5-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.5-bin.zip) + +[Apache.NMS.ActiveMQ-1.5.5-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.5-bin.zip.asc) + +1.5.5.2676 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.5.5/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12320740) + + diff --git a/apachenmsactivemq-v156.md b/apachenmsactivemq-v156.md new file mode 100644 index 0000000..dc25bb5 --- /dev/null +++ b/apachenmsactivemq-v156.md @@ -0,0 +1,63 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.5.6 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.5.6](apachenmsactivemq-v156.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new fixes to the NMS.ActiveMQ API. + +* Adds compression support to the ObjectMessage payload +* Fixes an issue in Message marshaling when tight-marshaling is enabled. + +##### NMS.ActiveMQ Updates + +This release focuses on stability fixes to the ActiveMQ provider. No new features were added in this release. See the release notes below for a list of issues that were fixed in this release. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.5.6-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.6-src.zip) + +[Apache.NMS.ActiveMQ-1.5.6-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.6-src.zip.asc) + +1.5.6.2746 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.5.6-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.6-bin.zip) + +[Apache.NMS.ActiveMQ-1.5.6-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.ActiveMQ-1.5.6-bin.zip.asc) + +1.5.6.2746 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.5.6/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12321250) + + diff --git a/apachenmsactivemq-v160.md b/apachenmsactivemq-v160.md new file mode 100644 index 0000000..709fc65 --- /dev/null +++ b/apachenmsactivemq-v160.md @@ -0,0 +1,69 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.6.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.6.0](apachenmsactivemq-v160.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features and fixes to the NMS.ActiveMQ API. + +##### NMS.ActiveMQ Updates + +This release adds several new features to the ActiveMQ client and fixes many bugs that have been reported since the last release. + +* Adds support for non-blocking redelivery. +* Supports priority backups for Failover transport. +* Supports an Optimized Ack mode for MessageConsumers. +* Adds Message Audits to prevent duplicate deliveries on Failover. +* Implements the ISession Recover method. +* Adds support for purging locally created temp destinations. +* Properly handles cluster client re-balancing in Failover Transport. +* Plus a lot more fixes and stability improvements. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.6.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.0-src.zip) + +[Apache.NMS.ActiveMQ-1.6.0-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.0-src.zip.asc) + +1.6.0.3072 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.6.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.6.0-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.0-bin.zip.asc) + +1.6.0.3072 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315987) + + diff --git a/apachenmsactivemq-v161.md b/apachenmsactivemq-v161.md new file mode 100644 index 0000000..001589f --- /dev/null +++ b/apachenmsactivemq-v161.md @@ -0,0 +1,67 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.6.1 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.6.1](apachenmsactivemq-v161.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a bugfix release for the NMS.ActiveMQ client library. Along with some bug fixes though we've also added support for better discovery transport agents and we now support HTTP discovery using the ActiveMQ broker's HTTP discovery registry. + +##### NMS.ActiveMQ Updates + +The change log for this release is below. + +* Don't fire transport interrupted event when no resume is possible +* dispatch paused, waiting for outstanding dispatch interruption processing to complete.. +* Better logging for XATransaction +* Improve the discovery transport to be more robust and allow easier plugin of new agents. +* Add an HTTP based discovery agent to the discovery transport feature. +* Individual Acknowledgement seems not working in NMS + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.6.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.1-src.zip) + +[Apache.NMS.ActiveMQ-1.6.1-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.1-src.zip.asc) + +1.6.0.3208 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.6.1-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.1-bin.zip) + +[Apache.NMS.ActiveMQ-1.6.1-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.1-bin.zip.asc) + +1.6.0.3208 + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.1/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.1/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12324792) + + diff --git a/apachenmsactivemq-v162.md b/apachenmsactivemq-v162.md new file mode 100644 index 0000000..2b7cfc7 --- /dev/null +++ b/apachenmsactivemq-v162.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.6.2 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.6.2](apachenmsactivemq-v162.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a bugfix release for the NMS.ActiveMQ client library. Along with some bug fixes though we've also added support for better discovery transport agents and we now support HTTP discovery using the ActiveMQ broker's HTTP discovery registry. + +##### NMS.ActiveMQ Updates + +This release addresses some issue in the DTC support and a fix for long delays while closing a Connection.  + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.6.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.2-src.zip) + +[Apache.NMS.ActiveMQ-1.6.2-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.2-src.zip.asc) + +1.6.0.3271 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.6.2-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.2-bin.zip) + +[Apache.NMS.ActiveMQ-1.6.2-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.2-bin.zip.asc) + +1.6.0.3271 + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.2/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.2/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12325306) + + diff --git a/apachenmsactivemq-v163.md b/apachenmsactivemq-v163.md new file mode 100644 index 0000000..b01ddf3 --- /dev/null +++ b/apachenmsactivemq-v163.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.6.3 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.6.3](apachenmsactivemq-v163.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a bugfix release that addresses a few stability issues and improves the handling of Message Consumer instances that operate inside of Sessions in Transacted mode. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.6.3-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.3-src.zip) + +[Apache.NMS.ActiveMQ-1.6.3-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.3-src.zip.asc) + +1.6.3.3483 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.6.3-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.3-bin.zip) + +[Apache.NMS.ActiveMQ-1.6.3-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.3-bin.zip.asc) + +1.6.3.3483 + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.3/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.3/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12325840) + + diff --git a/apachenmsactivemq-v164.md b/apachenmsactivemq-v164.md new file mode 100644 index 0000000..09691b9 --- /dev/null +++ b/apachenmsactivemq-v164.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.6.4 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.6.4](apachenmsactivemq-v164.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a bugfix release that addresses a few stability issues and improves the handling of Message Consumer instances that operate inside of Sessions in Transacted mode as well as some fixes for potential deadlocks that could occur during failover connection recovery. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.6.4-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.4-src.zip) + +[Apache.NMS.ActiveMQ-1.6.4-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.4-src.zip.asc) + +1.6.4.3531 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.6.4-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.4-bin.zip) + +[Apache.NMS.ActiveMQ-1.6.4-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.4-bin.zip.asc) + +1.6.4.3531 + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.4/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.4/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12327446) + + diff --git a/apachenmsactivemq-v165.md b/apachenmsactivemq-v165.md new file mode 100644 index 0000000..5731d61 --- /dev/null +++ b/apachenmsactivemq-v165.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.6.5 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.6.5](apachenmsactivemq-v165.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a small bugfix release that corrects an issue found in the OpenWire tight marshal code that can cause a connection to fail, also a fix for an incorrect redelivery count on some messages was applied. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.6.5-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.5-src.zip) + +[Apache.NMS.ActiveMQ-1.6.5-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.5-src.zip.asc) + +1.6.5.3684 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.6.5-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.5-bin.zip) + +[Apache.NMS.ActiveMQ-1.6.5-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.6.0/Apache.NMS.ActiveMQ-1.6.5-bin.zip.asc) + +1.6.5.3684 + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.5/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.6.4/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12329150) + + diff --git a/apachenmsactivemq-v170.md b/apachenmsactivemq-v170.md new file mode 100644 index 0000000..e8c1279 --- /dev/null +++ b/apachenmsactivemq-v170.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.7.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.7.0](apachenmsactivemq-v170.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is the first release of the Apache.NMS.ActiveMQ 1.7.0 line.  This release is based on the Apache.NMS API v1.7.0 and includes several fixes and updates over the 1.6.x line.  The DotNetZlib dependency has been updated to the latest release and the Destination types now implement IDisposable for use in using blocks.  For full release details check out the release notes. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.7.0-src.zip](http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.0-src.zip) + +[Apache.NMS.ActiveMQ-1.7.0-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.0-src.zip.asc) + +1.7.0.3660 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.7.0-bin.zip](http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.0-bin.zip) + +[Apache.NMS.ActiveMQ-1.7.0-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.0-bin.zip.asc) + +1.7.0.3660 + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.7.0/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.7.0/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12325350) + + diff --git a/apachenmsactivemq-v171.md b/apachenmsactivemq-v171.md new file mode 100644 index 0000000..9a6eaef --- /dev/null +++ b/apachenmsactivemq-v171.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.7.1 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.7.1](apachenmsactivemq-v171.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a bugfix release of the Apache.NMS.ActiveMQ 1.7.x line.  This release is based on the Apache.NMS API v1.7.1 and includes several fixes and updates over the 1.7.0 release.  A fix for an issue where the client could falsely filtered a message as a duplicate included along with improvements to the QueueBrowser to prevent it filtering expired messages.  Several other issues were fixed and can be seen in the release notes. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.7.1-src.zip](https://archive.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.1-src.zip) + +[Apache.NMS.ActiveMQ-1.7.1-src.zip.asc](https://archive.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.1-src.zip.asc) + +1.7.1.3924 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.7.1-bin.zip](https://archive.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.1-bin.zip) + +[Apache.NMS.ActiveMQ-1.7.1-bin.zip.asc](https://archive.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.1-bin.zip.asc) + +1.7.1.3924 + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.7.1/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.7.1/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12329541) + + diff --git a/apachenmsactivemq-v172.md b/apachenmsactivemq-v172.md new file mode 100644 index 0000000..7ec91f6 --- /dev/null +++ b/apachenmsactivemq-v172.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ v1.7.2 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) > [ActiveMQ Downloads](activemq-downloads.html) > [Apache.NMS.ActiveMQ v1.7.2](apachenmsactivemq-v172.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is a bugfix release of the Apache.NMS.ActiveMQ 1.7.x line.  This release is based on the Apache.NMS API v1.7.1 and includes several fixes and updates over the 1.7.1 release.  + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.ActiveMQ Source code + +[Apache.NMS.ActiveMQ-1.7.2-src.zip](http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.2-src.zip) + +[Apache.NMS.ActiveMQ-1.7.2-src.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.2-src.zip.asc) + +1.7.2.4108 + +Apache.NMS.ActiveMQ Binary Assemblies + +[Apache.NMS.ActiveMQ-1.7.2-bin.zip](http://www.apache.org/dyn/closer.lua/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.2-bin.zip) + +[Apache.NMS.ActiveMQ-1.7.2-bin.zip.asc](http://www.apache.org/dist/activemq/apache-nms/1.7.0/Apache.NMS.ActiveMQ-1.7.2-bin.zip.asc) + +1.7.2.4108 + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.7.2/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/tags/1.7.2/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12332993) + + diff --git a/apachenmsactivemq.md b/apachenmsactivemq.md new file mode 100644 index 0000000..6bc381a --- /dev/null +++ b/apachenmsactivemq.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- Apache.NMS.ActiveMQ + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.ActiveMQ](apachenmsactivemq.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The ActiveMQ NMS client is a .NET client that communicates with the ActiveMQ broker using its native [Openwire](../openwire.html) protocol. This client supports [advanced features](activemq-advanced-features.html) such as Failover, Discovery, SSL, and Message Compression. This section of the NMS site provides documentation specific to the NMS.ActiveMQ client, for documentation on the other NMS clients refer to the Main [NMS page](index.html). + +* [ActiveMQ Advanced Features](activemq-advanced-features.html) +* [ActiveMQ Build Notes](activemq-build-notes.html) +* [ActiveMQ Downloads](activemq-downloads.html) +* [ActiveMQ Examples](activemq-examples.html) +* [ActiveMQ FAQ](activemq-faq.html) +* [ActiveMQ URI Configuration](activemq-uri-configuration.html) + + diff --git a/apachenmsamqp.md b/apachenmsamqp.md new file mode 100644 index 0000000..9bafd2d --- /dev/null +++ b/apachenmsamqp.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- Apache.NMS.AMQP + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.AMQP](apachenmsamqp.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The Apache NMS AMQP client provides an NMS layer on top of the Apache Qpid messaging client API. AMQP 1.0 support is provided by Apache Qpid Proton. + +* [AMQP Build Notes](amqp-build-notes.html) +* [AMQP Downloads](amqp-downloads.html) +* [AMQP Examples](amqp-examples.html) +* [AMQP FAQ](amqp-faq.html) + + diff --git a/apachenmsems.md b/apachenmsems.md new file mode 100644 index 0000000..6f4aaa4 --- /dev/null +++ b/apachenmsems.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- Apache.NMS.EMS + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.EMS](apachenmsems.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The Apache.NMS.EMS client provider for talking to TIBCO's EMS message broker. To use this, you will need to following TIBCO's licensing requirements to acquire the TIBCO client assembly DLL. NMS does not ship with the TIBCO client assembly. + +* [EMS Build Notes](ems-build-notes.html) +* [EMS Downloads](ems-downloads.html) +* [EMS Examples](ems-examples.html) +* [EMS FAQ](ems-faq.html) + + diff --git a/apachenmsmqtt.md b/apachenmsmqtt.md new file mode 100644 index 0000000..391ff23 --- /dev/null +++ b/apachenmsmqtt.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- Apache.NMS.MQTT + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.MQTT](apachenmsmqtt.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The Apache.NMS.MQTT client provider for using the publish-subscribe pattern over a lightweight protocol on top of TCP/IP. + + diff --git a/apachenmsmsmq.md b/apachenmsmsmq.md new file mode 100644 index 0000000..3f28c6b --- /dev/null +++ b/apachenmsmsmq.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- Apache.NMS.MSMQ + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.MSMQ](apachenmsmsmq.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The Apache.NMS.MSMQ client provides an NMS layer on top of the MSMQ messaging API. + +* [MSMQ Build Notes](msmq-build-notes.html) +* [MSMQ Downloads](msmq-downloads.html) +* [MSMQ Examples](msmq-examples.html) +* [MSMQ FAQ](msmq-faq.html) + + diff --git a/apachenmsstomp-v120.md b/apachenmsstomp-v120.md new file mode 100644 index 0000000..8eae4de --- /dev/null +++ b/apachenmsstomp-v120.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp v1.2.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) > [Stomp Downloads](stomp-downloads.html) > [Apache.NMS.Stomp v1.2.0](apachenmsstomp-v120.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This is the first official release of the NMS Stomp client library. This library implements much of the NMS API although some features aren't possible due to limitations in the Stomp protocol. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.Stomp Downloads +-------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.2.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.Stomp-1.2.0-src.zip) + +[Apache.NMS.Stomp-1.2.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.Stomp-1.2.0-src.zip.asc) + +1.2.0.1858 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.2.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.Stomp-1.2.0-bin.zip) + +[Apache.NMS.Stomp-1.2.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.2.0/Apache.NMS.Stomp-1.2.0-bin.zip.asc) + +1.2.0.1858 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.2.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11815) + + diff --git a/apachenmsstomp-v130.md b/apachenmsstomp-v130.md new file mode 100644 index 0000000..920fb20 --- /dev/null +++ b/apachenmsstomp-v130.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp v1.3.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) > [Stomp Downloads](stomp-downloads.html) > [Apache.NMS.Stomp v1.3.0](apachenmsstomp-v130.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS Stomp library and fixes several bugs found in the 1.2.0 release.  Some highlights for this release. + +* Addition of SSL Support +* Improvements to the Failover Transport. +* Improved API Documentation. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.Stomp Downloads +-------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.3.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.Stomp-1.3.0-src.zip) + +[Apache.NMS.Stomp-1.3.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.Stomp-1.3.0-src.zip.asc) + +1.3.0.1969 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.3.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.Stomp-1.3.0-bin.zip) + +[Apache.NMS.Stomp-1.3.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.3.0/Apache.NMS.Stomp-1.3.0-bin.zip.asc) + +1.3.0.1969 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.3.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12150) + + diff --git a/apachenmsstomp-v140.md b/apachenmsstomp-v140.md new file mode 100644 index 0000000..6ce9df5 --- /dev/null +++ b/apachenmsstomp-v140.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp v1.4.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) > [Stomp Downloads](stomp-downloads.html) > [Apache.NMS.Stomp v1.4.0](apachenmsstomp-v140.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS Stomp library and fixes several bugs found in the 1.3.0 release.  Some highlights for this release. + +* Improved URI handling in all NMS clients. +* Improved handling of Request Timeout settings. +* Added a new SetBytes method to IMapMessage. +* Many new Unit Tests added to the Test Suite. +* Many bug fixes. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.Stomp Downloads +-------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.4.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.Stomp-1.4.0-src.zip) + +[Apache.NMS.Stomp-1.4.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.Stomp-1.4.0-src.zip.asc) + +1.4.0.2077 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.4.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.Stomp-1.4.0-bin.zip) + +[Apache.NMS.Stomp-1.4.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.4.0/Apache.NMS.Stomp-1.4.0-bin.zip.asc) + +1.4.0.2077 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.4.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=12188) + + diff --git a/apachenmsstomp-v150.md b/apachenmsstomp-v150.md new file mode 100644 index 0000000..608d22a --- /dev/null +++ b/apachenmsstomp-v150.md @@ -0,0 +1,65 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp v1.5.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) > [Stomp Downloads](stomp-downloads.html) > [Apache.NMS.Stomp v1.5.0](apachenmsstomp-v150.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS Stomp client library and fixes several bugs found in the 1.4.0 release. + +###### New in this release: + +* Support for the current changes in the Stomp 1.1 draft specification. +* Improved Inactivity Monitoring with two way heartbeats when used with a Stomp v1.1 broker. +* New startupMaxReconnectAttempts option in the failover transport. +* Several other bugfixes for issues found since v1.4.0 was released. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.Stomp Downloads +-------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.5.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.0-src.zip) + +[Apache.NMS.Stomp-1.5.0-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.0-src.zip.asc) + +1.5.0.2216 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.5.0-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-bin.zip) + +[Apache.NMS.Stomp-1.5.0-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.0-bin.zip.asc) + +1.5.1.2216 + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.5.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315640) + + diff --git a/apachenmsstomp-v151.md b/apachenmsstomp-v151.md new file mode 100644 index 0000000..ec24452 --- /dev/null +++ b/apachenmsstomp-v151.md @@ -0,0 +1,68 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp v1.5.1 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) > [Stomp Downloads](stomp-downloads.html) > [Apache.NMS.Stomp v1.5.1](apachenmsstomp-v151.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +This release adds some great new features to the NMS client libraries and fixes several bugs found in the 1.4.0 release.  Some highlights for this release. + +##### New in this release. + +* Fixed a memory leak in the Inactivity Monitoring code. +* Fixed a bug that could cause the Failover to not work. +* Fixed a bug that caused SSL Certs to not be loaded in some cases. +* Fixed a bug that was causing major performance issues for synchronous consumers. +* Fixed issues found with the Stomp v1.1 support. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.Stomp Client Downloads +--------------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.5.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-src.zip) + +[Apache.NMS.Stomp-1.5.1-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-src.zip.asc) + +1.5.1.2216 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.5.1-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-bin.zip) + +[Apache.NMS.Stomp-1.5.1-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.1-bin.zip.asc) + +1.5.1.2216 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. Support TIBCO EMS 4.1.0 and above. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.5.1/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12315640) + + diff --git a/apachenmsstomp-v152.md b/apachenmsstomp-v152.md new file mode 100644 index 0000000..1681edb --- /dev/null +++ b/apachenmsstomp-v152.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp v1.5.2 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) > [Stomp Downloads](stomp-downloads.html) > [Apache.NMS.Stomp v1.5.2](apachenmsstomp-v152.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The release focuses on performance and stability fixes for issues found in the 1.5.1 release as well as addressing a compatibility issue found when connecting to Stomp v1.1 compliant brokers. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.Stomp Client Downloads +--------------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.5.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.2-src.zip) + +[Apache.NMS.Stomp-1.5.2-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.2-src.zip.asc) + +1.5.2.2508 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.5.2-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.2-bin.zip) + +[Apache.NMS.Stomp-1.5.2-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.2-bin.zip.asc) + +1.5.2.2508 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. As well as with most Stomp v1.0 and v1.1 compliant messaging brokers. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.5.2/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12316156) + + diff --git a/apachenmsstomp-v153.md b/apachenmsstomp-v153.md new file mode 100644 index 0000000..752cc2e --- /dev/null +++ b/apachenmsstomp-v153.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp v1.5.3 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) > [Stomp Downloads](stomp-downloads.html) > [Apache.NMS.Stomp v1.5.3](apachenmsstomp-v153.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The release focuses on performance and stability fixes for issues found in the 1.5.2 release as well as addressing a compatibility issue found when connecting to Stomp v1.1 compliant brokers. Additionally some improvements in fail-over handling and connection shut-down have been made. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.Stomp Client Downloads +--------------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.5.3-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.3-src.zip) + +[Apache.NMS.Stomp-1.5.3-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.3-src.zip.asc) + +1.5.3.2795 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.5.3-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.3-bin.zip) + +[Apache.NMS.Stomp-1.5.3-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.3-bin.zip.asc) + +1.5.2.2795 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. As well as with most Stomp v1.0 and v1.1 compliant messaging brokers. + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.5.3/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&styleName=Html&version=12319084) + + diff --git a/apachenmsstomp-v154.md b/apachenmsstomp-v154.md new file mode 100644 index 0000000..c2d6ff4 --- /dev/null +++ b/apachenmsstomp-v154.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp v1.5.4 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) > [Stomp Downloads](stomp-downloads.html) > [Apache.NMS.Stomp v1.5.4](apachenmsstomp-v154.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The release includes a fix for exceptions that were being seen on Windows OS's configured with Non-US culture settings. + +API Documentation +----------------- + +Refer to the API for this release [here](nms-api.html) + +Apache.NMS.Stomp Client Downloads +--------------------------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.Stomp Source code + +[Apache.NMS.Stomp-1.5.4-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.4-src.zip) + +[Apache.NMS.Stomp-1.5.4-src.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.4-src.zip.asc) + +1.5.4.3215 + +Apache.NMS.Stomp Binary Assemblies + +[Apache.NMS.Stomp-1.5.4-bin.zip](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.4-bin.zip) + +[Apache.NMS.Stomp-1.5.4-bin.zip.asc](http://www.apache.org/dyn/closer.cgi/activemq/apache-nms/1.5.0/Apache.NMS.Stomp-1.5.4-bin.zip.asc) + +1.5.4.3215 + + + +**NOTE:** Compatible with ActiveMQ Broker versions in the 4.X and 5.X family. As well as with most Stomp v1.0 and v1.1 compliant messaging brokers. + +SVN Tag Checkout +---------------- + +svn co [https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.5.4/](https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.Stomp/tags/1.5.4/) + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311201&version=12319545) + + diff --git a/apachenmsstomp.md b/apachenmsstomp.md new file mode 100644 index 0000000..a692e45 --- /dev/null +++ b/apachenmsstomp.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Apache.NMS.Stomp + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.Stomp](apachenmsstomp.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The NMS Stomp client is a small lightweight .NET client that can send and receive messages from any [Stomp](http://stomp.codehaus.org/) based message broker. The NMS Stomp client currently supports the Stomp 1.0 protocol specification. + +* [Stomp Advanced Features](stomp-advanced-features.html) +* [Stomp Build Notes](stomp-build-notes.html) +* [Stomp Downloads](stomp-downloads.html) +* [Stomp FAQ](stomp-faq.html) +* [Stomp URI Configuration](stomp-uri-configuration.html) + + diff --git a/apachenmswcf-v110.md b/apachenmswcf-v110.md new file mode 100644 index 0000000..6f0033f --- /dev/null +++ b/apachenmswcf-v110.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- Apache.NMS.WCF v1.1.0 + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.WCF](apachenmswcf.html) > [WCF Downloads](wcf-downloads.html) > [Apache.NMS.WCF v1.1.0](apachenmswcf-v110.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +New and Noteworthy +------------------ + +The 1.1.0 release is a major milestone for the Apache NMS project. It is the first official release of the main Apache.NMS project, and all provider implementation projects. + +API +--- + +Refer to the API for this release [here](nms-api.html) + +Download Here +------------- + +Description + +Download Link + +PGP Signature File + +Version + +Apache.NMS.WCF Source code + +[Apache.NMS.WCF-1.1.0-src.zip](http://archive.apache.org/dist/activemq/apache-nms/1.1.0/Apache.NMS.WCF-1.1.0-src.zip) + +[Apache.NMS.WCF-1.1.0-src.zip.asc](http://archive.apache.org/dist/activemq/apache-nms/1.1.0/Apache.NMS.WCF-1.1.0-src.zip.asc) + +1.1.0.1642 + +Apache.NMS.WCF Binary Assemblies + +[Apache.NMS.WCF-1.1.0-bin.zip](http://archive.apache.org/dist/activemq/apache-nms/1.1.0/Apache.NMS.WCF-1.1.0-bin.zip) + +[Apache.NMS.WCF-1.1.0-bin.zip.asc](http://archive.apache.org/dist/activemq/apache-nms/1.1.0/Apache.NMS.WCF-1.1.0-bin.zip.asc) + +1.1.0.1642 + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-net/Apache.NMS.WCF/tags/1.1.0/ + +Changelog +--------- + +For a more detailed view of new features and bug fixes, see the [release notes](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=11010&styleName=Html&version=11814) + + diff --git a/apachenmswcf.md b/apachenmswcf.md new file mode 100644 index 0000000..7a5d103 --- /dev/null +++ b/apachenmswcf.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- Apache.NMS.WCF + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.WCF](apachenmswcf.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +NMS provider for use with the Windows Communication Framework (WCF). + +* [WCF Downloads](wcf-downloads.html) +* [WCF Examples](wcf-examples.html) + + diff --git a/apachenmsxms.md b/apachenmsxms.md new file mode 100644 index 0000000..45ada73 --- /dev/null +++ b/apachenmsxms.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- Apache.NMS.XMS + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.XMS](apachenmsxms.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The Apache.NMS.XMS client provider for talking to IBM's WebSphere MQ Series message broker. To use this, you will need to following IBM's licensing requirements to acquire the MQSeries client assembly DLL. NMS does not ship with the MQSeries client assembly. + + diff --git a/api.md b/api.md new file mode 100644 index 0000000..5385bf7 --- /dev/null +++ b/api.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- API + +[Index](index.html) > [Site](site.html) > [Navigation](navigation.html) > [API](api.html) + +ActiveMQ-CPP API +---------------- + +[ActiveMQ-CPP 3.6.x](http://activemq.apache.org/cms/api_docs/activemqcpp-3.6.0/html/) + +[ActiveMQ-CPP 3.9.x](http://activemq.apache.org/cms/api_docs/activemqcpp-3.9.0/html/) + diff --git a/architecture.md b/architecture.md new file mode 100644 index 0000000..257773c --- /dev/null +++ b/architecture.md @@ -0,0 +1,62 @@ + + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +Architecture +============ + +Apollo started as an experiment to see what it would take to make ActiveMQ work better on machines with higher core counts. It has resulted in broker that is much more deterministic, stable, and scaleable. + +Architectural Changes +--------------------- + +The major fundamental architectural changes it brings are: + +* Reactor Based Thread Model +* Scala 2.8 Implementation +* Protocol Agnostic +* REST Based Management + +### Reactor Based Thread Model + +Apollo uses [HawtDispatch](http://hawtdispatch.fusesource.org/) to implement the sever using a multi-threaded non-blocking variation of the [reactor](http://en.wikipedia.org/wiki/Reactor_pattern) design pattern. HawtDispatch is a Java clone of [libdispatch](http://en.wikipedia.org/wiki/Libdispatch) (aka [Grand Central Dispatch](http://images.apple.com/macosx/technology/docs/GrandCentral_TB_brief_20090903.pdf)). It uses a fixed sized thread pool and only executes non-blocking tasks on those threads. + +The thread model allows Apollo to reach very high levels of scaleability and efficiency, but it places a huge restriction on the developer: all the tasks it executes must be non-blocking and ideally lock-free and wait free. This means that the previous ActiveMQ broker architecture had to go through a major overhaul. All synchronous broker interfaces had to be changed so that they would instead return results via asynchronous callbacks. + +### Scala 2.9 Implementation + +Even though Apollo started as a fork of ActiveMQ 5.x, the new reactor design restrictions required major changes from the network IO handling, to the flow control design, all the way to the Store interfaces. Scala provided a much more concise way to express callbacks, namely by it's support for partial functions and closures. + +### Protocol Agnostic + +ActiveMQ has supported multiple protocols for many years, but under the covers what it's doing is converting all the protocols to use the [OpenWire](http://activemq.apache.org/openwire.html) messaging protocol. Naturally, this approach is not optimal if you want to efficiently support other protocols and not be limited by what OpenWire can support. + +The Apollo server is much more modular and protocol agnostic. All protocols are equal and are built as a plugin to the the broker which just make use of exposed broker services for routing, flow control, queueing services etc. For example, this means that messages will be persisted in a Store in the original protocol's encoding. There is no protocol conversion occurring under the covers unless it is required. + +### REST Based Management + +ActiveMQ choose to exposed it's management interfaces via JMX. JMX was a natural choice since ActiveMQ is Java based, but JMX has a couple of serious limitations: + +* No cross language support +* Not scaleable for exposing many objects. Registering and unregistering management objects in JMX can become a bottle neck. +* Rich data types are hard to expose + +Apollo exposes a rich and detailed state of the sever using REST based JSON services. + +* A management client can easily be implemented in any language. +* There is very little management overhead since there is no special registration with the management system. The REST based management web application knows how to navigate the internal structure of a broker to access all the need status and statistics. + +See the [Management API](management-api.html) documentation for details. + +### Message Swapping + +Apollo can very efficiently work with both large and small queues due to the way it implements message swapping. If you have a large queue with millions of messages, and are slowly processing them, then it makes no sense to keep all those messages in memory. They just need to be loaded when the consumers are ready to receive them. + +A queue in apollo has a configuration entry called `consumer_buffer` which is the amount of memory dedicated to that consumer for prefetching into memory the next set of messages that consumer will need. The queue will asynchronously load messages from the message store so that they will be in memory by the time the consumer is ready to receive the the message. + +The rate of consumption/position of the consumers in the queue will also affect how newly enqueued messages are handled. If no consumers are near the tail of the queue where new messages are placed, then the message gets swapped out of memory asap. If they consumers are near the tail of the queue, then the message is retained in memory for as long as possible in hopes that you can avoid a swap out and then back in. + +When a message is swapped out of memory, it can be in one of 2 swapped out states: 'swapped' or 'swapped range'. A message in 'swapped' state still has a small reference node in the list of messages the queue maintains. This small reference holds onto some accounting information about the message and how to quickly retrieve the message from the message store. Once a queue builds up many adjacent messages (defaults to 10,000) that are in the 'swapped' state, it will replace all those individual reference node entires in memory with a single range reference node. Once that happens, the message is in a 'swapped range'. \ No newline at end of file diff --git a/are-destinations-case-sensitive.md b/are-destinations-case-sensitive.md new file mode 100644 index 0000000..42d59be --- /dev/null +++ b/are-destinations-case-sensitive.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- Are destinations case sensitive + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [Are destinations case sensitive](are-destinations-case-sensitive.html) + + +There seems to be no consensus on whether JMS providers should use case insensitive destination names. Since most names in Java & J2EE are case sensitive (class names, JNDi names, file names (on many unix operating systems), URIs and URLs - we've followed suit and use case sensitive destination names. + diff --git a/are-messages-read-directly-from-the-journal.md b/are-messages-read-directly-from-the-journal.md new file mode 100644 index 0000000..1c975db --- /dev/null +++ b/are-messages-read-directly-from-the-journal.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- Are messages read directly from the journal + +[Community](community.html) > [FAQ](faq.html) > [Persistence Questions](persistence-questions.html) > [Are messages read directly from the journal](are-messages-read-directly-from-the-journal.html) + + +Kind of. A message can be loaded directly from the journal if it was swapped out of memory. + +The journal cannot be used, however, to recover a durable subscription as it does not keep an ordered index of messages per durable sub. So when a durable sub is activated, the journal checkpoints to flush any messages in the journal to the long term store and then the long term store is used to recover the durable subscription. + diff --git a/are-there-more-faq-entries.md b/are-there-more-faq-entries.md new file mode 100644 index 0000000..325b5a8 --- /dev/null +++ b/are-there-more-faq-entries.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- Are there more FAQ Entries + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [General](general.html) > [Are there more FAQ Entries](are-there-more-faq-entries.html) + +Are there more FAQ Entries? +--------------------------- + +Yes, see the [ActiveMQ Main FAQ](http://activemq.apache.org/faq.html) + diff --git a/articles.md b/articles.md new file mode 100644 index 0000000..55125cc --- /dev/null +++ b/articles.md @@ -0,0 +1,122 @@ +Apache ActiveMQ ™ -- Articles + +[Community](community.html) > [Articles](articles.html) + + +This page captures resources and articles outside the ActiveMQ project which may assist your development. Please add any new resources that you come across by clicking the edit link at the bottom of the page. If you do this, please make sure to attach a date to the article as well so users are aware of how recent it is. + +### Interviews and Podcasts + +* [ActiveMQ FeatherCast](http://feathercast.org/?p=42), James Strachan is interviewed on the ActiveMQ project + +### Webinars, Videos and Screencasts + +* [Apache ActiveMQ - Connecting Applications everywhere](http://download.progress.com/5331/open/adobe/prc/psc/perf_tuning_activemq/index.htm) by _[Rob Davies](http://rajdavies.blogspot.com/)_ +* [Performance Tuning ActiveMQ webinar](http://download.progress.com/5331/open/adobe/prc/psc/perf_tuning_activemq/index.htm) _by [Rob Davies](http://rajdavies.blogspot.com/)_ +* [FuseSource Webinars](http://fusesource.com/resources/video-archived-webinars/) \- Upcoming and archived webinars on Apache ActiveMQ and other related Apache products. +* [FuseSource TV](http://fusesource.com/resources/fuse-tv/) \- webcasts about Apache ActiveMQ and related Apache projects. + +### Articles on ActiveMQ, Messaging and JMS + +#### General Articles + +* [Connecting to ActiveMQ with Payara Server](http://blog.payara.fish/connecting-to-activemq-with-payara-server) by Steve Millidge (December, 2015) +* [Messaging for Web and Mobile with Apache ActiveMQ](http://de.slideshare.net/dejanb/messaging-for-web-and-mobile-with-apache-activemq) by [Dejan Bosanac](http://Dejan Bosanac) (June, 2013) +* [ActiveMQ in Action: Common Problems and Solutions](http://de.slideshare.net/bruce.snyder/activemq-in-action) by Bruce Snyder (July, 2011) +* [Accessing ActiveMQ on Mac OSX from a Windows VM](http://blog.phatboyg.com/2009/07/12/accessing-activemq-on-mac-osx-from-a-windows-vm/) +* [Flex with JMS using BlazeDS, Jetty and ActiveMQ](http://www.theserverlabs.com/blog/2009/01/22/flex-with-jms-using-blazeds-jetty-and-activemq/) _by Kevin McCormack_ (January, 2009) +* [Mutual SSL authentication and LDAP authorisation for ActiveMQ](http://christopherhunt-software.blogspot.com/2009/03/mutual-ssl-authentication-and-ldap.html) _by [Christopher Hunt](http://christopherhunt-software.blogspot.com)_ (March, 2009) +* [Made of Messages](http://www.slideshare.net/carsonified/dopplr-its-made-of-messages-matt-biddulph-presentation) _by Matt Biddulph of [Dopplr](http://www.dopplr.com/)_ +* [Simplified BlazeDS and JMS article](http://mmartinsoftware.blogspot.com/2008/05/simplified-blazeds-and-jms.html) _by [Michael Martin](http://mmartinsoftware.blogspot.com/)_ (May, 2008) +* [Trying out XA](http://ourcraft.wordpress.com/2008/07/03/trying-out-xa/) with ActiveMQ _by Daniel Meyer_ (July, 2008) +* [Squawk (simple queues using awk)](http://latrz.com/2586) _by [Andrew Birkett](http://www.nobugs.org/blog/)_ +* [Using ActiveMQ and REST](http://p-st.blogspot.com/2007/12/activemq-and-rest.html) _by [marlet](http://p-st.blogspot.com/)_ (December, 2007) +* [Apache ActiveMQ and Perl](http://esammer.blogspot.com/2007/09/apache-activemq-and-perl.html) (September, 2007) +* [Publish-Subscribe with ActiveMQ and NMS](http://remark.wordpress.com/articles/publish-subscribe-with-activemq-and-nms/) +* [ActiveMQ Master/Slave Setup](http://note19.com/2007/06/24/activemq-masterslave-setup/) +* [GlassFish and ActiveMQ](http://weblogs.java.net/blog/rampsarathy/archive/2007/03/glassfish_v2_an.html) _by Ramesh Parthasarathy_ (March, 2007) +* [Asynchronous calls and callbacks with Lingo and ActiveMQ](http://jroller.com/page/sjivan?entry=asynchronous_calls_and_callbacks_using) _by Sanjiv Jivan_ (May, 2006) +* [Magic with JMS, MDBs, and ActiveMQ in Geronimo](http://www-128.ibm.com/developerworks/opensource/library/os-ag-jmsbeans/) _by Sing Li_ (July, 2005) +* [Implementing Request-Response with ActiveMQ and NMS](http://remark.wordpress.com/articles/implementing-request-response-with-activemq-and-nms/) _by Mark_ +* [Understanding Memory Usage](http://www.christianposta.com/blog/?p=273) _by Christian Posta_ gives an overview and dive into the memory usage of the broker. + +#### ActiveMQ Maintenance and Monitoring + +* [Running ActiveMQ and hawtio in Standalone Mode](http://www.bennet-schulz.com/2016/07/apache-activemq-and-hawtio.html) by [Bennet Schulz](https://twitter.com/bennetelli) (July, 2016) +* [Management and monitoring ActiveMQ using hawtio](http://sensatic.net/activemq/activemq-and-hawtio.html) (how to install hawtio out of  the box in ActiveMQ) by Dejan Bosanac (April 2014) +* [Monitoring ActiveMQ from Nagios](http://it.toolbox.com/blogs/unix-sysadmin/monitoring-activemq-from-nagios-27743) _by [Cezary Morga](http://it.toolbox.com/people/therek/)_ +* [Use JConsole with ActiveMQ for a quick JMS test client](http://soatechlab.blogspot.com/2008/01/use-jconsole-with-activemq-for-quick.html) _by [Rod Biresch](http://soatechlab.blogspot.com/)_ (January 2008) +* [Integrating ActiveMQ Web Console](http://www.oreillynet.com/onjava/blog/2007/06/integrating_activemq_web_conso.html) _by [Dejan Bosanac](http://www.oreillynet.com/pub/au/1763)_ (June 2007) +* [Hermes Message Stores with ActiveMQ demo](http://hermesjms.com/demos/messagestores.html) _by Colin Crist_ + +#### ActiveMQ and Databases + +* [High Availability ActiveMQ using MySQL and Ruby](http://barkingiguana.com/2008/12/16/high-availability-activemq-using-a-mysql-datastore) _by [Craig R Webster](http://barkingiguana.com/)_ (December 2008) +* [Setting up a PostgreSQL database for ActiveMQ](http://trenaman.blogspot.com/2008/09/setting-up-postgresql-database-for.html) _by [Adrian Trenaman](http://trenaman.blogspot.com/)_ (September 2008) +* [Configure ActiveMQ with MySQL](http://note19.com/2007/06/23/configure-activemq-with-mysql/) _By Shahram Javey_ (June 2007) + +#### ActiveMQ and Spring + +* [Spring JMS Examples with ActiveMQ](https://github.com/bsnyder/spring-jms-examples) by [Bruce Snyder](https://bsnyderblog.blogspot.com/) (June 2011) +* [Tuning JMS Message Consumption In Spring](https://bsnyderblog.blogspot.com/2010/05/tuning-jms-message-consumption-in.html) by [Bruce Snyder](https://bsnyderblog.blogspot.com/) (May 2010) +* [Synchronous Request Response with ActiveMQ and Spring](http://codedependents.com/2010/03/04/synchronous-request-response-with-activemq-and-spring/) _by [CodeDependents](http://codedependents.com/)_ (March 2010) +* [Using Spring to Receive JMS Messages](https://bsnyderblog.blogspot.com/2010/02/using-spring-to-receive-jms-messages.html) by [Bruce Snyder](https://bsnyderblog.blogspot.com/) (February 2010) +* [Using Spring to Send JMS Messages](https://bsnyderblog.blogspot.com/2010/02/using-spring-jmstemplate-to-send-jms.html) by [Bruce Snyder](https://bsnyderblog.blogspot.com/) (February 2010) +* [Efficient Lightweight JMS with Spring and ActiveMQ](http://codedependents.com/2009/10/16/efficient-lightweight-jms-with-spring-and-activemq/) _by [CodeDependents](http://codedependents.com/)_ (Octover 2009) +* [ActiveMQ Message Consumer in Spring](http://javaandjava.blogspot.com/2008/10/activemq-message-consumer-in-spring.html) _by [Saveen Kumar](http://javaandjava.blogspot.com/)_ (October 2008) +* [Message-Driven Architectures at The Spring Experience](http://www.springframework.org/node/527) _by Keith Donald_ (September 2007) + +#### ActiveMQ with JRuby/Ruby, Rails and/or Stomp + +* [JRuby JMS as a replacement for ActiveMessaging](http://beechbonanza.blogspot.com/2007/07/jruby-jms-as-replacement-for.html) +* [JMS with JRuby and ActiveMQ](http://nutrun.com/weblog/jms-with-jruby-and-activemq/) +* [First Steps on Ruby/STOMP and ActiveMQ](http://romjethoughts.blogspot.com/2007/05/first-steps-with-rubystomp-and-activemq.html) _by [jerome moliere](http://romjethoughts.blogspot.com/)_ +* [Asynchronous Messaging with Rails](http://beechbonanza.blogspot.com/2007/06/asynchronous-messaging-with-rails.html) _by [Shane Harvie](http://beechbonanza.blogspot.com/)_ +* [Integrating Rails and ActiveMQ with ActiveMessaging/REST](http://notdennisbyrne.blogspot.com/2007/06/integrating-rails-and-activemq-with.html) _by [(not) Dennis Byrne](http://notdennisbyrne.blogspot.com/)_ +* [Asynchronous Messaging using Rails](http://ramesh-rubyonrails.blogspot.com/2007/09/asynchronous-messaging-using-rails.html) +* [Introduction to ActiveMessaging, using Rails with ActiveMQ or Stomp](http://www.infoq.com/articles/intro-active-messaging-rails) _by Andrew Kuklewicz_ +* [Flex, Rails, ActiveMQ and Stomp](http://flexonrails.net/?p=83) _by [Flex On Rails](http://flexonrails.net)_ +* [ActiveMQ stomp end to end test for nagios](http://just-another.net/2008/09/03/activemq-stomp-end-end-test-nagios/) _by [Benjamin Smith](http://just-another.net/)_ +* [How to Create a Stomp-Driven Application in JavaScript Using Apache ActiveMQ as a Message Broker](http://www.kaazing.org/confluence/display/Doc/JavaScript+STOMP+Client+How-To) _by [Kaazing](http://www.kaazing.org/confluence/display/KAAZING/Home)_ +* [Scalable Real-Time Web Architecture, Part 1: Stomp, Comet, and Message Queues](http://cometdaily.com/2008/10/08/scalable-real-time-web-architecture-part-1-stomp-comet-and-message-queues/) _by [Michael Carter](http://cometdaily.com/people/michael_carter/)_ + +#### ActiveMQ and .NET + +* [Messaging with .NET and ActiveMQ](http://remark.wordpress.com/articles/messaging-with-net-and-activemq/) _by [Re.Mark](http://remark.wordpress.com/)_ +* [Using .Net and ActiveMQ](http://remark.wordpress.com/articles/messaging-with-net-and-activemq/) _by [Re.Mark](http://remark.wordpress.com/)_ + +### Message Broker Comparison + +* [RabbitMQ vs Apache ActiveMQ vs Apache qpid](http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/) _by Bhavin Turakhia_ (May, 2010) +* [Python messaging: ActiveMQ and RabbitMQ](http://www.nighttale.net/activemq/python-messaging-activemq-and-rabbitmq.html) _by Night Tale_ +* [Multicasting, Messaging, ActiveMQ vs. MSMQ?](http://stackoverflow.com/questions/32851/multicasting-messaging-activemq-vs-msmq) _by stackoverflow.com_ +* [JMS Performance Comparison](http://www.fiorano.com/whitepapers/java-message-service/JMS-performance-comparison.php) _by www.fiarano.com_ +* [How does ActiveMQ compare to JBossMQ](http://activemq.apache.org/how-does-activemq-compare-to-jbossmq.html) +* [Why use ActiveMQ over JBossMQ?](http://www.mail-archive.com/activemq-users@geronimo.apache.org/msg05630.html) +* [Thread: ActiveMQ vs Websphere MQ](http://www.manning-sandbox.com/thread.jspa?threadID=39270&tstart=45) +* [How does ActiveMQ compare to Mule?](http://activemq.apache.org/how-does-activemq-compare-to-mule.html) +* [HornetQ 2.0GA vs ActiveMQ 5.3 – feature by feature comparison](http://www.roklee.com/?p=52) _by www.roklee.com_ +* [Performance and scalability: Analysis and comparison of ActiveMQ, Websphere MQ and SonicMQ](http://www.theserverside.com/discussions/thread.tss?thread_id=57192) +* [ActiveMQ vs. Camel vs. Qpid](http://activemq.2283324.n4.nabble.com/ActiveMQ-vs-Camel-vs-Qpid-td2355914.html) + +### ActiveMQ tooling and scripts + +* [Bash-MQ](https://github.com/ebuzzing/bash-mq) \- a bash/awk producer/consumer for activemq or any STOMP compatible MQ + +### Books and Reference Guides + +* Beside these extract of interviews, articles and videos there are also some books available. Take a look at the [Books](books.html) page. + +### Additional Resources + +* Many of the Commercial Providers listed on the [Support](support.html) page provide additional examples, articles, tutorials, documentation, etc... + +### ActiveMQ bloggers + +* [Rob Davies](http://rajdavies.blogspot.com/) +* [Hiram Chirino](http://hiramchirino.com/blog/) +* [Gary Tully](http://blog.garytully.com/) +* [Dejan Bosanac](http://www.nighttale.net) +* [Bruce Snyder](http://bruceblog.org/) +* [Christian Posta](http://www.christianposta.com/blog) + diff --git a/async-sends.md b/async-sends.md new file mode 100644 index 0000000..b7fcbe1 --- /dev/null +++ b/async-sends.md @@ -0,0 +1,42 @@ +Apache ActiveMQ ™ -- Async Sends + +[Features](features.html) > [Message Dispatching Features](message-dispatching-features.html) > [Async Sends](async-sends.html) + + +Background +---------- + +ActiveMQ supports sending messages to a broker in sync or async mode. The mode used has a huge impact in the latency of the send call. Since latency is typically a huge factor in the throughput that can achieved by producer, using async sends can increase the performance of your system dramatically. + +The good news is that ActiveMQ sends message in async mode by default in several cases. It is only in cases where the JMS specification required the use of sync sending that we default to sync sending. The cases that we are forced to send in sync mode are when persistent messages are being sent outside of a transaction. + +If you are not using transactions and are sending persistent messages, then each send is synch and blocks until the broker has sent back an acknowledgement to the producer that the message has been safely persisted to disk. This ack provides that guarantee that the message will not be lost but it also costs a huge latency penalty since the client is blocked. + +Many high performance applications are designed to be tolerate a small amount of message loss in failure scenarios. If your application has been designed in this fashion, you can enable the use of async sends to increase throughput even when using persistent messages. + +### Configuring Async Send using a Connection URI + +You can use the [Connection Configuration URI](connection-configuration-uri.html) to configure async sends as follows + +cf = new ActiveMQConnectionFactory("tcp://locahost:61616?jms.useAsyncSend=true"); + +### Configuring Async Send at the ConnectionFactory Level + +You can enable this feature on the [ActiveMQConnectionFactory](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) object using the property. + +((ActiveMQConnectionFactory)connectionFactory).setUseAsyncSend(true); + +### Configuring Async Send at the Connection Level + +Configuring the dispatchAsync setting at this level overrides the settings at the connection factory level. + +You can enable this feature on the [ActiveMQConnection](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html) object using the property. + +((ActiveMQConnection)connection).setUseAsyncSend(true); + +### Also see + +* [Connection Configuration URI](connection-configuration-uri.html) +* [Should I use transactions](should-i-use-transactions.html) +* [Consumer Dispatch Async](consumer-dispatch-async.html) + diff --git a/audit-logging.md b/audit-logging.md new file mode 100644 index 0000000..0a20ca6 --- /dev/null +++ b/audit-logging.md @@ -0,0 +1,38 @@ +Apache ActiveMQ ™ -- Audit Logging + +[Features](features.html) > [Security](security.html) > [Audit Logging](audit-logging.html) + + +For many secured environments there's a requirement to log every user management action. For that ActiveMQ implements _audit logging_, which means that every management action made through JMX or Web Console management interface will be logged and available for later inspection. + +Audit logging comes pre-configured with the distribution, so it's very easy to turn it on or off. All you have to do is to set `org.apache.activemq.audit` system property.  From 5.16.0 the value can be one of "true|entry|exit|all". When the value is all or exit, the audit captures the time the JMX operation completed. You can do that by uncommenting the following line in the startup script: + +ACTIVEMQ\_OPTS="$ACTIVEMQ\_OPTS -Dorg.apache.activemq.audit=true" + +The actual logs are by default stored in `${ACTIVEMQ_HOME}/data/audit.log` and for secured broker you may expect entries similar to the following: + +2010-12-22 12:12:07,225 | INFO | admin requested /admin/createDestination.action \[JMSDestination='test' JMSDestinationType='queue' +secret='4eb0bc3e-9d7a-4256-844c-24f40fda98f1' \] from 127.0.0.1 | qtp12205619-39 +2010-12-22 12:12:14,512 | INFO | admin requested /admin/purgeDestination.action \[JMSDestination='test' JMSDestinationType='queue' +secret='eff6a932-1b58-45da-a64a-1b30b246cfc9' \] from 127.0.0.1 | qtp12205619-36 +2010-12-22 12:12:17,802 | INFO | admin requested /admin/sendMessage.action \[JMSTimeToLive='' JMSXGroupSeq='' AMQ\_SCHEDULED\_DELAY='' JMSType='' +JMSMessageCountHeader='JMSXMessageCounter' JMSXGroupID='' JMSReplyTo='' JMSDestination='test' AMQ\_SCHEDULED\_PERIOD='' JMSText='Enter some text +here for the message body...' JMSDestinationType='queue' AMQ\_SCHEDULED\_CRON='' JMSCorrelationID='' AMQ\_SCHEDULED\_REPEAT='' JMSMessageCount='1' +secret='a0e1df62-14d6-4425-82a2-17aa01a16e7d' JMSPriority='' \] from 127.0.0.1 | qtp12205619-37 + +... + +2010-12-22 12:12:57,553 | INFO | admin called org.apache.activemq.broker.jmx.QueueView.purge\[\] | RMI TCP Connection(8)-192.168.1.107 +2010-12-22 12:13:21,976 | INFO | admin called org.apache.activemq.broker.jmx.QueueView.resetStatistics\[\] | RMI TCP Connection(8)-192.168.1.107 +2010-12-22 12:13:32,457 | INFO | admin called org.apache.activemq.broker.jmx.QueueView.sendTextMessage\[message\] | RMI TCP Connection(6)- +192.168.1.107 + +In this example you can see sample entries for actions taken both in Web Console or via JMX. Log entries contain info like: + +* username (if available), or "anonymous" otherwise +* Operation performed, which in JMX case is the method name and request URL if the operation is performed over web +* Parameters used for the operation and +* IP address from which call has been made + +A default location of the audit log can be configured in `${ACTIVEMQ_HOME}/conf/log4j.properties` + diff --git a/authentication.md b/authentication.md new file mode 100644 index 0000000..135d9a4 --- /dev/null +++ b/authentication.md @@ -0,0 +1,50 @@ + Authentication · ActiveMQ Artemis Documentation + +* [Introduction](./) +* [Configuration](configuration.html) +* [Connectors](connectors.html) +* [Destinations](destinations.html) +* [Authentication](authentication.html) +* [Authorization](authorization.html) +* [SSL](ssl.html) +* [Legal Notice](notice.html) + +* [Published with GitBook](https://www.gitbook.com) + +[Authentication](.) +=================== + +Authentication +============== + +Now that we have our acceptors and addresses ready, it's time to deal with broker security. Artemis inherited most of the security concepts from ActiveMQ. One of the most notable differences is that ActiveMQ _groups_ are now called _roles_ in Artemis. Besides that things should be pretty familiar to existing ActiveMQ users. Let's start by looking into the authentication mechanisms and defining users and roles (groups). + +Both ActiveMQ and Artemis use JAAS to define authentication credentials. In ActiveMQ, that's configured through the appropriate broker plugin in `conf/activemq.xml` + + + + + + +The name of the JAAS domain is specified as a configuration parameter. + +In Artemis, the same thing is achieved by defining `` configuration in `etc/bootstrap.xml` + + + + +From this point on, you can go and define your users and their roles in appropriate files, like `conf/users.properties` and `conf/groups.properties` in ActiveMQ. Similarly, `etc/artemis-users.properties` and `etc/artemis-roles.properties` files are used in Artemis. These files are interchangeable, so you should be able to just copy your existing configuration over to the new broker. + +If your deployment is more complicated that this and requires some advanced JAAS configuration, you'll need go and change the `etc/login.config` file. It's important to say that all custom JAAS modules and configuration you were using in ActiveMQ should be compatible with Artemis. + +Finally, in case you're still using ActiveMQ's _Simple Authentication Plugin_, which defines users and groups directly in the broker's xml configuration file, you'll need to migrate to JAAS as Artemis doesn't support the similar concept. + +results matching "" +=================== + +No results matching "" +====================== + +[](destinations.html)[](authorization.html) + +var gitbook = gitbook || \[\]; gitbook.push(function() { gitbook.page.hasChanged({"page":{"title":"Authentication","level":"1.5","depth":1,"next":{"title":"Authorization","level":"1.6","depth":1,"path":"authorization.md","ref":"authorization.md","articles":\[\]},"previous":{"title":"Destinations","level":"1.4","depth":1,"path":"destinations.md","ref":"destinations.md","articles":\[\]},"dir":"ltr"},"config":{"plugins":\[\],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":\["facebook","google","twitter","weibo","instapaper"\]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"github":"apache/activemq-artemis","theme":"default","githubHost":"https://github.com/","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"ActiveMQ Artemis Documentation","links":{"home":"http://activemq.apache.org/","issues":"http://activemq.apache.org/","contribute":"http://activemq.apache.org/contributing.html"},"gitbook":"3.x.x","description":"ActiveMQ Artemis Migration Guide"},"file":{"path":"authentication.md","mtime":"2017-03-10T10:03:20.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-03-10T13:48:00.771Z"},"basePath":".","book":{"language":""}}); }); \ No newline at end of file diff --git a/authorization.md b/authorization.md new file mode 100644 index 0000000..e618874 --- /dev/null +++ b/authorization.md @@ -0,0 +1,162 @@ + Authorization · ActiveMQ Artemis Documentation + +* [Introduction](./) +* [Configuration](configuration.html) +* [Connectors](connectors.html) +* [Destinations](destinations.html) +* [Authentication](authentication.html) +* [Authorization](authorization.html) +* [SSL](ssl.html) +* [Legal Notice](notice.html) + +* [Published with GitBook](https://www.gitbook.com) + +[Authorization](.) +================== + +Authorization +============= + +To complete security migration, we need to deal with authorization policies as well. In ActiveMQ, authorization is specified using the appropriate broker plugin in `conf/activemq.xml`, like + + + + + + + + + + + + + + + + + + +The equivalent Artemis configuration is specified in `etc/broker.xml` and should look like this + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +As you can see, things are pretty comparable with some minor differences. The most important one is that policies in ActiveMQ are defined on destination names, while in Artemis they are applied to _core queues_ (refresh your knowledge about relation between queues and addresses in previous sections and Artemis user manual). + +The other notable difference is that policies are more fine-grained in Artemis. The following paragraphs and tables show Artemis policies that corresponds to ActiveMQ ones. + +If you wish to allow users to send messages, you need to define the following policies in the respective brokers. + +ActiveMQ + +Artemis + +write + +send + +In Artemis, policies for consuming and browsing are separated and you need to define them both in order to control `read` access to the destination. + +ActiveMQ + +Artemis + +read + +consume + +browse + +It's the same story with `admin` privileges. You need to define separate create and delete policies for durable and non-durable core queues. + +ActiveMQ + +Artemis + +admin + +createNonDurableQueue + +deleteNonDurableQueue + +createDurableQueue + +deleteDurableQueue + +Finally, there's a topic of using wildcards to define policies. The following table shows the wildcard syntax difference. + +Wildcard + +Description + +ActiveMQ + +Artemis + +Delimiter + +Separates words in the path + +. + +. + +Single word + +Match single word in the path + +* + +* + +Any word + +Match any work recursively in the path + +> + +# + +Basically, by default only the _any word_ character is different, so that's why we used `GUESTS.#` in Artemis example instead of ActiveMQ's `GUESTS.>` syntax. + +Powered with this knowledge, you should be able to transform your current ActiveMQ authorization policies to Artemis. + +results matching "" +=================== + +No results matching "" +====================== + +[](authentication.html)[](ssl.html) + +var gitbook = gitbook || \[\]; gitbook.push(function() { gitbook.page.hasChanged({"page":{"title":"Authorization","level":"1.6","depth":1,"next":{"title":"SSL","level":"1.7","depth":1,"path":"ssl.md","ref":"ssl.md","articles":\[\]},"previous":{"title":"Authentication","level":"1.5","depth":1,"path":"authentication.md","ref":"authentication.md","articles":\[\]},"dir":"ltr"},"config":{"plugins":\[\],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":\["facebook","google","twitter","weibo","instapaper"\]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"github":"apache/activemq-artemis","theme":"default","githubHost":"https://github.com/","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"ActiveMQ Artemis Documentation","links":{"home":"http://activemq.apache.org/","issues":"http://activemq.apache.org/","contribute":"http://activemq.apache.org/contributing.html"},"gitbook":"3.x.x","description":"ActiveMQ Artemis Migration Guide"},"file":{"path":"authorization.md","mtime":"2017-03-10T10:03:20.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-03-10T13:48:00.771Z"},"basePath":".","book":{"language":""}}); }); \ No newline at end of file diff --git a/auto.md b/auto.md new file mode 100644 index 0000000..8e1c597 --- /dev/null +++ b/auto.md @@ -0,0 +1,124 @@ +Apache ActiveMQ ™ -- AUTO + +[Connectivity](connectivity.html) > [Protocols](protocols.html) > [AUTO](auto.html) + + +Starting with version 5.13.0, ActiveMQ supports wire format protocol detection.   OpenWire, STOMP, AMQP, and MQTT can be automatically detected.  This allows one transport to be shared for all 4 types of clients. + +### Enabling AUTO over TCP + +To configure ActiveMQ auto wire format detection over a TCP connection use the `auto` transport prefix. For example, add the following transport configuration in your XML file: + + + +### Enabling AUTO over SSL + +To configure ActiveMQ auto wire format detection over an SSL connection use the `auto+ssl` transport prefix. For example, add the following transport configuration in your XML file: + + + +* For more details on using SSL with ActiveMQ, see the following article ([How do I use SSL](http://activemq.apache.org/how-do-i-use-ssl.html)). + +### Enabling AUTO over NIO + +To configure ActiveMQ auto wire format detection over an NIO TCP connection use the `auto+nio`transport prefix. For example, add the following transport configuration in your XML file: + + + +### Enabling AUTO over NIO SSL + +To configure ActiveMQ auto wire format detection over an NIO SSL connection use the `auto+nio+ssl` transport prefix. For example, add the following transport configuration in your XML file: + + + +### Configuring AUTO Transport Options + +There are some configuration options that can be set. + +Parameter Name + +Default Value + +Description + +protocolDetectionTimeOut + +30000 + +The time before a connection times out in milliseconds. This is similar to maxInactivityDuration. If a client makes a connection to but doesn't send data or enough data for the protocol to be detected then the thread will sit and wait for more data to come in over the socket. This will let the broker kill the connections if they do not complete the protocol initialization after a certain period of time. The default is 30 seconds. Set a default to <= 0 to disable this. + +maxConnectionThreadPoolSize + +MAX_INT + +This option allows the configuration of the maximum size of the thread pool that handles connection attempts. Lowering this number can help prevent the broker from running out of threads if there are many different clients attempting to connect at the same time. By default it is turned off by setting to MAX_INT + + +An example that configures the transport with a maximum protocol detection time of 5 seconds: + + + +### Configuring Wire Formats + +OpenWire is the default Wire Format that ActiveMQ uses.  It provides a highly efficent binary format for high speed messaging.  OpenWire options can be configured on a JMS client's connection URI string or on a Brokers transport bind URI. + +Parameter Prefix + +Description + +wireFormat. + +Applies the option to all wire formats. + +wireFormat.default. + +Applies the option to the default format which is OpenWire + +wireFormat.stomp. + +Applies the option to the STOMP wire format + +wireFormat.amqp. + +Applies the option to the AMQP wire format + +wireFormat.mqtt. + +Applies the option to the MQTT wire format + +An example of a property that applies to all formats: + + + +An example of a property only applied to OpenWire would be: + + + +### Configuring Enabled Wire Protocols + +By default all wire protocols are available.  This can be configured to only enable certain formats by setting the property  auto`.protocols.`  + +Value + +Description + +default + +Enables OpenWire + +amqp + +Enables AMQP format + +stomp + +Enables STOMP format + +mqtt + +Enables MQTT format + +An example showing only OpenWire and STOMP enabled: + + + diff --git a/axis-and-cxf-support.md b/axis-and-cxf-support.md new file mode 100644 index 0000000..4b63759 --- /dev/null +++ b/axis-and-cxf-support.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Axis and CXF Support + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Axis and CXF Support](axis-and-cxf-support.html) + + +ActiveMQ supports both [Apache Axis](http://ws.apache.org/axis/) and [Apache CXF](http://incubator.apache.org/cxf) out of the box. + +Axis support is @deprecated + +Support for Axis is deprecated, and will be removed from ActiveMQ 5.8 onwards. + +Just add the [required jars](initial-configuration.html) to your classpath and you should be able to use JMS transport support inside either web service framework to send and receive messages using ActiveMQ queues or topics for reliable messaging. + +For an example of using the JMS transport with Axis, consult [JMS Transport reference](http://ws.apache.org/axis2/1_2/jms-transport.html) or try looking at the [JMS example](http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_4/modules/samples/jms/) that comes with bundled with Axis' binary and source downloads. + +For examples of using JMS transport with CXF, please see its [JMS publish/subscriber sample](http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/jms_pubsub/) and the [JMS queue sample](http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/jms_queue/) available in the CXF source and binary downloads. + diff --git a/banner.md b/banner.md new file mode 100644 index 0000000..cdc04d2 --- /dev/null +++ b/banner.md @@ -0,0 +1,5 @@ +Apache ActiveMQ ™ -- Banner + +[Site](site.html) > [Banner](banner.html) + + diff --git a/becoming-a-committer.md b/becoming-a-committer.md new file mode 100644 index 0000000..3030b91 --- /dev/null +++ b/becoming-a-committer.md @@ -0,0 +1,44 @@ +Apache ActiveMQ ™ -- Becoming a committer + +[Developers](developers.html) > [Becoming a committer](becoming-a-committer.html) + + +This page details how to become a committer. + +### How to become a committer + +First of all you need to get involved and [Contribute](contributing.html) via the mail list, forums, edit the documention, work on the issue tracker and submit patches. + +Once you're contributing and your work is good, one of our [Team](team.html) may invite you to be a committer (after we've called a vote). When that happens, if you accept, the following process kicks into place... + +Note that becoming a committer is not just about submitting some patches; its also about helping out on the development and user [Discussion Forums](discussion-forums.html), helping with documentation and the issue tracker. + +### Becoming a committer steps + +* Download and print the Apache Contributor License Agreement from [here](http://www.apache.org/dev/new-committers-guide.html). You need to sign it and fax it to Apache. In the past I've found its often faster to also post it via snail mail ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) +* wait for your name to appear on the list of [received CLAs](http://people.apache.org/~jim/committers.html#unlistedclas) +* once thats done let us know and we can apply to Apache Infrastructure to have your account created; we'll also need to know + * your full name + * your preferred email address + * your preferred unix account name + +### Getting started at Apache + +Firstly add yourself to the [Team](team.html) page + +Now go read the instructions on the [new committers guide](http://www.apache.org/dev/new-committers-guide.html). Its also worth viewing [http://www.apache.org/dev](http://www.apache.org/dev). + +### Enabling your GIT account + +Once you've got your Apache account working you need to enable GIT access**.** Add your SSH Key at [https://id.apache.org/](https://id.apache.org/) + +### Configuring GIT + +Configure GIT to use unix line endings. + +git config --add core.autocrlf input + +### Getting Karma in JIRA and Confluence + +Mail the dev list and ask for karma for JIRA / Confluence giving them details of your username you used to register with them both. We can then grant the necessary karma so you can start grabbing JIRA issues or editing the wiki + diff --git a/benchmark-tests.md b/benchmark-tests.md new file mode 100644 index 0000000..a1e2b8a --- /dev/null +++ b/benchmark-tests.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- Benchmark Tests + +[Developers](developers.html) > [Benchmark Tests](benchmark-tests.html) + + +ActiveMQ Maven Performance test plugin. +--------------------------------------- + +Starting with ActiveMQ 5.5 and above the plugin can be obtained from maven or if you download the src from SVN you can build it yourself. To run the following Maven goals make sure you are inside a Maven2 project directory where its POM is enabled with the Maven2 plugin. The plugin is further documented [here](activemq-performance-module-users-manual.html). + +Third-Party JMS performance tests +--------------------------------- + +There are a number of third-party JMS performance test tools that can be used to measure the performance of various features of brokers and compare them. + +* [Apache JMeter](http://jmeter.apache.org/) +* [jms-benchmark](https://github.com/chirino/jms-benchmark) + diff --git a/blazeds.md b/blazeds.md new file mode 100644 index 0000000..55600d3 --- /dev/null +++ b/blazeds.md @@ -0,0 +1,54 @@ +Apache ActiveMQ ™ -- BlazeDS + +[Connectivity](connectivity.html) > [Containers](containers.html) > [BlazeDS](blazeds.html) + + +BlazeDS +------- + +You may also want to check out the [Simplified BlazeDS and JMS article](http://mmartinsoftware.blogspot.com/2008/05/simplified-blazeds-and-jms.html) by [Michael Martin](http://mmartinsoftware.blogspot.com/). + +Using the dynamicQueues feature of the [JNDI Support](jndi-support.html) Ryan Gardner created thisworking BlazeDS messaging-config.xml file: + + + + + + + + + + + + + + + + + + + Topic + javax.jms.TextMessage + topicConnectionFactory + dynamicTopics/SMSReturnMessages + + NON_PERSISTENT + DEFAULT_PRIORITY + AUTO_ACKNOWLEDGE + + + Context.INITIAL\_CONTEXT\_FACTORY + org.apache.activemq.jndi.ActiveMQInitialContextFactory + + + Context.PROVIDER_URL + vm://localhost + + + + + + + + + diff --git a/blob-messages.md b/blob-messages.md new file mode 100644 index 0000000..82cfa46 --- /dev/null +++ b/blob-messages.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- Blob Messages + +[Features](features.html) > [Message Features](message-features.html) > [Blob Messages](blob-messages.html) + + +Blob Messages +------------- + +A common requirement these days is to send around massive files for processing by consumers. Folks want to take advantage of the message broker's features such as reliable, transactional load balancing of queues with smart routing but still manage to deal with huge logical files. + +So we are introducing a BlobMessage API which allows massive BLOBs (Binary Large OBjects) to be sent around in some out-of-band transport mechanism. Possible out-of-band mechanisms could be HTTP or FTP or SCP or some other point-to-point protocol. + +There are now new createBlobMessage() methods on the ActiveMQSession that you can use for sending BLOBs. + +### Sending BlobMessages + +You can send a URL around the JMS network, such as a file or URL which exists on some shared file system or web server using the following code + +BlobMessage message = session.createBlobMessage(new URL("http://some.shared.site.com"); +producer.send(message); + +Or if you are creating files or streams dynamically on the client you may want to upload the file to the broker or some server (Jetty, FTP, WebDav or whatever). In which case you'd use one of the following methods + +// lets use a local file +BlobMessage message = session.createBlobMessage(new File("/foo/bar"); +producer.send(message); + +// lets use a stream +InputStream in = ...; +BlobMessage message = session.createBlobMessage(in); +producer.send(message); + +### Receiving BlobMessages + +A [BlobMessage](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/BlobMessage.html) is a regular JMS message so it can be received just like any other message... + +public class MyListener implements MessageListener { + public void onMessage(Message message) { + if (message instanceof BlobMessage) { + BlobMessage blobMessage = (BlobMessage) message; + InputStream in = blobMessage.getInputStream(); + + // process the stream... + } + } +} + +### Configuring the BLOB Transfer Policy + +You can explicitly configure the BlobTransferPolicy on an ActiveMQConnectionFactory, ActiveMQConnection or ActiveMQSession. Typically its done on the factory either via Java code or Spring. + +You can use the [Connection Configuration URI](connection-configuration-uri.html) to configure these things via a URI. + +For example you can connect to a broker also specifying the uploadUrl to use via + +tcp://localhost:61616?jms.blobTransferPolicy.uploadUrl=http://foo.com + diff --git a/board-reports.md b/board-reports.md new file mode 100644 index 0000000..72a40d2 --- /dev/null +++ b/board-reports.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- Board Reports + +[Developers](developers.html) > [Board Reports](board-reports.html) + + +Board Reports +------------- + +The following are the Apache Software Foundation Board Reports. + +* [2007 April](2007-april.html) + diff --git a/books.md b/books.md new file mode 100644 index 0000000..6fc7b3c --- /dev/null +++ b/books.md @@ -0,0 +1,47 @@ +Apache ActiveMQ ™ -- Books + +[Community](community.html) > [Books](books.html) + + +Books +===== + +This page lists the known books about Apache ActiveMQ. If you happen to know a book which is not listed then please contact us, for example using the [Mailing Lists](mailing-lists.html). + +* [ActiveMQ in Action](http://bit.ly/2je6cQ) +* [Instant Apache ActiveMQ Messaging Application Development](http://goo.gl/RFltj) +* [Mobile and Web Messaging](http://shop.oreilly.com/product/0636920032366.do) +* [Apache ActiveMQ Reference Guide](http://www.ttmsolutions.com/Apache_Software/ActiveMQ_Reference_Guide.php) + +### ActiveMQ in Action + +[ActiveMQ in Action](http://bit.ly/2je6cQ) by [Bruce Snyder](http://bruceblog.org/), [Dejan Bosanac](http://www.nighttale.net/) and [Rob Davies](http://rajdavies.blogspot.com/). Published by [Manning](http://www.manning.com). + +[![](http://www.manning.com/snyder/snyder_cover150.jpg)](http://bit.ly/2je6cQ) + +Apache ActiveMQ in Action is a thorough, practical guide to implementing message-oriented systems in Java using ActiveMQ. The book lays out the core of ActiveMQ in clear language, starting with the anatomy of a JMS message and moving quickly through connectors, message persistence, authentication and authorization. With the basics well in hand, you move into interesting examples of ActiveMQ at work, following a running Stock Portfolio application. You'll integrate ActiveMQ with containers like Geronimo and JBoss and learn to tie into popular Java-based technologies like Spring Framework. + +Along the way, you'll pick up best practices forged out of the deep experience the authors bring to the book. You'll learn to integrate with non-Java technologies and explore advanced topics like broker topologies and configuration and performance tuning. + +### Instant Apache ActiveMQ Messaging Application Development + +[Instant Apache ActiveMQ Messaging Application Development](http://goo.gl/RFltj) by [Timothy Bish](http://timbish.blogspot.com/). Published by [Packt Publishing](http://www.packtpub.com/). + +[![](http://dgdsbygo8mp3h.cloudfront.net/sites/default/files/imagecache/productview_larger/9413OS.jpg)](http://goo.gl/RFltj) + +Instant ActiveMQ Application Development How-to is for the developers who are new to Java Message Service application development or new to JMS development using ActiveMQ. Readers will come away ready to solve complicated messaging related problems using the JMS API and ActiveMQ. + +Filled with practical, step-by-step instructions and clear explanations for the most important and useful tasks.This is a Packt Instant How-to guide, which provides concise and practical recipes to help you get started writing applications with ActiveMQ using practical examples. + +### Mobile and Web Messaging + +[Messaging Protocols for Web and Mobile Devices by Jeff Mesnil. Published by OReilly.](http://shop.oreilly.com/product/0636920032366.do) + +![](http://akamaicovers.oreilly.com/images/0636920032366/cat.gif) + +Learn how to use messaging technologies to build responsive and resilient applications for mobile devices and web browsers. With this hands-on guide, you’ll use the STOMP and MQTT messaging protocols to write iOS and web applications capable of sending and receiving GPS and device sensor data, text messages, and alerts. + +### Apache ActiveMQ Reference Guide Kit + +The TTM's "[Apache ActiveMQ Reference Guide](http://www.ttmsolutions.com/Apache_Software/ActiveMQ_Reference_Guide.php)" (PDF book) provides information to learn how to implement, deploy, administer, and tune Apache ActiveMQ. The Reference Guide includes details on how to work with ActiveMQ components, connectors, client/broker configuration, master/slave configuration, administration, logging, performance tuning and advanced features. + diff --git a/broadcasting.md b/broadcasting.md new file mode 100644 index 0000000..8ab173d --- /dev/null +++ b/broadcasting.md @@ -0,0 +1,40 @@ +Apache ActiveMQ ™ -- Broadcasting + +[Features](features.html) > [ActiveMQ Real Time](activemq-real-time.html) > [Broadcasting](broadcasting.html) + + +ActiveBlaze provides infrastructure for fast, reliable peer to peer messaging to meet the demands of high performance and collaborative applications. +Using the basic building block of a Channel, there exists a functional hierarchy used for different problem domains, each one a super-set of the previous one. + +The BlazeChannel supports broadcasting on Topics - either using reliable multicast or point-cast. + +To use a BlazeChannel create one from the a factory: + +import org.apache.activeblaze.*; +... +BlazeChannelFactory factory = new BlazeChannelFactory(); +BlazeChannel sender = factory.createChannel(); +//start the channel and send a message +sender.start(); + +String destination = "foo.bar"; +BlazeMessage msg = new BlazeMessage("test payload"); +sender.broadcast(destination,msg); +//shutdown the sender +sender.shutDown(); + +You can similarly subscribe to Topic messages by using a listener + +BlazeChannel receiver = factory.createChannel(); +receiver.start(); + +//add a listener + +receiver.addBlazeTopicMessageListener(destination, new BlazeMessageListener() { + public void onMessage(BlazeMessage msg) { + System.out.println("Got a msg: " + msg); + } + }); + +receiver.shutDown(); + diff --git a/broker-camel-component.md b/broker-camel-component.md new file mode 100644 index 0000000..835933c --- /dev/null +++ b/broker-camel-component.md @@ -0,0 +1,70 @@ +Apache ActiveMQ ™ -- Broker Camel Component + +[Features](features.html) > [Broker Camel Component](broker-camel-component.html) + + +Broker Camel Component +---------------------- + +**Available as of ActiveMQ 5.9** + +Embedding Apache Camel inside the ActiveMQ broker provides great flexibility for extending the message broker with the integration power of Camel. Apache Camel routes also benefit in that you can avoid the serialization and network costs of connecting to ActiveMQ remotely - if you use the [activemq component](http://camel.apache.org/activemq.html). + +If however, you want to change the behavior of messages flowing through the ActiveMQ message broker itself you will be limited to the shipped set of ActiveMQ broker [Interceptors](http://activemq.apache.org/interceptors.html) \- or develop your own [Broker plugin](http://activemq.apache.org/developing-plugins.html) and then introduce that as a jar on to the class path for the ActiveMQ broker. The **`broker`** Camel component makes this even easier. It intercepts messages as they move through the broker itself, allowing them to be modified and manipulated before they are persisted to the message store or delivered to end consumers. + +For example [by defining a CamelContext to run inside the broker's JVM](http://activemq.apache.org/how-should-i-package-applications-using-camel-and-activemq.html) the **`broker`** component can intercept all messages published to a Topic, say, and publish them to a Queue instead, changing their priority along the way: + + + + + 9 + + + + +Notes: + +* A broker component only adds an intercept into the broker if its started - so the broker component will not add any overhead to the running broker until its used - and then the overhead will be trivial. +* Messages are intercepted by the broker component when they have been received by the broker - but before they are processed (persisted or routed to a destination). +* The **`IN`** message on the Exchange is a **`CamelMessage`**, but also a JMS Message (messages routed through ActiveMQ from STOMP/MQTT/AMQP etc. are always translated into JMS messages). +* W[ildcards](http://activemq.apache.org/wildcards.html) can be used on a destination to intercept messages from destinations matching the wildcard. +* After the intercept, you have to explicitly send the message back to the broker component - this allows you to either drop select messages (by not sending) - or, like in the above case - re-route the message to a different destination. + + + +There is one deliberate caveat though, only intercepted messages can be sent to a **`broker`** component. For example, routing a Camel message from another Component e.g. **`file`**, will result in an error. + +Extra classes that have been added to the **`activemq-broker`** package to support the **`broker`** component. They allow the state of the running broker to be interrogated without using JMX. These classes are: + +* [org.apache.activemq.broker.view.MessageBrokerView](http://activemq.apache.org/maven/5.9.0/apidocs/org/apache/activemq/broker/view/MessageBrokerView.html) \- provides methods to retrieve statistics on a the broker +* From the **`org.apache.activemq.broker.view.MessageBrokerView`** \- you can retrieve a [org.apache.activemq.broker.view.BrokerDestinationView](http://activemq.apache.org/maven/5.9.0/apidocs/org/apache/activemq/broker/view/BrokerDestinationView.html) for a particular destination. + +### Example + +How to route messages when a destination's queue depth has reached a certain limit: + + + + + + + #{@destinationView.queueSize >= 100} + + + + + + + + + + + + + + + + + +This is using the Camel Message Router pattern. Note the use of the Spring expression language **`spel`** in the **`when`** clause. + diff --git a/broker-configuration-uri.md b/broker-configuration-uri.md new file mode 100644 index 0000000..3cdc966 --- /dev/null +++ b/broker-configuration-uri.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- Broker Configuration URI + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Broker Configuration URI](broker-configuration-uri.html) + + +### Overview + +An ActiveMQ broker can be extensivly configured using a single configuration URI. The following URI schemes are supported + +Scheme + +Link + +Description + +xbean: + +[Broker XBean URI](broker-xbean-uri.html) + +Configures the broker using an [Xml Configuration](xml-configuration.html) from an XML file which is on the classpath (or in 4.2 onwards can be on the file system or an external URL) which uses Spring and xbean-spring to configure the broker + +broker: + +[Broker URI](broker-uri.html) + +Configures the broker explicitly using a URI syntax + +properties: + +[Broker Properties URI](broker-properties-uri.html) + +Configures the broker explicitly using a URI syntax + +For the most flexible and powerful option we recommend the [Xml Configuration](xml-configuration.html) via the [Broker XBean URI](broker-xbean-uri.html) to configure AcitveMQ brokers. + +If you are worried about jar dependencies then either the [Broker URI](broker-uri.html) or the [Broker Properties URI](broker-properties-uri.html) are useful as they are very simple and require no dependencies on Spring or xbean-spring and don't require any XML. + diff --git a/broker-properties-uri.md b/broker-properties-uri.md new file mode 100644 index 0000000..33a9c10 --- /dev/null +++ b/broker-properties-uri.md @@ -0,0 +1,48 @@ +Apache ActiveMQ ™ -- Broker Properties URI + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Broker Configuration URI](broker-configuration-uri.html) > [Broker Properties URI](broker-properties-uri.html) + + +Broker Properties URI +--------------------- + +From version 4.2 of ActiveMQ onwards the Broker Properties URI allows you to [run a configured broker](run-broker.html) by referencing a properties file which could be on the classpath, a local file or a remote URL. + +#### Syntax + +**properties:name** + +Where name is some name which is resolved on the classpath, as a local file or a remote URL which points to the properties file used to configure the broker. + +##### Example URI + +The following examples show variations in using the URI + +properties:/foo/bar.properties +properties:foo.properties +properties:http://foo.com/foo.properties + +Here is [an example properties file](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/config/broker.properties) + +\## --------------------------------------------------------------------------- +\## Licensed to the Apache Software Foundation (ASF) under one or more +\## contributor license agreements. See the NOTICE file distributed with +\## this work for additional information regarding copyright ownership. +\## The ASF licenses this file to You under the Apache License, Version 2.0 +\## (the "License"); you may not use this file except in compliance with +\## the License. You may obtain a copy of the License at +\## +\## http://www.apache.org/licenses/LICENSE-2.0 +\## +\## Unless required by applicable law or agreed to in writing, software +\## distributed under the License is distributed on an "AS IS" BASIS, +\## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +\## See the License for the specific language governing permissions and +\## limitations under the License. +\## --------------------------------------------------------------------------- +\# START SNIPPET: example +useJmx = false +persistent = false +brokerName = Cheese +\# END SNIPPET: example + diff --git a/broker-uri.md b/broker-uri.md new file mode 100644 index 0000000..05ca546 --- /dev/null +++ b/broker-uri.md @@ -0,0 +1,80 @@ +Apache ActiveMQ ™ -- Broker URI + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Broker Configuration URI](broker-configuration-uri.html) > [Broker URI](broker-uri.html) + + +Broker URI +---------- + +The Broker URI allows you to [run a configured broker](run-broker.html) using a single URI for all the configuration. + +#### Syntax + +The URI is assumed to be a composite uri with multiple uris that are used to bind the connectors of the broker. + +**broker:(transportURI,network:networkURI)/brokerName?brokerOptions** + +If a composite URI use the network: scheme, then the rest of the URI is bound as a network connector. + +##### Broker Options + +Option Name + +Default Value + +Description + +useJmx + +true + +Should the broker be exposed to JMX? + +persistent + +true + +Should the broker use persistent storage + +populateJMSXUserID + +false + +Should the broker populate the [JMSXUserID](jmsxuserid.html) property of messages to indicate the authenticated sender username who sent the message + +useShutdownHook + +true + +should the broker install a shutdown hook so that it can properly shut itself down on a JVM kill + +brokerName + +localhost + +The name of the broker + +deleteAllMessagesOnStartup + +false + +Should all the messages in the persistent store be deleted on broker startup + +enableStatistics + +true + +Should statistics gathering be enabled + +##### Example URI + +The following example starts up a broker accepting connections on port 61616, and establishes a network connection to remotehost:61616 and disables persistence. + +broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true + +You can use the Broker URI on other transports + +If you are using another transport - such as the [VM Transport Reference](vm-transport-reference.html) then you can refer to the above broker URI properties inside that URL. e.g. using the URL + +vm://localhost?broker.persistent=false + diff --git a/broker-xbean-uri.md b/broker-xbean-uri.md new file mode 100644 index 0000000..7d9a209 --- /dev/null +++ b/broker-xbean-uri.md @@ -0,0 +1,40 @@ +Apache ActiveMQ ™ -- Broker XBean URI + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Broker Configuration URI](broker-configuration-uri.html) > [Broker XBean URI](broker-xbean-uri.html) + + +Broker XBean URI +---------------- + +The Broker XBean URI allows you to [run a configured broker](run-broker.html) by referencing an [Xml Configuration](xml-configuration.html) on the classpath. The URI points to an XML document which can be parsed via XBean or Spring. This URI is typically on the classpath; though in 4.2 onwards you can point to a file or URL as well. + +#### Syntax + +Syntax + +Description + +xbean:classPathResource + +Where classPathResource is some name which is resolved on the classpath and interpreted to be an XML document. + +xbean: + +file:filePathResource + +Where filePathResource is some name which is resolved on the file system and interpreted to be an XML document. + +xbean:urlResource + +Where urlResource is some resource which points to an XML document + +##### Example URI + +The following example starts up a broker using the activemq.xml configuration file which is on the classpath + +xbean:activemq.xml + +The following example starts up a broker using the activemq.xml configuration file which is in the current directory + +xbean:file:./activemq.xml + diff --git a/building-activemq-cpp.md b/building-activemq-cpp.md new file mode 100644 index 0000000..cc1e2bd --- /dev/null +++ b/building-activemq-cpp.md @@ -0,0 +1,141 @@ +Apache ActiveMQ ™ -- Building ActiveMQ CPP + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [ActiveMQ C++ Clients](activemq-c-clients.html) > [Building ActiveMQ CPP](building-activemq-cpp.html) + + +Dependencies +------------ + +### libuuid + +The build requires the **libuuid** library that is part of the e2fsprogs package and is available from [http://e2fsprogs.sourceforge.net/](http://e2fsprogs.sourceforge.net/) which is not always installed by default. + +### cppunit + +The package contains a complete set of cppunit tests. In order for you to build an run the tests, you will need to download and install the cppunit suite. See [http://cppunit.sourceforge.net/cppunit-wiki](http://cppunit.sourceforge.net/cppunit-wiki) + +or on Fedora type the following: + +sudo yum install cppunit + +Make sure that the paths to the installed cppunit library and includes are visible in your current shell before you try building the tests. + +Windows users will need to build the cppunit library using the CPPUnit MSVC project files.  A discussion of the build process can be found on the CPPUnit wiki under [CPPUnit Platform build instructions](http://cppunit.sourceforge.net/cppunit-wiki/BuildingCppUnit1) this covers both MSVC along with many other platforms and tool suites. + +### GNU Build System (for building on *nix) + +To Generate the ./configure script use to create the Makefiles, you need the following software installed: + +Tool + +Recommended Version + +autoconf + +>= 2.59 + +automake + +>= 1.9.6 + +libtool + +>= 1.5.22 + +Building on *nix (Unix/Linux/OS X/Cygwin) +----------------------------------------- + +This assumes you have all of the project dependencies installed. We're now ready to create the configure script. To do this, run: + +./autogen.sh + +You may see the following warnings when running this command: + +src/test-integration/Makefile.am:44: `CXXFLAGS' is a user variable, you should not override it; +src/test-integration/Makefile.am:44: use `AM_CXXFLAGS' instead. +src/test/Makefile.am:104: `CXXFLAGS' is a user variable, you should not override it; +src/test/Makefile.am:104: use `AM_CXXFLAGS' instead. + +These can be ignored. We override CXXFLAGS in the makefiles for the unit and integration tests in order to suppress compiler warnings. + +This should be run the first time and anytime you change configure.ac or any of the Makefile.am files. + +Solaris 10 Note + +CPP_UNIT might not build until you correct the file libstdc++.la to contain the correct data, see this discussion. + +[http://forum.sun.com/jive/thread.jspa?threadID=73150](http://forum.sun.com/jive/thread.jspa?threadID=73150) + +The configure script will customize the way the software is built and installed into your system along with detecting the available libraries that have been installed. To use the default configuration just run: + +./configure + +For more help on how to customize the build configuration, run: + +./configure --help + +Once the configure script has run successfully, you are ready to build. Run: + +make + +This will build all of the core ActiveMQ CPP source code. To build and install the code into the system directories, run: + +make install + +You will have to become the superuser in order to be able to install the files. + +Doxygen +------- + +To generate the doxygen documentation for the project, just run: + +make doxygen-run + +Running Tests +------------- + +### Unit Tests + +In order to build and run the suite of unit tests, run: + +make check + +This will verify that the library is functioning correctly on the target platform. In addition, it will generate the integration tests binary. + +### Integration Tests + +The library also contains a set of tests that are run against a real AMQ broker. These allow you to validate this distribution of ActiveMQ CPP against your broker. Running these without a broker will result in failed tests. The tests currently hard-code the broker url to be tcp://localhost:61613 for stomp and tcp://localhost:61616 for openwire. + +The integration tests are built via "make check". To run them, first start a broker and then + +cd src/test-integration +./activemq-test-integration + +This will take quite some time to complete, so be patient. + +Example +------- + +There is an example application that ships with the distribution in src/examples. The example is compiled by default with the "make" command, but can easily be compiled manually using the command: + +g++ -o main -pthread -I ../main main.cpp ../../out/libactivemq-cpp-0\_0\_2.a -luuid + +Notes for Windows users +----------------------- + +We support using the GNU compiler on Windows, using the Cygwin package. However we also support using the MSVC compiler on Windows. + +There are a couple or things that you will need to setup to ensure that the MSVC compile succeeds. + +* You need to download and install the Platform SDK if you don't have it installed already. +* Ensure that the path to you MSVC install is set in the PATH env variable. You can test this by typing cl.exe at the command line, if you get an error complaining that its not found, then you'll need to fix your PATH. +* Set the INCLUDE env variable to include the path to your MSVC includes, and the platform SDK includes. For example: + + INCLUDE = D:\\Program Files\\Microsoft Visual Studio 8\\VC\\include;D:\\Program Files\\Microsoft Platform SDK\\Include\\* + +* Set the LIB env variable to include the path to your MSVC libs, and the Platform SDK libs. For example: + + LIB = D:\\Program Files\\Microsoft Visual Studio 8\\VC\\lib;D:\\Program Files\\Microsoft Platform SDK\\Lib + +* The Project files reference the CPPUnit libraries for the Integration and Unit tests builds.  In order for these to build correctly you must either place the CPPUnit libraries in a directory listed in the project settings, or add a new location for your install of CPPUnit.  + diff --git a/building-faqs.md b/building-faqs.md new file mode 100644 index 0000000..09631e9 --- /dev/null +++ b/building-faqs.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- Building FAQs + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [Building FAQs](building-faqs.html) + +These are general hints and tips on Building the Library on various platforms etc. + +* [General Build Issues](general-build-issues.html) +* [OpenSSL Support](openssl-support.html) + * [Enable OpenSSL support with autotools](enable-openssl-support-with-autotools.html) + * [How do I prevent autoconf from enabling OpenSSL support](how-do-i-prevent-autoconf-from-enabling-openssl-support.html) + * [How to enable SSL support on Windows](how-to-enable-ssl-support-on-windows.html) +* [Solaris Platform](solaris-platform.html) + * [Errors from libstd++.la on Solaris 10 using the GNU Compiler](errors-from-libstdla-on-solaris-10-using-the-gnu-compiler.html) + * [Errors saying "no rule to make target"](errors-saying-no-rule-to-make-target.html) + * [Using the Solaris CC compiler](using-the-solaris-cc-compiler.html) + diff --git a/building.md b/building.md new file mode 100644 index 0000000..8f271fb --- /dev/null +++ b/building.md @@ -0,0 +1,74 @@ +Apache ActiveMQ ™ -- Building + +[Developers](developers.html) > [Building](building.html) + + +Building ActiveMQ from Source +----------------------------- + +ActiveMQ uses [Maven](http://maven.apache.org/) as its build and management tool. If you don't fancy using Maven you can use your IDE directly or [Download](download.html) a distribution or JAR. + +### Prequisites + +**Required:** + +* Download and [install Maven](http://maven.apache.org/download.html). +* Get the latest [Source](source.html) +* JDK (1.6 for version <= 5.10, 1.7 for version > 5.10) + +Using Maven 2 (ActiveMQ 4.1.x and Up) +------------------------------------- + +ActiveMQ 4.1.x and up use Maven 2 to Build. We recommend you download and install [Maven 2.0.4](http://maven.apache.org/download.html). + +You should set the MAVEN_OPTS environment variable to -Xmx800m. There are portions of the ActiveMQ build that are very memory intensive. Increase the maven memory limit so that the build does not fail for you. + +### Doing a Quick Build + +mvn -Dtest=false -DfailIfNoTests=false clean install + +### Using an IDE + +If you prefer to use an IDE then you can auto-generate the IDE's project files using maven plugins. e.g. + +mvn eclipse:eclipse + +or + +mvn idea:idea + +Importing into Eclipse + +If you have not already done so, you will need to make Eclipse aware of the Maven repository so that it can build everything. In the preferences, go to Java->Build Path->Classpath and define a new Classpath Variable named M2_REPO that points to your local Maven repository (i.e., `~/.m2/repository` on Unix and `c:\Documents and Settings\\.m2\repository` on Windows). + +### Other Maven 2 Goals + +For more details try the [Examples](examples.html) or [Benchmark Tests](benchmark-tests.html) +Please refer to the [plugin reference](http://maven.apache.org/plugins/index.html) for more details on using them. + +Using Maven 1 (ActiveMQ 4.0.x and Down) +--------------------------------------- + +ActiveMQ 4.0.x and down use Maven 1 to Build. We recommend you download and install [Maven 1.0.2](http://maven.apache.org/maven-1.x/start/download.html). + +### Doing a Quick Build + +maven -Dmaven.test.skip.exec=true + +### Using an IDE + +If you prefer to use an IDE then you can autogenerate the IDE's project files using maven plugins. e.g. + +maven eclipse + +or + +maven idea + +etc. + +### Other Maven 1 Goals + +For more details try the [Examples](examples.html) or [Benchmark Tests](benchmark-tests.html) +Please refer to the [plugin reference](http://maven.apache.org/maven-1.x/plugins/bundled/) for more details on using them. + diff --git a/c-integration-scenarios.md b/c-integration-scenarios.md new file mode 100644 index 0000000..d8218ce --- /dev/null +++ b/c-integration-scenarios.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- C integration scenarios + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [C Integration](c-integration.html) > [C integration scenarios](c-integration-scenarios.html) + + +One way and RPC with C services +------------------------------- + +Its common for the C services to be the back end services. The 2 common use cases are + +* we send a message one-way to a C service +* we send a message to a C-service and wait for the result, then reply back to the originator the result + +### Making one-ways reliable + +If we assume that the C-service is fairly atomic, it works or it doesn't and does not partially work, then for one-way handling we just need some code to... + +1. consume a message from some destination +2. invoke the C service and wait until the service completes +3. acknowledge the message + +If invoking the C service fails (such that we know it wasn't invoked), we could automatically retry a certain number of times before we acknowledge the message. + +The problem is if the above code were to be killed before the message is acknowledged, we'd invoke the service again. + +To get around this we could persist that we have invoked the service, so that if we are killed we would not invoke the service again but put the message on some dead letter queue for manual reconciliation. + +1. consume a message from some destination +2. have we seen this message before - if so put on a dead letter queue for manual reconciliation +3. persist that we have processed this message +4. invoke the C service and wait until the service completes +5. acknowledge the message + +Another approach could be for the C service to say whether or not it has successfully processed the message before. This just pushes the problem inside the C code requiring that it persists when things are invoked and when things complete so that it can know when duplicate messages are delivered. + +### making RPC reliable + +This scenario is as above but rather than just acknowledge the inbound message we wish to send a reply and acknowledge the inbound message. So this could be regarded as a small JMS transaction. + +1. consume a message from some destination +2. have we seen this message before - if so put on a dead letter queue for manual reconciliation +3. persist that we have processed this message +4. invoke the C service and wait until the service completes +5. send the reply with results from the C service +6. commit the JMS transaction + +Again if the C service is capable of knowing if it has seen the message before then we can avoiid step 3. + +### connectivity to C + +We can link C into a Java process and invoke it directly via JNI. Another option is to wrap the C code as an Apache module and perform a HTTP POST to invoke a C service and extract the results of the service. + diff --git a/c-integration.md b/c-integration.md new file mode 100644 index 0000000..e0066d8 --- /dev/null +++ b/c-integration.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- C Integration + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [C Integration](c-integration.html) + + +It is very common for an organisation to have lots of legacy C code which needs integration into the message bus. The current available solutions are + +* [CMS](#) is an easy-to-use JMS 1.1-like API for C++. Our implementation of CMS is called ActiveMQ-CPP, the architecture for which supports pluggable transport protocols, very much like the ActiveMQ broker itself. +* use the [OpenWire C Client](openwire-c-client.html) which is only available in ActiveMQ 4.x or later. +* we are working on the [OpenWire CPP Client](openwire-cpp-client.html) + +* use the [Stomp C Client](http://stomp.codehaus.org/C) for any version of ActiveMQ from 3.1 onwards. You can also use [Stomp](http://stomp.codehaus.org/) from many other languages like .Net, Python, Ruby, Perl etc. + +Other alternative mechanisms to communicate using. + +* use the [REST](rest.html) API +* use [WS-Notification](http://servicemix.org/WS+Notification) and generate C bindings to WS-Notification using a SOAP stack +* use [.Net or Mono](how-do-i-access-activemq-from-csharp-or-dotnet.html) to use ActiveMQ insided .Net +* [Compile ActiveMQ with GCJ](compile-activemq-with-gcj.html) to get a native C/C++ library +* link to the ActiveMQ Java client using JNI +* Use a Jabber client to talk to the ActiveMQ broker via the [XMPP](xmpp.html) protocol + diff --git a/cached-ldap-authorization-module.md b/cached-ldap-authorization-module.md new file mode 100644 index 0000000..67038b0 --- /dev/null +++ b/cached-ldap-authorization-module.md @@ -0,0 +1,146 @@ +Apache ActiveMQ ™ -- Cached LDAP Authorization Module + +[Features](features.html) > [Security](security.html) > [Cached LDAP Authorization Module](cached-ldap-authorization-module.html) + + +Available since 5.6 + +Cached LDAP authorization module is an implementation of an default authorization module that initializes and updates data from LDAP. It supports all standard features like defining wildcard policy entries and entry for temporary destinations. + +Initializing +------------ + +We provide two ldif files for easy starting. The first one is for [Apache Directory Server](http://directory.apache.org/) ([ldif](https://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/activemq-apacheds.ldif)), which we use in embedded mode for testing. For an example on how to initialize the embedded ApacheDS with this ldif file take a look at [CachedLDAPSecurityTest](https://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/security/CachedLDAPSecurityTest.java) + +The other one is for [OpenLDAP](http://www.openldap.org/) ([ldif](https://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/activemq-openldap.ldif)) + +The provided ldif and examples assume `dc=activemq,dc=apache,dc=org` suffix to be used for entries, so the configuration similar to the one shown in the following snippet + +suffix "dc=activemq,dc=apache,dc=org" +rootdn "cn=admin,dc=activemq,dc=apache,dc=org" +\# Cleartext passwords, especially for the rootdn, should +\# be avoid. See slappasswd(8) and slapd.conf(5) for details. +\# Use of strong authentication encouraged. +rootpw {SSHA}lfAYn54xCFghgQv5B2Kqn3d3eLojqxtS + +should be put into your `slapd.conf` + +To initialize your (properly configured) OpenLDAP do something like + +ldapadd -x -D "cn=admin,dc=activemq,dc=apache,dc=org" -w sunflower -f activemq-openldap.ldif + +Configuring +----------- + +Once entries are in LDAP, you can configure the module to load entries from there. A default values are adapted for embedded Apache DS server, so all you have to do in that case is add your plugin to the broker xml conf + + + + + + + +For the OpenLDAP case, you should define more parameters + + + + + + + +Full examples of configurations for [Apache DS](https://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/activemq-apacheds.xml) and [OpenLDAP](https://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/activemq-openldap.xml) + +The list of all properties for `cachedLDAPAuthorizationMap` + +property + +default value + +description + +version + +connectionURL + +ldap://localhost:1024 + +LDAP Server connection address + +connectionUsername + +uid=admin,ou=system + +Dn to be used for connecting to the server + +connectionPassword + +secret + +Password to be used for connecting to the server + +connectionProtocol + +s + +Connection protocol to be used for connecting to the server + +authentication + +simple + +Authentication method to be used when connecting to the server + +queueSearchBase + +ou=Queue,ou=Destination,ou=ActiveMQ,ou=system + +Base dn of queue related entries + +5.7 and later + +topicSearchBase + +ou=Topic,ou=Destination,ou=ActiveMQ,ou=system + +Base dn of topic related entries + +5.7 and later + +tempSearchBase + +ou=Temp,ou=Destination,ou=ActiveMQ,ou=system + +Base dn of temporary destinations related entries + +5.7 and later + +refreshInterval + +-1 + +Interval (in milliseconds) of pulling changes from the server, -1 means pulling is off, see #Updates for more info + +legacyGroupMapping + +true + +Should permission group members be configured as CN and not a full DN + +5.7 and later + +Updates +------- + +Many LDAP servers supports so called "persistent search" feature which allows applications to receive changes in LDAP in a "push" manner. By default this plugin assumes that LDAP server supports this feature and will "register" to get live updates. + +For servers that doesn't support this yet (like OpenLDAP), we provide "pull" updates. In this case you need to set `refreshInterval` property, which will define the update period for the plugin (so in this case, updates will not be immediately applied) + diff --git a/can-i-get-commercial-support.md b/can-i-get-commercial-support.md new file mode 100644 index 0000000..35a3a9f --- /dev/null +++ b/can-i-get-commercial-support.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- Can I get commercial support + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [Can I get commercial support](can-i-get-commercial-support.html) + + +Can I get commercial support? +----------------------------- + +Absolutely, see our [Support](support.html) page for more details + diff --git a/can-i-modify-messages-on-a-queue.md b/can-i-modify-messages-on-a-queue.md new file mode 100644 index 0000000..b30901e --- /dev/null +++ b/can-i-modify-messages-on-a-queue.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- Can I modify messages on a queue + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [Can I modify messages on a queue](can-i-modify-messages-on-a-queue.html) + + +Can I modify messages on a queue? +--------------------------------- + +The short answer is no. In JMS messages are immutable once they have been sent. If you find you need to modify messages its recommended that you create a consumer with some selector which matches the messages you wish to update, consume them and send new modified messages, either to another queue or if you are careful, back to the original queue. (If you are using the same queue, be careful not to get into a loop where your selector matches messages you are sending yourself - you may wish to use some JMS header to avoid this loop). + diff --git a/can-i-send-and-receive-messages-concurrently-on-one-jms-connection.md b/can-i-send-and-receive-messages-concurrently-on-one-jms-connection.md new file mode 100644 index 0000000..8c25859 --- /dev/null +++ b/can-i-send-and-receive-messages-concurrently-on-one-jms-connection.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Can I send and receive messages concurrently on one JMS Connection + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [Can I send and receive messages concurrently on one JMS Connection](can-i-send-and-receive-messages-concurrently-on-one-jms-connection.html) + + +Absolutely! + +Strictly speaking each producer being used concurrently should be using a separate session (though in ActiveMQ it'll probably work fine if you just use one session for all publishers). + +For concurrent consumption create a session per consumer - as all messages are dispatched to a session in a single thread - but you can have as many sessions as you like per connection. + +To further help with concurrent consuming of JMS you can use [Message Driven POJOs](http://jencks.codehaus.org/Message+Driven+POJOs) + diff --git a/can-i-send-really-large-files-over-activemq.md b/can-i-send-really-large-files-over-activemq.md new file mode 100644 index 0000000..287b51b --- /dev/null +++ b/can-i-send-really-large-files-over-activemq.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- Can I send really large files over ActiveMQ + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [Can I send really large files over ActiveMQ](can-i-send-really-large-files-over-activemq.html) + + +Can I send really large files over ActiveMQ +------------------------------------------- + +The answer is yes. + +If you are using ActiveMQ 4.2 or later we highly recommend you use [Blob Messages](blob-messages.html) which implements an out of band transport of the messages; it allows the files to be hosted on external http/ftp sites if required and can support either direct publisher <-> subscriber communication or publisher -> broker/file server -> consumer messaging. + +For 4.1 or ealier large file transfer is achieved using [JMS Streams](jms-streams.html). + +Normally the JMS API expects the entire JMS messsage to reside in the client side memory; however using [Blob Messages](blob-messages.html) or [JMS Streams](jms-streams.html) allows you to send and receive arbitrarily large files with very low RAM overhead. + diff --git a/can-i-use-activemq-5x-or-later-on-java-14.md b/can-i-use-activemq-5x-or-later-on-java-14.md new file mode 100644 index 0000000..f7baceb --- /dev/null +++ b/can-i-use-activemq-5x-or-later-on-java-14.md @@ -0,0 +1,19 @@ +Apache ActiveMQ ™ -- Can I use ActiveMQ 5.x or later on Java 1.4 + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [Can I use ActiveMQ 5.x or later on Java 1.4](can-i-use-activemq-5x-or-later-on-java-14.html) + + +Can I use ActiveMQ 5.0 or later on Java 1.4? +-------------------------------------------- + +Apache ActiveMQ 5.x or later is developed to run on Java 5 or later to take advantage of the new language features together with the major fact that on Java 5 the new concurrency code is faster & less buggy and requires less dependencies. + +We may get around to creating a sepate distro of retrotranslated jars for 1.4 [particularly if someone helps](contributing.html). + +Until then you can just [install the retrotranslator JIT in your JVM](http://retrotranslator.sourceforge.net/#jit) which will auto-swizzle all Java 5 bytecode to be complaint Java 1.4 bytecode using backport-util-concurrent instead of Java 5 concurrency code. + +See Also +-------- + +* [What platforms does ActiveMQ support](what-platforms-does-activemq-support.html) + diff --git a/can-two-brokers-share-the-same-database.md b/can-two-brokers-share-the-same-database.md new file mode 100644 index 0000000..f6d8301 --- /dev/null +++ b/can-two-brokers-share-the-same-database.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- Can two brokers share the same database + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [Can two brokers share the same database](can-two-brokers-share-the-same-database.html) + + +Can two brokers share the same database +--------------------------------------- + +The short answer is no; 2 brokers cannot operate on the same sets of database tables concurrently. ActiveMQ is designed for high performance so we want to minimise the amount of pessimistic locking; each broker is designed to work with its own persistent database. + +If you want to share the same physical database server across two brokers to simplify your installation & backup procedures then just create 2 different logins for each broker so that they get their own sets of database tables within the same physical database. (i.e. each broker gets its own logical database within the same physical database server). + +Also if you want to only have one database but many possible brokers (for HA) then just use [JDBC Master Slave](jdbc-master-slave.html) + diff --git a/can-you-browse-a-topic.md b/can-you-browse-a-topic.md new file mode 100644 index 0000000..24ba304 --- /dev/null +++ b/can-you-browse-a-topic.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Can you browse a topic + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [Can you browse a topic](can-you-browse-a-topic.html) + + +You can browse queues, can you browse a topic? + +No. But then consuming messages on a topic does not affect any other consumers, so you don't need to 'browse' per se, just subscribe. + +i.e. browsing is necessary on queues as you wanna see what messages there are without removing them. For topics, everyone who's interested gets a copy of the message so just do a regular subscribe. + +One nice to have feature would be to expose durable subscriptions as a logical queue, so you could browse outstanding messages on a durable subscription as if it were a queue (see [AMQ-25](https://issues.apache.org/activemq/browse/AMQ-25) to track this feature request)but its not in any way standard JMS. + diff --git a/certificateunknown.md b/certificateunknown.md new file mode 100644 index 0000000..c586078 --- /dev/null +++ b/certificateunknown.md @@ -0,0 +1,29 @@ +Apache ActiveMQ ™ -- certificate_unknown + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [certificate_unknown](certificateunknown.html) + + +If you get an error something like this... + +javax.jms.JMSException: start failed: Received fatal alert: certificate_unknown + at org.activemq.transport.tcp.TcpTransportChannel.start(TcpTransportChannel.java:200) + at org.activemq.broker.impl.BrokerConnectorImpl.addClient(BrokerConnectorImpl.java:308) + at org.activemq.transport.TransportServerChannelSupport.addClient(TransportServerChannelSupp + at org.activemq.transport.tcp.TcpTransportServerChannel.run(TcpTransportServerChannel.java:1 + at java.lang.Thread.run(Unknown Source) +Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown + at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) + at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) + at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source) + at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) + at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) + at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source) + at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source) + at java.io.BufferedInputStream.fill(Unknown Source) + +when you are trying to use SSL to connect to ActiveMQ then the "certificate_unknown" error shows on the broker when the client doesn't trust the broker's certificate. On the client, I would see an error as well: "No trusted certificate found". + +### Fix + +Make sure that you exported the broker's certificate (step 2 in [How do I use SSL](how-do-i-use-ssl.html)) and imported it on the client into a truststore (step 4). If you did those, did you specify the javax.net.ssl.trustStore system property when you started your client VM? + diff --git a/changes-in-40.md b/changes-in-40.md new file mode 100644 index 0000000..ab00df0 --- /dev/null +++ b/changes-in-40.md @@ -0,0 +1,60 @@ +Apache ActiveMQ ™ -- Changes in 4.0 + +[Features](features.html) > [New Features](new-features.html) > [Changes in 4.0](changes-in-40.html) + + +### New Features in 4.0 + +* [MasterSlave](masterslave.html) provides support for continuous availability and fault tolerance of brokers to be able to handle catastrophic hardware failure and not loose a message (or get duplicates). +* A new [Exclusive Consumer](exclusive-consumer.html) feature allows you to pin message processing to a single consumer in a cluser of consumers. +* A new [Message Groups](message-groups.html) feaure allows you load balance messages accross a set of consumers but also garantee the message order for messages within a message group. +* A new [Total Ordering](total-ordering.html) feature to allow all consumers on a topic to see messages in the same order. +* New [JMX Management](how-can-i-monitor-activemq.html) and monitoring capabilities. You can now see statistics for each broker, destination, connector and connection! +* Improved [Security](security.html) plugin which provides JAAS support for authentication along with a pluggable strategy for authorization together with a default XML based implementation. +* A new [OpenWire C Client](openwire-c-client.html) is now available. This client talks the same wire protocol that the standard java client uses so every messaging broker feature available to the java client is available to the c client. +* An experimental [OpenWire dotNet](https://cwiki.apache.org/confluence/display/NMS) is available, written in pure C# along with a JMS-like API for working on the .Net platform with ActiveMQ +* Queues can now be loaded up with persistent messages without locking up the broker. Persistent messages are now swapped out of memory when no consumer needs it soon. +* A new [Consumer Priority](consumer-priority.html) feature allows you to build location affinity by assignin a priority to consumers. The broker can then dispatch messages to higher priority consumers before dispatching to lower priority consumers. +* A configurable per [Consumer Dispatch Async](consumer-dispatch-async.html) flag which allows you to configure how messages are sent by the broker to a consumer. This controls if the broker uses [SEDA](seda.html) or [STP](#) style dispaching. +* A new plug-able topic [Subscription Recovery Policy](subscription-recovery-policy.html) which allows you to configure how many transient messages are replayed when a [Retroactive Consumer](retroactive-consumer.html) is created. +* A new [Retroactive Consumer](retroactive-consumer.html) feature allows topic consumers to "go back in time" so that it receives old messages when the subscription is activated. If the consumer is a durable consumer, he recover all the messages that are still in the persistent store. +* [Per Destination Policies](per-destination-policies.html) allow you configure the behavior of destinations. +* The broker now supports per destination plugable [Dispatch Policies](dispatch-policies.html) so that you can choose the distribution algorithm used to send messages to a consumer. +* The broker now supports two new types of connectors: + * [The JMS Connector](the-jms-connector.html) is used to establish connection to external JMS providers so that messages can be bridged between the system. + * [The Proxy Connector](the-proxy-connector.html). Is used to proxy connections to another broker. +* [Slow Consumer Handling](slow-consumer-handling.html) allows you to discard old messages for slow consumers on non-durable topics to avoid slowing down fast consumers +* You can now specify [Destination Options](destination-options.html) that allow you to do extend configuration of consumers. +* Conumsers now use [Optimized Acknowledgement](optimized-acknowledgement.html) by default to which results in increased performance. + +### API/Configuration chanages + +* as part of the move to Apache, the package name is now **org.apache.activemq** and not **org.activemq**. +* the [Xml Configuration](xml-configuration.html) has changed a little; mostly its now in the ActiveMQ namespace and has a generated XSD and documentation. +* the _reliable_ transport has been renamed to _failover_ to make it more clear what it does; we're working on a separate DR mechanism to provide data centre resilliance. So if you wish to connect to one of a number of URIs try + + failover:tcp://host1:port1,tcp://host2:port2 + +* The configuration options of transports have changed. See [ActiveMQ Connection URIs](activemq-connection-uris.html) for a detailed guide of of all the options. +* The spring package has gone; we now use [XBean](http://xbean.org) to configure ActiveMQ. See the org.activemq.xbean.BrokerFactoryBean if you want a factory bean to use in regular spring instead of the org.activemq.spring.BrokerFactoryBean. See [Configuring Brokers](configuring-brokers.html) for more information on the new XML syntax. +* ActiveMQTopic and ActiveMQQueue are now in the org.activemq.command package. +* If you were creating a broker in Java code, the BrokerContainer has been replaced with BrokerService which is easier to use now. +* The connection URL options have changed slightly to provided more persise configuration options of the transport and wireformat and to allow validation of the options. +* [Message Redelivery and DLQ Handling](message-redelivery-and-dlq-handling.html) has been re-implemnted. Currently all messages sent poison messages are sent to a single DQL. +* The [JMS Streams](jms-streams.html) API has changed. + +### General Changes + +* The JDBC persistence adapter now uses JDBC statement batching to increase it's performance with the database. This should reduce the amount of time a checkpoint takes. +* QueueBrowsers now play nicely with a queue that is currently being consumed from. It gives you a true snapshot of what the queue looked like when you created the browser and it does not affect the dispatching of messages to active consumers. +* we no longer have hand-crafted marshalling code any more; its all based on [OpenWire](openwire.html) and autogenerated from the open wire commands in the org.activemq.command package +* The network bridges used for broker to broker messaging now use a lower level ActiveMQ command and transport API instead of the JMS API, this allows them to use more optimizations and have a lower per bridge resource consumption while letting the JMS client API implementation reduce it's complexity. +* Two types of network bridges are now supported: + * A simple forwardng bridge - sends all messages as soon as possible to the remote broker. Great you know the usage patterns up front and allways want to do store and forward to a central broker. + * A demand based forwarding bridge (same type of bridge that was using in ActiveMQ 3.x) which detects consumer demand on the remote broker and only forwards messages as needed. +* The demand based forwarding bridge now take advantage of the [Consumer Priority](consumer-priority.html) to avoid forwarding messages to a remote broker if there is a local consumer consuming it's messages. +* Message fragmentation is no longer done. Fragmented messages add yet another level of complexity when you introduce broker networks. Large objects/streams should be transfered using the [JMS Streams](jms-streams.html). +* JMS clients marshall fewer messages on the wire on for a rollback. +* JMS clients marshall fewer messages when sessions/consumers/producers are closed. +* The client and the broker make more extensive use of Thread Pools to avoid allocating idle threads that are not being used. + diff --git a/chat.md b/chat.md new file mode 100644 index 0000000..34527b7 --- /dev/null +++ b/chat.md @@ -0,0 +1,37 @@ + Chat Example - ActiveMQ Web Demos @import url(styles/sorttable.css); @import url(styles/type-settings.css); @import url(styles/site.css); @import url(styles/prettify.css); // Note, normally you wouldn't just add an onload function in this // manner. In fact, you typically want to fire this method on the // document.onready event, however this type of functionality is verbose // and best left to the domain of your favorite js library. // // For example, in jQuery the following onload would be replaced with: // jQuery(function() { // org.activemq.Amq.init({ uri: 'amq' }); // org.activemq.Chat.init(); // } window.onload = function() { org.activemq.Amq.init({ uri: 'amq', logging: true, timeout: 45, clientId:(new Date()).getTime().toString() }); org.activemq.Chat.init(); }; + +[ActiveMQ](http://activemq.apache.org/ "The most popular and powerful open source Message Broker") [ASF](http://www.apache.org/ "The Apache Software Foundation") + +[Home](index.html "Home") + +[Support](http://activemq.apache.org/support.html "Get help and support using Apache ActiveMQ") + +Chat Example +============ + +Welcome to the Ajax chat example + +Username:  Join + +Chat:  Send Leave + +This Chat example creates an ActiveMQ broker using the configuration information found in the `web.xml` file. There isn't much there. Just a name-value parameter named `org.apache.activemq.brokerURL` is assigned a value of `vm://localhost?broker.persistent=false`. This is enough however to lazy-initialize the broker when it is needed. + +The client leverages a javascript library `amq.js` to perform all of the JMS-related client side code. This involves establishing a communication pipeline to the JMS server. This pipeline uses a long-poll connection to the server. All JMS communication will be received down this pipe, and when the JMS server has no traffic to send, this pipeline will patiently wait until there is new traffic or until it times out. If a timeout does occur, the connection will reconnect to the server for another round. (Of course you will want/need to use a server that supports continuations in order for this to scale beyond a few hundred clients.) + +The `chat.js` file contains the script to respond to the UI interactions. It also talks to the `amq.js` file to send messages and provides a message handler that will respond to incoming JMS messages. + +There is no server-side state in this application. The client sets up a JMS Topic on the server and attaches itself as a listener to this topic. From that point, all messages that are sent to the topic are received by each listener. Even the list of members in the chat room are the result of clients replying to a ping request. + +Please note that `amq.js` has been refactored to allow AJAX calls to be made using any javascript library. Example adapter classes for [jQuery](http://jquery.com/) and [Prototype](http://www.prototypejs.org/) have been provided. + +### Useful Links + +* [Documentation](http://activemq.apache.org/ "The most popular and powerful open source Message Broker") +* [FAQ](http://activemq.apache.org/faq.html) +* [Downloads](http://activemq.apache.org/download.html) +* [Forums](http://activemq.apache.org/discussion-forums.html) + +Copyright 2005-2012 The Apache Software Foundation. ([printable version](?printable=true)) + +[Graphic Design By Hiram](http://hiramchirino.com/) \ No newline at end of file diff --git a/class-diagrams-for-activemq-40-m4-source-code.md b/class-diagrams-for-activemq-40-m4-source-code.md new file mode 100644 index 0000000..58f3885 --- /dev/null +++ b/class-diagrams-for-activemq-40-m4-source-code.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Class Diagrams for activemq-4.0-M4 source code + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Design Documents](design-documents.html) > [Class Diagrams for activemq-4.0-M4 source code](class-diagrams-for-activemq-40-m4-source-code.html) + + +Class Diagrams for activemq-4.0-M4 source code. + +These diagrams cover the bulk of the source code and are in EMF format.  + +[http://docs.codehaus.org/download/attachments/50288/Class+Diagrams+activemq-4.0-M4.zip](http://docs.codehaus.org/download/attachments/50288/Class+Diagrams+activemq-4.0-M4.zip) + +Note about conversion to other formats:  Some files when converted to something like JPG or PNG will be quite large.  If your system doesn't have enough RAM you will get an error or in some cases the converting program will just scale to fit which usually will mangle the image.  For the larger file conversions you will need  1GB of RAM.  A free program I came across for converting is IrfanView ([http://www.irfanview.com/](http://www.irfanview.com/)).  I found it much better than Windows Image Viewer, but you still need an appropriate amount of memory.  + +Note about printing: Adobe In Design works well for printing if you want a large print but don't have access to an oversized/wide format ink jet ([http://www.adobe.com/products/tryadobe/main.jsp#product=31](http://www.adobe.com/products/tryadobe/main.jsp#product=31)).  Set up the page dimensions first, for example,  normal letter size page is measured in pts, 51p0 width, 66p0 height.  So for a wider than long oversized diagram you might go to File->Document Setup... and set Page Size to "Custom" and width to 255p0 (5 8 1/2" letter pages in width), and height to 112p0 (2 11" letter pages in height).  Next go to File->Place... to import the EMF. Using the Scale tool (smaller box with an arrow pointing into larger box) size the image to fit inside the page (hold down shift key while sizing to keep proportions), and position it using the Selection tool (arrow). + +Then go to File->Print..., select "Setup" and check the "Tile" option.  The "Tile" dropdown setting should be "Auto" and Overlap 4p0.  Then set the Scale option to a percentage that maximizes the image coverage (there is a visual thumbnail that will indicate the coverage).  Then Print.  This should yield a nice large image printed out in tiled format on letter size pages.  Each page will be properly numbered so you know their positions, and there will be marks for trimming and taping the pages together.  A page cutter is neccessary.  Just trim the right and bottom overlap on each page, then align and tape. + diff --git a/clustering.md b/clustering.md new file mode 100644 index 0000000..0c0bf8a --- /dev/null +++ b/clustering.md @@ -0,0 +1,61 @@ +Apache ActiveMQ ™ -- Clustering + +[Features](features.html) > [Clustering](clustering.html) + + +Clustering is a large topic and often means different things to different people. We'll try to list the various aspects of clustering and how they relate to ActiveMQ + +Queue consumer clusters +----------------------- + +ActiveMQ supports reliable high performance load balancing of messages on a queue across consumers. In enterprise integration, this scenario is known as the [competing consumers](http://www.eaipatterns.com/CompetingConsumers.html) pattern. The following figure illustrates the concept: + +![](clustering.data/competing-consumers.png) + +This solution receives the messages sent by the producers, enqueues them and distributes them between all the registered consumers. This has a number of benefits: + +* The load is distributed in a very dynamic fashion. Additional consumers could be provisioned and attached to the queue in high load periods, without modifying any configuration in the queue, as the new consumer would behave as just another competing consumer. +* Better availability than systems using a load balancer. Load balancers usually rely on a monitorization system to find out which real-servers are unavailable. With competing consumers, a failed consumer won't be competing for messages and therefore messages won't be delivered to it even without monitorization. +* High reliability, if a consumer fails, any unacknowledged messages are redelivered to other consumers on the queue. + +On the downside, this pattern might not be ideal in systems where the order processing is required. To mitigate this problem while maintaining the benefits, the competing consumers pattern should be used in conjunction with other ActiveMQ [features](features.html) like the [exclusive consumers](exclusive-consumer.html) and the [message groups](message-groups.html) as stated in the [ActiveMQ's FAQ](how-do-i-preserve-order-of-messages.html). + +Broker clusters +--------------- + +The most common mental model of clustering in a JMS context is that there is a collection of JMS brokers and a JMS client will connect to one of them; then if the JMS broker goes down, it will auto-reconnect to another broker. + +We implement this using the **failover://** protocol in the JMS client. See the [Failover Transport Reference](failover-transport-reference.html) page for details of how to configure the failover protocol. _Note:_ The reliable:// protocol in ActiveMQ 3.x has now been changed to the failover:// protocol + +If we just run multiple brokers on a network and tell the clients about them using either [static discovery](http://incubator.apache.org/activemq/static-transport-reference.html) or [dynamic discovery](http://incubator.apache.org/activemq/discovery-transport-reference.html), then clients can easily failover from one broker to another. However, stand alone brokers don't know about consumers on other brokers; so if there are no consumers on a certain broker, messages could just pile up without being consumed. We have an outstanding [feature request](http://issues.apache.org/activemq/browse/AMQ-816) to tackle this on the client side - but currently the solution to this problem is to create a Network of brokers to store and forward messages between brokers. + +Discovery of brokers +-------------------- + +We support [auto-discovery](discovery.html) of brokers using [static discovery](http://incubator.apache.org/activemq/static-transport-reference.html) or [dynamic discovery](http://incubator.apache.org/activemq/discovery-transport-reference.html), so clients can automatically detect and connect to a broker out of a logical group of brokers as well for brokers to discover and connect to other brokers to form large networks. + +Networks of brokers +------------------- + +If you are using [client/server or hub/spoke style topology](topologies.html) and you have many clients and many brokers, there is a chance that one broker has producers but no consumers, so that messages pile up without being processed. To avoid this, ActiveMQ supports a [Networks of Brokers](networks-of-brokers.html) which provides _store and forward_ to move messages from brokers with producers to brokers with consumers which allows us to support [distributed queues and topics](how-do-distributed-queues-work.html) across a network of brokers. + +This allows a client to connect to any broker - and fail over to another broker if there is a failure - providing a cluster of brokers from the clients perspective. + +Networks of brokers also allows us to scale up to a massive number of clients in a network as we can run as many brokers as we need. + +You can think of this as a cluster of clients connecting with a cluster of brokers with auto-failover and discovery, making a simple and easy to use messaging fabric. + +Master Slave +------------ + +The problem with running lots of stand alone brokers or brokers in a network is that messages are owned by a single physical broker at any point in time. If that broker goes down, you have to wait for it to be restarted before the message can be delivered. (If you are using non-persistent messaging and a broker goes down you generally lose your message). + +The idea behind [MasterSlave](masterslave.html) is that messages are replicated to a slave broker so that even if you have a catastrophic hardware failure of the master's machine, file system or data centre, you get immediate failover to the slave with no message loss. + +Replicated Message Stores +------------------------- + +An alternative to [MasterSlave](masterslave.html) is to have some way to replicate the message store; so for the disk files to be shared in some way. For example using a SAN or shared network drive you can share the files of a broker so that if it fails another broker can take over straight away. + +So by supporting a [Replicated Message Store](replicated-message-store.html) you can reduce the risk of message loss to provide either a HA backup or a full [DR](dr.html) solution capable of surviving a data centre failure. + diff --git a/cms-api-10-release.md b/cms-api-10-release.md new file mode 100644 index 0000000..014c98e --- /dev/null +++ b/cms-api-10-release.md @@ -0,0 +1,50 @@ +Apache ActiveMQ ™ -- CMS API 1.0 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [CMS API 1.0 Release](cms-api-10-release.html) + +New and Noteworthy +------------------ + +This is the first official release of the C++ Messaging Service (CMS)!! CMS provides the following: + +* JMS-like API (all pure-virtual classes) for messaging from C++ applications! +* Fairly mature API, having grown up under activemq-cpp +* Vendor-independent way of messaging in C++ +* Decoupled from the activemq-cpp library in order to promote more CMS implementations + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/cms-1.0) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[cms-1.0-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/cms-1.0-src.zip) + +[cms-1.0-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/cms-1.0-src.zip.asc) + +Source code for Unix + +[cms-1.0-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/cms-1.0-src.tar.gz) + +[cms-1.0-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/cms-1.0-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/cms-1.0/ + +Changelog +--------- + +No change log - this is the initial submission. + diff --git a/cms-api-11-release.md b/cms-api-11-release.md new file mode 100644 index 0000000..0e84f6e --- /dev/null +++ b/cms-api-11-release.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- CMS API 1.1 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [CMS API 1.1 Release](cms-api-11-release.html) + +New and Noteworthy +------------------ + +This is a minor release of the C++ Messaging Service (CMS). This release is was done as part of releasing ActiveMQ-CPP 2.1 and contains the following updates: + +* Removed dependency on the ActiveMQ-CPP Properties class +* Added support for exporting CMS interface symbols from shared libraries + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/cms-1.1) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[cms-1.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/cms-1.1-src.zip) + +[cms-1.1-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/cms-1.1-src.zip.asc) + +Source code for Unix + +[cms-1.1-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/cms-1.1-src.tar.gz) + +[cms-1.1-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/cms-1.1-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/cms-1.1/ + +Changelog +--------- + +The following issues were resolved as part of the [ActiveMQ-CPP 2.1 Release](activemq-cpp-21-release.html) + +JIRA Issues Macro: com.atlassian.sal.api.net.ResponseStatusException: Unexpected response received. Status code: 404 + +  + diff --git a/cms-api-12-release.md b/cms-api-12-release.md new file mode 100644 index 0000000..e0e6eaa --- /dev/null +++ b/cms-api-12-release.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- CMS API 1.2 Release + +[Index](index.html) > [Overview](overview.html) > [Download](download.html) > [CMS API 1.2 Release](cms-api-12-release.html) + +New and Noteworthy +------------------ + +This is a minor release of the C++ Messaging Service (CMS). This release is was done as part of releasing ActiveMQ-CPP 2.1.1 and contains the following updates: + +* Made read methods of BytesMessage const so that asynchronous consumers (onMessage) don't have to use const_cast. + +API +--- + +Check out the API for this release [here](http://activemq.apache.org/cms/api_docs/cms-1.2) + +Download Here +------------- + +Description + +Download Link + +PGP Signature file of download + +Source code for Windows + +[cms-1.2-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/cms-1.2-src.zip) + +[cms-1.2-src.zip.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/cms-1.2-src.zip.asc) + +Source code for Unix + +[cms-1.2-src.tar.gz](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/cms-1.2-src.tar.gz) + +[cms-1.2-src.tar.gz.asc](http://www.apache.org/dist/activemq/activemq-cpp/source/cms-1.2-src.tar.gz.asc) + +SVN Tag Checkout +---------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/cms-1.2/ + +Changelog +--------- + +The following issues were resolved as part of the [ActiveMQ-CPP 2.1.1 Release](activemq-cpp-211-release.html) + +JIRA Issues Macro: JIRA project does not exist or you do not have permission to view it. + +  + diff --git a/cms-api-overview.md b/cms-api-overview.md new file mode 100644 index 0000000..d3dd614 --- /dev/null +++ b/cms-api-overview.md @@ -0,0 +1,859 @@ +Apache ActiveMQ ™ -- CMS API Overview + +[Index](index.html) > [Overview](overview.html) > [CMS API Overview](cms-api-overview.html) + +What is CMS? +============ + +The CMS API is a C++ corollary to the JMS API in Java which is used to send and receive messages from clients spread out across a network or located on the same machine.  In CMS we've made every attempt to maintain as much parity with the JMS api as possible, diverging only when a JMS feature depended strongly on features in the Java programming language itself.  Even though there are some differences most are quite minor and for the most part CMS adheres to the JMS spec, so having a firm grasp on how JMS works should make using CMS that much easier.  + +One of the first places to start if you are already familiar with JMS is to take a look at the CMS [API documentation](api.html) + +Getting Started with CMS +======================== + +This section covers the basics of using the CMS API. In order to aid in the discussion we assume here that you are using ActiveMQ-CPP to connect to an ActiveMQ Broker, of course with CMS you could also link to another implementation of the CMS API in your C++ application and connect to some other Message service. + +The CMS ConnectionFactory +------------------------- + +The first interface you will generally use in the CMS API is the ConnectionFactory. A ConnectionFactory allows you to create CMS Connection objects which maintain a connection the some Messaging service, e.g. an ActiveMQ broker. + +The simplest way to obtain an instance of a CMS ConnectionFactory is to use the static method **createCMSConnectionFactory** that all CMS Provider libraries are required to implement. The code snippet below demonstrates how to obtain a new ConnectionFactory: + +**Creating a Connection Factory** + +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" ) ); + +As you can see the **createCMSConnectionFactory** takes a single string parameter which is in the form of a URI that defines where the Connection that is created is to connect to as well as the protocol that should be used, TCP/IP in the case of the above example. Additionally configuration information can be encoded in the URI. Refer to the [Configuration](configuring.html) page for more information on the configuration parameters that can be passed to ActiveMQ-CPP via the URI. + +Once you've created a ConnectionFactory the next thing to do is to create a CMS Connection using the ConnectionFactory. A Connection is the Object that manages the client's connection to the Provider. The next section covers the use of a CMS Connection, the code to create a Connection is shown below: + +**Creating a Connection** + +std::auto_ptr connection( connectionFactory->createConnection() ); + +Upon creation the Connection object attempts to connect to the CMS Provider, if the connection fails then an CMSException is thrown with a description of the error that occurred stored in its Message property. + +### Connections and Authentication + +There are a couple versions of the **createConnection** method that allow you to specify login parameters for the newly created Connection. The one you would use most often takes a user-name and password pair that is transmitted to the Broker for authentication. Should the credentials be invalid a CMSException would be thrown. The sample code below shows how to pass a user-name and password in when creating your Connection object. + +**Creating a Connection with Authentication** + +std::auto_ptr connection( connectionFactory->createConnection( "", "") ); + +If you don't want to hard code values into your source code or write code to read the login data from somewhere else there is another option for passing in the user-name and password, the URI that you pass to **createConnectionFactory** can be encoded so that the connectionFactory will read the values from the system environment when it parses the URI. The example below shows how to create a connection factory with the login data set in the URI. + +**Creating a Connection Factory with URI values for Authentication data.** + +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616?username=${USERNAME}&password=${PASSWORD}" ) ); + +As you can see it is pretty simple to have values on the URI come from the system environment. This method will work for any parameter that you can specify in the URI. + +CMS Connection +-------------- + +The CMS Connection interface defines an object that is the client's active connection to the CMS provider. In most cases the client will only create one connection object since it is considered a heavyweight object. + +A connection serves several purposes: + +* It encapsulates an open connection with a JMS provider. It typically represents an open TCP/IP socket between a client and a provider service daemon. +* Its creation is where client authentication takes place. +* It can specify a unique client identifier. +* It provides a ConnectionMetaData object. +* It supports an optional ExceptionListener object. + +A CMS Connection is created from a CMS ConnectionFactory as we saw previously. If the ConnectionFactory create call is successful then the Connection object returned is connected to the CMS Provider. The Connection object is created in a stopped state, no messages will be delivered to Message consumers that a client creates until the Connection is started. Its normal to leave a Connection in the stopped state until the client has created the initial set of Sessions, Message Producers, and Message Consumers that it intends to use. Once the setup phase of the client completes it should call the Connection's start method to begin receiving messages from the Provider. Failing to call the **start** method is a very common error among new users of CMS and JMS clients, if you find you aren't receiving any messages the first thing to check is that you called **start**. + +After creating the Connection the client must create a CMS Session in order to create message producers and consumers. The code snippet below puts together what we've seen so far and then shows how to create a CMS Session object from our Connection instance, the section that follows will discuss the CMS Session in more detail. + +**Creating a Session** + +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" ) ); + +std::auto_ptr connection( connectionFactory->createConnection() ); + +std::auto_ptr session( connection->createSession() ); + +CMS Session +----------- + +Once you've successfully created a CMS Connection the next thing you would normall do is create one or more CMS Session objects using your new Connectio instance.  A Session is defined as a Single Threaded context for producing and consuming messages.  + +A session serves several purposes: + +* It is a factory for its message producers and consumers. +* It supplies provider-optimized message factories. +* It is a factory for TemporaryTopics and TemporaryQueues. +* It provides a way to create Queue or Topic objects for those clients that need to dynamically manipulate provider-specific destination names. +* It supports a single series of transactions that combine work spanning its producers and consumers into atomic units. +* It defines a serial order for the messages it consumes and the messages it produces. +* It retains messages it consumes until they have been acknowledged. +* It serializes execution of message listeners registered with its message consumers. +* It is a factory for QueueBrowsers *(Not yet Implemented)*. + + A session can create and service multiple message producers and consumers. + + When a client creates a CMS session it must specify the mode in which the Session will acknowledge the messages that it receives and dispatches.  The modes supported are summarized in the table below. + +Acknowledge Mode + +Description + +AUTO_ACKNOWLEDGE + +With this acknowledgement mode, the session automatically acknowledges a client's receipt of a message either when the session has successfully returned from a call to receive or when the message listener the session has called to process the message successfully returns. + +CLIENT_ACKNOWLEDGE + +With this acknowledgement mode, the client acknowledges a consumed message by calling the message's acknowledge method. Acknowledging a consumed message acknowledges all messages that the session has consumed. When client acknowledgement mode is used, a client may build up a large number of unacknowledged messages while attempting to process them. A CMS provider should provide administrators with a way to limit client overrun so that clients are not driven to resource exhaustion and ensuing failure when some resource they are using is temporarily blocked. + +DUPS\_OK\_ACKNOWLEDGE + +This acknowledgement mode instructs the session to lazily acknowledge the delivery of messages. This is likely to result in the delivery of some duplicate messages if the JMS provider fails, so it should only be used by consumers that can tolerate duplicate messages. Use of this mode can reduce session overhead by minimizing the work the session does to prevent duplicates. + +SESSION_TRANSACTED + +Session is Transacted and the acknowledge of messages is handled internally. + +INDIVIDUAL_ACKNOWLEDGE + +Acknowledges are applied to a single message only.  Unlike CLIENT_ACKNOWLEDGE where the acknowledgement applies to all messages received up to that point for the entire session, this mode applied only to a single message allowing the client to be more selective about which messages are acknowledged.  + +In the previous section we showed you how to create a session, lets take a look at that example again here: + +**Creating a Session** + +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" ) ); + +std::auto_ptr connection( connectionFactory->createConnection() ); + +std::auto_ptr session( connection->createSession() ); + +In this code snippet the Session is created using the createSession with no arguments, this creates a Session that is in the AUTO_ACKNOWLEDGE mode. To create a Session with one of the modes listed above there is a second create method in the CMS Session interface that takes a single argument specifying the mode, lets take a look at an example: + +**Creating a Session with user specified Ack Mode** + +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" ) ); + +std::auto_ptr connection( connectionFactory->createConnection() ); + +std::auto_ptr session( connection->createSession( + cms::Session::CLIENT_ACKNOWLEDGE ) ); + +As you can see there's not much difference here, just specify the mode you want for acknowledgement and you are ready to create your Session resources, in the next few section we will walk through the types of objects that you can create from a Session and show you the basics of using them. + +Objects created from CMS Session +-------------------------------- + +In this section we cover the types of objects that are created from an instance of a CMS Session object. + +### CMS Messages + +As its name implies CMS exists to send and receive messages, so it makes sense to start by covering the message that you can send and receive using CMS. There are four main Message types supported by CMS at the the time of this writing, others may follow but we will stick to the ones that are fully supported right now. The table below shows the message type along with a brief description of the Message's use, for complete details on the interface and usage of a particular message type, see the [CMS API Documentation](api.html). + +Message Type + +Description + +Message + +The Message interface defines the simplest CMS Message. Unlike the rest of the CMS Messages the Message type has no body or payload, it can however contains properties set via a collection of property setters that encompass the basic types in C++. The Message interface is the root of all the Message types in CMS. + +TextMessage + +The TextMessage class carries a payload consisting of a C++ string. The TextMessage interface extends the Message interface adding methods for setting and getting the payload text and retains the support for setting Message properties. Since Java Objects can't be sent to a CMS client from a JMS client directly the Text message is an ideal way to serialize the object to XML and send it to a JMS client. + +BytesMessage + +The BytesMessage payload consists of a series of uninterrupted bytes which the receiver is responsible for interpreting. The BytesMessage adds methods for getting and setting byte array to the standard set of Message interface methods. + +MapMessage + +The Map message payload is a set of Name / Value pairs. The Name is a C++ string type and the value is a C++ primitive type or string. + +StreamMessage + +The Stream Message body consists of a list of self describing primitive types.  The StreamMessage interface provides accessor methods that can read and write the primitive types to/from the message.  The read methods allow primitive type conversion when the conversion would result in no loss of data. + +Now that we've seen the types of Message's we can create lets see how to actually create them and explore some of the operations that are available in the Message classes. + +### Creating a Message + +As you may have already guessed, Messages are created using the CMS Session instance we created previously. The Session supplies methods for creating each of the four Message types we covered above. The Session is the Factory that create the providers implementation of the Message interfaces defined in CMS, it knows how to configure the internal data structures and prevents the client from being tied to the provider implementation directly, this is why we have to use the Session to create a Message object instead of creating them directly. Lets take a look at a code snippet that create a TextMessage instance and sets some properties on that Message. + +**Creating a TextMessage using a CMS Session instance.** + +// Create the ConnectionFactory +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" ) ); + +// Create a Connection +std::auto_ptr connection( connectionFactory->createConnection() ); + +// Create a new Session from our Connection +std::auto_ptr session( connection->createSession(); + +// Now create a TextMessage +std::auto_ptr textMessage( session->createTextMessage() ); + +// Set the payload +textMessage->setText( "Payload Text" ); + +// Set some Properties +textMessage->setStringProperty( "USER_NAME", "Steve" ); +textMessage->setIntProperty( "USER_CODE", 42 ); + +As you can see from the code above creating a TextMessage is much like creating a Session or Connection instance, you just call the **createTextMessage** in your instance of a CMS Session and you get back a new TextMessage pointer that you can then populate with text and properties. + +### CMS Destinations + +As its name implies the CMS Destination interface defines an object that represents an endpoint that the Messages are routed to by the Messaging broker. Clients create Destinations and send messages to them or wait for messages to be received on a destination they have subscribed to. There are two basic types of Destinations in CMS, the Topic and the Queue, there are two subtypes of these the Temporary Topic and Temporary Queue. The table below summarizes the four different Destination types. + +Destination Type + +Description + +Topic + +In CMS a Topic implements publish and subscribe semantics. When you publish a message it goes to all the subscribers who are interested - so zero to many subscribers will receive a copy of the message. Only subscribers who had an active subscription at the time the broker receives the message will get a copy of the message. + +Queue + +A CMS Queue implements load balancer semantics. A single message will be received by exactly one consumer. If there are no consumers available at the time the message is sent it will be kept until a consumer is available that can process the message. If a consumer receives a message and does not acknowledge it before closing then the message will be redelivered to another consumer. A queue can have many consumers with messages load balanced across the available consumers. + +TemporaryTopic + +A TemporaryTopic object is a unique Topic object created for the duration of a Connection. It is a system-defined topic that can be consumed only by the Connection that created it. + +TemporaryQueue + +A TemporaryQueue object is a unique Queue object created for the duration of a Connection. It is a system-defined queue that can be consumed only by the Connection that created it. + +Now that we've seen what the destination types are, lets look at a code snippet showing how to create a Destination object. The example below shows how to create a Topic instance using what should now be a pretty familiar pattern. + +**Creating a Topic from a CMS Session object** + +// Create the ConnectionFactory +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" ) ); + +// Create a Connection +std::auto_ptr connection( connectionFactory->createConnection() ); + +// Create a new Session from our Connection +std::auto_ptr session( connection->createSession(); + +// Now create a Topic +std::auto_ptr myTopic( session->createTopic( "EXAMPLE-TOPIC" ) ); + +Creating a Topic or Queue requires passing a name for the Destination, the name is similar to an address, messages sent the the "EXAMPLE-TOPIC" destination are received by clients that have subscribed to that same Destination. + +### CMS MessageConsumer + +Now that we've covered how to create messages and destinations we will look at creating a CMS MessageConsumer. The MessageConsumer allows the client application to receive messages sent by other clients to topics or queues. Before we talk about receiving Messages with the consumer lets first look at how one is created. + +**Creating a MessageConsumer from a CMS Session object** + +// Create the ConnectionFactory +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" ) ); + +// Create a Connection +std::auto_ptr connection( connectionFactory->createConnection() ); + +// Create a new Session from our Connection +std::auto_ptr session( connection->createSession(); + +// Now create a Topic +std::auto_ptr myTopic( session->createTopic( "EXAMPLE-TOPIC" ) ); + +// Now create the Consumer +std::auto_ptr myConsumer( session->createConsumer( myTopic ) ); + +As you can see the MessageConsumer is created by calling **createConsumer** from an instance of a CMS Session object. The MessageConsumer is given a Destination to listen for Messages on at the time you create it. Once you create a MessageConsumer its time to start using it to receive messages, the MessageConsumer two methods for receiving messages, one is synchronous and the other is asynchronous. + +The synchronous method of receiving Messages involves a call the to the consumers receive method. A call to receive will block until a Message is received on the Destination in question if no time-out is given, or will return NULL if the time-out given elapses and no new Messages arrive. Lets take a look at a simple example of a synchronous message polling loop using CMS. + +**Synchronous Polling with infinite wait.** + +while( !done ) { + + std::auto_ptr message( myConsumer->receive() ); + + ...Do Something with the message... +} + +As you can see in the code above we called the MessageConsumer's **receive** method expecting that it will return a new Message object at some point. The code here will block until a new message is received. This sort of approach assumes that your program has nothing else that it needs to do until a message arrives, however there is an alternative should your application need to perform other processing. The code sample below shows a polling loop that uses the MessageConsumer's **receiveNoWait** method to poll and return immediately to allow for other processing to occur. + +**Synchronous Polling with no wait.** + +while( !done ) { + + std::auto_ptr message( myConsumer->receiveNoWait() ); + + if( message.get() != NULL ) { + ...Do Something with the message... + } + + ...Perform other application logic before checking for another message... +} + +The asynchronous method involves implementing the CMS MessageListener interface and passing an instance of your implementation to the MessageConsumer's **setMessageListener** method. When a new message arrives your listener's **onMessage** method will be called by the consumer in the context of another thread to allow you to process the Message received. Below is a code snippet that demonstrates implementing the MessageListener interface. + +**Simple MessageListener Implementation.** + +class SimpleListener : public cms::MessageListener { + + virtual void onMessage( const Message* message ) { + + const TextMessage* textMessage = + dynamic_cast< const TextMessage* >( message ); + string text = ""; + + if( textMessage != NULL ) { + text = textMessage->getText(); + } else { + text = "NOT A TEXTMESSAGE!"; + } + + printf( "Message Received: %s\\n", text.c_str() ); + + } +}; + +In the sample above we create a new class called SimpleListener that prints the contents of a TextMessage when received, or print an message indicating that it did not receive a TextMessage as it had expected to. Notice that the **onMessage** method receives a pointer to the base Message interface and we then attempt to dynamic cast to the type we think we should have received. This allows your code to process multiple message types in one method. The pointer passed is owned by the caller or onMessage so you shouldn't store it or delete it, if you need to keep a copy of the Message around you must create a copy by calling Message's **clone** method. + +Now that we have a MessageListener implementation to work with its time to see how to setup asynchronous consumption using the MessageConsumer we created previously. + +**Setting up Async Consumption.** + +SimpleListener listener; + +myConsumer->setMessageListener( &listener ); + +That's it, we will now receive the messages sent to the Destination we created in the onMessage method of our SimpleListener instance. + +### CMS MessageProducer + +We've seen how to consume Messages now how do we produce them in the first place? The answer is the CMS MessageProducer which is used to send messages to the broker for distribution to the various clients listening for Messages on the topic or queue. Creating a MessageProducer is much the same as creating a MessageConsumer, you first create your Connection, Session, and Destination objects then use the Session to create a MessageProducer. The code snippet below demonstrates how to create a MessageProducer. + +**Creating a MessageProducer from a CMS Session object** + +// Create the ConnectionFactory +std::auto_ptr connectionFactory( + cms::ConnectionFactory::createCMSConnectionFactory( "tcp://127.0.0.1:61616" ) ); + +// Create a Connection +std::auto_ptr connection( connectionFactory->createConnection() ); + +// Create a new Session from our Connection +std::auto_ptr session( connection->createSession(); + +// Now create a Topic +std::auto_ptr myTopic( session->createTopic( "EXAMPLE-TOPIC" ) ); + +// Now create the Consumer +std::auto_ptr myProducer( session->createProducer( myTopic ) ); + +Complete Examples +----------------- + +Now that we've covered most of the basics of the CMS API its time to take a look at some complete examples that demonstrate how you might use the CMS API in your own application. The first example will show how to create a simple Asynchronous consumer that can receive TextMessage objects from an ActiveMQ broker, then in the second example we will look at a simple producer that publishes TextMessage objects to the destination that our consumer is listening on. + +### Simple Asynchronous Consumer + +In the Simple Asnychronous Consumer example we wrap the CMS API usage in a class called SimpleAsyncConsumer. This class exposes a single constructor that allows the user to create an instance of the class that connects to a particular broker and destination and whether the destination is a Queue or Topic. The user can also specify the Acknowledgement Mode shoukd be **CLIENT_ACKNOWLEDGE** instaned of the default **AUTO_ACKNOWLEDGE** mode. + +Once an instance of this class is created the user calls the _runConsumer_ method to start listening on the specified destination. The _runConsumer_ method creates a Connection to the broker and start a new Session configured with the configured Acknowledgement mode. Once a Session is created a new Consumer can then be created and attached to the configued Destination. Since we want to listen asynchronously for new messages the SimpleAsyncConsumer inherits from cms::MessageListener so that it can register itself as a Message Listener with the MessageConsumer created in _runConsumer_. + +After the _runConsumer_ method returns the main method waits for user input to exit, all messages received while the application is running will be dispatched to the onMessage method of SimpleAsyncConsumer and if the message is a TextMessage its contents will be printed onscreen. + +**A Simple Asynchronous Consumer example** + +/\* + \* Licensed to the Apache Software Foundation (ASF) under one or more + \* contributor license agreements. See the NOTICE file distributed with + \* this work for additional information regarding copyright ownership. + \* The ASF licenses this file to You under the Apache License, Version 2.0 + \* (the "License"); you may not use this file except in compliance with + \* the License. You may obtain a copy of the License at + \* + \* http://www.apache.org/licenses/LICENSE-2.0 + \* + \* Unless required by applicable law or agreed to in writing, software + \* distributed under the License is distributed on an "AS IS" BASIS, + \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + \* See the License for the specific language governing permissions and + \* limitations under the License. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace activemq; +using namespace activemq::core; +using namespace activemq::transport; +using namespace decaf::lang; +using namespace decaf::util; +using namespace decaf::util::concurrent; +using namespace cms; +using namespace std; + +//////////////////////////////////////////////////////////////////////////////// +class SimpleAsyncConsumer : public ExceptionListener, + public MessageListener, + public DefaultTransportListener { +private: + + Connection* connection; + Session* session; + Destination* destination; + MessageConsumer* consumer; + bool useTopic; + std::string brokerURI; + std::string destURI; + bool clientAck; + +private: + + SimpleAsyncConsumer( const SimpleAsyncConsumer& ); + SimpleAsyncConsumer& operator= ( const SimpleAsyncConsumer& ); + +public: + + SimpleAsyncConsumer( const std::string& brokerURI, + const std::string& destURI, + bool useTopic = false, + bool clientAck = false ) : + connection(NULL), + session(NULL), + destination(NULL), + consumer(NULL), + useTopic(useTopic), + brokerURI(brokerURI), + destURI(destURI), + clientAck(clientAck) { + } + + virtual ~SimpleAsyncConsumer() { + this->cleanup(); + } + + void close() { + this->cleanup(); + } + + void runConsumer() { + + try { + + // Create a ConnectionFactory + ActiveMQConnectionFactory* connectionFactory = + new ActiveMQConnectionFactory( brokerURI ); + + // Create a Connection + connection = connectionFactory->createConnection(); + delete connectionFactory; + + ActiveMQConnection* amqConnection = dynamic_cast( connection ); + if( amqConnection != NULL ) { + amqConnection->addTransportListener( this ); + } + + connection->start(); + + connection->setExceptionListener(this); + + // Create a Session + if( clientAck ) { + session = connection->createSession( Session::CLIENT_ACKNOWLEDGE ); + } else { + session = connection->createSession( Session::AUTO_ACKNOWLEDGE ); + } + + // Create the destination (Topic or Queue) + if( useTopic ) { + destination = session->createTopic( destURI ); + } else { + destination = session->createQueue( destURI ); + } + + // Create a MessageConsumer from the Session to the Topic or Queue + consumer = session->createConsumer( destination ); + consumer->setMessageListener( this ); + + } catch (CMSException& e) { + e.printStackTrace(); + } + } + + // Called from the consumer since this class is a registered MessageListener. + virtual void onMessage( const Message* message ) { + + static int count = 0; + + try + { + count++; + const TextMessage* textMessage = + dynamic_cast< const TextMessage* >( message ); + string text = ""; + + if( textMessage != NULL ) { + text = textMessage->getText(); + } else { + text = "NOT A TEXTMESSAGE!"; + } + + if( clientAck ) { + message->acknowledge(); + } + + printf( "Message #%d Received: %s\\n", count, text.c_str() ); + } catch (CMSException& e) { + e.printStackTrace(); + } + } + + // If something bad happens you see it here as this class is also been + // registered as an ExceptionListener with the connection. + virtual void onException( const CMSException& ex AMQCPP_UNUSED ) { + printf("CMS Exception occurred. Shutting down client.\\n"); + exit(1); + } + + virtual void transportInterrupted() { + std::cout << "The Connection's Transport has been Interrupted." << std::endl; + } + + virtual void transportResumed() { + std::cout << "The Connection's Transport has been Restored." << std::endl; + } + +private: + + void cleanup(){ + + try { + if( connection != NULL ) { + connection->close(); + } + } catch ( CMSException& e ) { + e.printStackTrace(); + } + + delete destination; + delete consumer; + delete session; + delete connection; + } +}; + +//////////////////////////////////////////////////////////////////////////////// +int main(int argc AMQCPP\_UNUSED, char* argv\[\] AMQCPP\_UNUSED) { + + activemq::library::ActiveMQCPP::initializeLibrary(); + + std::cout << "=====================================================\\n"; + std::cout << "Starting the example:" << std::endl; + std::cout << "-----------------------------------------------------\\n"; + + // Set the URI to point to the IPAddress of your broker. + // add any optional params to the url to enable things like + // tightMarshalling or tcp logging etc. See the CMS web site for + // a full list of configuration options. + // + // http://activemq.apache.org/cms/ + // + std::string brokerURI = + "failover:(tcp://127.0.0.1:61616)"; + + //============================================================ + // This is the Destination Name and URI options. Use this to + // customize where the consumer listens, to have the consumer + // use a topic or queue set the 'useTopics' flag. + //============================================================ + std::string destURI = "TEST.FOO"; //?consumer.prefetchSize=1"; + + //============================================================ + // set to true to use topics instead of queues + // Note in the code above that this causes createTopic or + // createQueue to be used in the consumer. + //============================================================ + bool useTopics = false; + + //============================================================ + // set to true if you want the consumer to use client ack mode + // instead of the default auto ack mode. + //============================================================ + bool clientAck = false; + + // Create the consumer + SimpleAsyncConsumer consumer( brokerURI, destURI, useTopics, clientAck ); + + // Start it up and it will listen forever. + consumer.runConsumer(); + + // Wait to exit. + std::cout << "Press 'q' to quit" << std::endl; + while( std::cin.get() != 'q') {} + + // All CMS resources should be closed before the library is shutdown. + consumer.close(); + + std::cout << "-----------------------------------------------------\\n"; + std::cout << "Finished with the example." << std::endl; + std::cout << "=====================================================\\n"; + + activemq::library::ActiveMQCPP::shutdownLibrary(); +} + +### Simple Producer + +Much like the Simple Asynchronous Consumer example the Simple Producer example wraps up the CMS API detials needed to create a producer into a class called **SimpleProducer**. This class exposes a simillar interface to the consumer example, there is one constructor that allows an instance to be created with configuration options for the broker and destination as well as the number of messages to send to the configured destination. Once created the client code simply calls the SimpleProducer's _run_ method to publish the specified number of messages. Once the _run_ method completes the client is free to close the SimpleProducer which cleans up the allocated CMS resources, once closed the application exits. + +**A Simple Message Producer Example** + +/\* + \* Licensed to the Apache Software Foundation (ASF) under one or more + \* contributor license agreements. See the NOTICE file distributed with + \* this work for additional information regarding copyright ownership. + \* The ASF licenses this file to You under the Apache License, Version 2.0 + \* (the "License"); you may not use this file except in compliance with + \* the License. You may obtain a copy of the License at + \* + \* http://www.apache.org/licenses/LICENSE-2.0 + \* + \* Unless required by applicable law or agreed to in writing, software + \* distributed under the License is distributed on an "AS IS" BASIS, + \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + \* See the License for the specific language governing permissions and + \* limitations under the License. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace activemq; +using namespace activemq::core; +using namespace decaf; +using namespace decaf::lang; +using namespace decaf::util; +using namespace decaf::util::concurrent; +using namespace cms; +using namespace std; + +//////////////////////////////////////////////////////////////////////////////// +class SimpleProducer : public Runnable { +private: + + Connection* connection; + Session* session; + Destination* destination; + MessageProducer* producer; + bool useTopic; + bool clientAck; + unsigned int numMessages; + std::string brokerURI; + std::string destURI; + +private: + + SimpleProducer( const SimpleProducer& ); + SimpleProducer& operator= ( const SimpleProducer& ); + +public: + + SimpleProducer( const std::string& brokerURI, unsigned int numMessages, + const std::string& destURI, bool useTopic = false, bool clientAck = false ) : + connection(NULL), + session(NULL), + destination(NULL), + producer(NULL), + useTopic(useTopic), + clientAck(clientAck), + numMessages(numMessages), + brokerURI(brokerURI), + destURI(destURI) { + } + + virtual ~SimpleProducer(){ + cleanup(); + } + + void close() { + this->cleanup(); + } + + virtual void run() { + try { + + // Create a ConnectionFactory + auto_ptr connectionFactory( + new ActiveMQConnectionFactory( brokerURI ) ); + + // Create a Connection + try{ + connection = connectionFactory->createConnection(); + connection->start(); + } catch( CMSException& e ) { + e.printStackTrace(); + throw e; + } + + // Create a Session + if( clientAck ) { + session = connection->createSession( Session::CLIENT_ACKNOWLEDGE ); + } else { + session = connection->createSession( Session::AUTO_ACKNOWLEDGE ); + } + + // Create the destination (Topic or Queue) + if( useTopic ) { + destination = session->createTopic( destURI ); + } else { + destination = session->createQueue( destURI ); + } + + // Create a MessageProducer from the Session to the Topic or Queue + producer = session->createProducer( destination ); + producer->setDeliveryMode( DeliveryMode::NON_PERSISTENT ); + + // Create the Thread Id String + string threadIdStr = Long::toString( Thread::currentThread()->getId() ); + + // Create a messages + string text = (string)"Hello world! from thread " + threadIdStr; + + for( unsigned int ix=0; ixcreateTextMessage( text ); + + message->setIntProperty( "Integer", ix ); + + // Tell the producer to send the message + printf( "Sent message #%d from thread %s\\n", ix+1, threadIdStr.c_str() ); + producer->send( message ); + + delete message; + } + + }catch ( CMSException& e ) { + e.printStackTrace(); + } + } + +private: + + void cleanup(){ + + try { + if( connection != NULL ) { + connection->close(); + } + } catch ( CMSException& e ) { + e.printStackTrace(); + } + + delete destination; + delete producer; + delete session; + delete connection; + } +}; + +//////////////////////////////////////////////////////////////////////////////// +int main(int argc AMQCPP\_UNUSED, char* argv\[\] AMQCPP\_UNUSED) { + + activemq::library::ActiveMQCPP::initializeLibrary(); + + std::cout << "=====================================================\\n"; + std::cout << "Starting the example:" << std::endl; + std::cout << "-----------------------------------------------------\\n"; + + // Set the URI to point to the IPAddress of your broker. + // add any optional params to the url to enable things like + // tightMarshalling or tcp logging etc. See the CMS web site for + // a full list of configuration options. + // + // http://activemq.apache.org/cms/ + // + std::string brokerURI = + "failover://(tcp://127.0.0.1:61616)"; + + //============================================================ + // Total number of messages for this producer to send. + //============================================================ + unsigned int numMessages = 2000; + + //============================================================ + // This is the Destination Name and URI options. Use this to + // customize where the Producer produces, to have the producer + // use a topic or queue set the 'useTopics' flag. + //============================================================ + std::string destURI = "TEST.FOO"; + + //============================================================ + // set to true to use topics instead of queues + // Note in the code above that this causes createTopic or + // createQueue to be used in the producer. + //============================================================ + bool useTopics = false; + + // Create the producer and run it. + SimpleProducer producer( brokerURI, numMessages, destURI, useTopics ); + + // Publish the given number of Messages + producer.run(); + + // Before exiting we ensure that all CMS resources are closed. + producer.close(); + + std::cout << "-----------------------------------------------------\\n"; + std::cout << "Finished with the example." << std::endl; + std::cout << "=====================================================\\n"; + + activemq::library::ActiveMQCPP::shutdownLibrary(); +} + diff --git a/cms.md b/cms.md new file mode 100644 index 0000000..ddb1c91 --- /dev/null +++ b/cms.md @@ -0,0 +1,171 @@ +Apache ActiveMQ ™ -- CMS + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [CMS](cms.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.7.0/activemq-core/apidocs/) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +![](https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif) + +**Moved Page** +This page has moved [here](http://activemq.apache.org/cms/) + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/code-overview.md b/code-overview.md new file mode 100644 index 0000000..e7e354b --- /dev/null +++ b/code-overview.md @@ -0,0 +1,121 @@ +Apache ActiveMQ ™ -- Code Overview + +[Developers](developers.html) > [Code Overview](code-overview.html) + + +Architecture +============ + +The following section walks through the main parts of Apache ActiveMQ and links to the code to help you understand the layout + +![](http://activemq.apache.org/images/BrokerDiagram.png) + +JMS Client +---------- + +The [org.apache.activemq](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/package-summary.html) package defines the core JMS client. + +Transport +--------- + +The JMS client and the message broker use the [Transport](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/transport/Transport.html) abstraction for sending around command objects (like a distributed _Command Pattern_). A TransportChannel typically deals with some kind of networking mechanism (TCP sockets using BIO, using NIO, UDP / multicast, SSL over sockets, JXTA, EmberIO etc). See the [org.apache.activemq.transport](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/transport/package-summary.html) package for more details + +So the TransportChannel is basically concerned with sending and receiving [Command](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/command/Command.html) objects (each instance represents some kind of _command_). Packet is defined in the [org.apache.activemq.command](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/command/package-summary.html) package which defines all the JMS Message implementations classes (which are Commands) along with a number of other kinds of packets, like subsciptions, message acknowledgements, transactions and so forth. + +WireFormat +---------- + +There are various possible ways of encoding messages onto a stream. We may wish to adapt to various different encoding mechanisms - such as to provide simpler wire formats for talking to C / JavaScript or to make a C# friendly encoding. + +So all the Transport  implementations take a pluggable WireFormat implementation class - which is a _Strategy Pattern_ for deciding how to write the Command to a DataIn / DataOut stream or Datagram. + +So if you wish to provide your own binary, _on the wire_ protocol then we just need a WireFormat implementation of your protocol, then we can use this with any transport (TCP BIO, NIO, JXTA etc). + +We use [OpenWireFormat](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/openwire/OpenWireFormat.html) by default which is the most efficient & easiest format to use from Java code - so if both ends of the wire are Java then its highly recommended. Though other WireFormats are most welcome. + +Default Wire Format +------------------- + +The default wire format writes a byte which indicates the kind of Command which is being sent (see the [CommandTypes](http://activemq.apache.org/maven/5.5.0/activemq-core/apidocs/org/apache/activemq/command/CommandTypes.html) interface which defines all the int constants for each type of command. + +The core JMS Message types each have a unique byte ID for + +* Message +* ObjectMessage +* TextMessage +* MapMessage +* BytesMessage +* StreamMessage + +Then in addition there are various other [types of command](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/command/package-summary.html) such as + +* [ConnectionInfo](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/command/ConnectionInfo.html) for when a new connection is established with a message broker +* [ConsumerInfo](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/command/ConsumerInfo.html) when a new consumer is created on a connection +* [MessageAck](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/command/MessageAck.html) to acknowledge a message ID +* [TransactionInfo](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/command/TransactionInfo.html) to denote a transaction + +There are a few others; the [org.apache.activemq.command](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/command/package-summary.html) package describes them in their gory detail. + +Basically the DefaultWireFormat has a default encoding of each of these commands. So after the first byte which indicates the type of packet is written, there is a specific wire format per packet type. + +For new wire formats it may be that you only need to support a small subset of these types. e.g. you might just have a simple publish message, consume message & message ack. + +Message Broker +============== + +The APIs for the message broker (server side of the JMS client) are defined in the [org.apache.activemq.broker](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/broker/package-summary.html). There are various other packages which define different parts, from the message stores to the message routing and so forth. + +To see an overview of these packages try the [JavaDocs](javadocs.html) + +* * * + +ActiveMQ System Overview +======================== + +Introduction +------------ + +ActiveMQ is the system responsible for creating and managing network connections used for communication between clients and the broker. This document hopes to outline the inner workings of this system with in order to make it easier to understand for future developers. It will give a high-level overview of the system and outline the major players. We will also cover a few other interesting classes that may be useful to others working on the system. Most of this document is written with the server side code in mind. This is because the client-side communication systems are architecturally simple and understanding the server will make understanding clients trivial by comparison. + +We assume the reader has basic understanding of JMS. Refer to the official Java docs for more information. + +Overview: The Big Players +------------------------- + +The core classes involved in the ActiveMQ communication system are Transports. These include the `Transport`, `TransportServer`, and `TransportFactory` hierarchies. `Transport`s and `TransportServer`s are wrappers around sockets and server sockets respectively. `TransportFactory`s (as you may have guessed) are factories that create `Transport`s and `TransportServers`. `Transport`s are connected to `Broker`s and transmit `Command`s, which represent all major actions to be taken by ActiveMQ (more on this later). The following example illustrates how these pieces fit together. + +The primary class needed to create a JMS "provider" application is the `Broker` class. The default ActiveMQ binary will use a `BrokerService` class to wrap around `Broker`s. When the application is started, it instantiates a `BrokerService` and instructs it to bind to a specific (local) address, say "tcp://localhost:61616". The `Broker` will use the scheme in the given address and find the proper `TransportFactory`, `TcpTransportFactory` in this example. This factory will then be used to create a `TcpTransportServer` that will be bound to "localhost:61616". Once the `TransportServer` is started, it will continually pole its socket for incoming connections. Successfully connected incoming sockets will be wrapped in a `TcpTransport` instance and passed back (indirectly) to the `Broker`. The `Broker` will then start polling the new `Transport` for incoming `Command`s to process. + +The final pieces missing from the above example are the `TransportConnection` and `TransportConnector` classes. These classes are used to connect `Broker`s to `Transport`s and `TransportServer`s respectively. + +Class Details +------------- + +This section will explain some of the more interesting details of the mentioned classes separately. + +### Transports, TransportServers, and TransportFactories + +The basic principles of how these classes operate are very simple: `Transport`s and `TransportServer`s are wrappers around sockets and server sockets used to hide implementation, and `TransportFactory`s are factory classes for the mentioned classes. The only caveats are how `TransportFactory`s are chosen and configured based on URIs they are supplied. + +The `TransportFactory` class is abstract and incapable of creating `Transport` or `TransportServer` classes directly. It, nevertheless, is the class used to create `Transport`s and `TransportServer`s. `TransportFactory` delegates its responsibilities to its subclasses based on the choice of subclass provided by the `FactoryFinder` class, which uses the URI's scheme to find a matching factory classes based on text files stored under the META-INF directory. + +Configuration of the created `Transport`s is done entirely to reflection. `Transport`s are configured through calls to `compositeConfigure`, which are made by the factory at the time of the `Transport`'s creation. `compositeConfigure` uses the `IntrospectionSupport` class to call setters for parameters passed in through the URI. For example, creating a `Transport` using the URI "ssl://localhost:61616/?needClientAuth=true" would result in the creation of an `SslTransport` object whose `setNeedClientAuth` method (if it exists) is called with the value of `true` immediately after its creation. `TransportServer`s operate in a similar fashion. The only difference is that the call to `IntrospectionSupport` is made from the `doBind` method of the `TransportFactory`. + +### Commands + +`Command`s are the main means for communication within `Broker`s. Each `Command` represents an action to be taken. `Command` subclasses include `ConnectionInfo`, `KeepAliveInfo`, and `Message`, which result in processing of new connections, maintenance of old connections, and processing of user messages respectively. These classes are de-serialized from `Transport`s using Marshalers. Whenever new data is found in a socket, the first byte is read to determine what type of `Command` being received. The proper Marshaller is then selected to de-serialize the `Command` (e.g. to de-serialize a `ConnectionInfo`, the `ConnectionInfoMarshaller` is used). + +### TransportConnections and TransportConnectors + +Every `TransportServer` is connected to a `Broker` using a `TransportConnector`. The server's accept listener (which is called when a new `Transport` is constructed) is set to call the given `TransportConnector`'s `createConnection` method with the new `Transport`. When called, `createConnection` creates a new `TransportConnection` that links the given `Transport` and the supporting `Broker` together; the `Transport`'s transport listener is set to the `TransportConnection`'s `onCommand` method, which is then called whenever a new `Command` is received. + +`Command`s and `AbstractConnection` (the superclass of `TransportConnection`) form a visitor pattern. `onCommand` will call `AbstractConnection`'s service method which will make a series of calls in line with the visitor patter and eventually, the proper `Command` subclass to be passed to the corresponding method of the `Broker` for processing. + +### BrokerFilters and BrokerPlugins + +While not used directly by the communication system, `BrokerFilter`s and `BrokerPlugin`s provide an effective and easy to use way of modifying Broker behavior. `BrokerFilter`s allow for one to modify a few `Broker` methods without touching the rest (as the name suggests). The `BrokerFilter` passes on all of its responsibilities to a `Broker` it receives in its constructor. Subclassing `BrokerFilter` allows us to perform additional actions before passing the work down to the underlying `Broker`. + +The power of the `BrokerFilter` class comes from the fact that multiple filters can be cascaded to create different functional combinations. As an example, the `JaasAuthenticationBroker` is a subclass of `BrokerFilter` that modifies the methods used for adding and removing connections to allow for JAAS authentication. `AuthorizationBroker` is another subclass of `BrokerFilter`. This class modifies the destination regulation methods to enforce access levels. With this architecture, one can create a `JaasAuthenticationBroker` and have it use an `AuthorizationBroker` as its underlying broker (which would use another broker itself, etc.). + +`BrokerPlugin`s are simple classes that will wrap their corresponding `Brokers` around the one they are given. i.e. "installing" an `AuthorizationPlugin` on an existing `Broker` will create an `AuthorizationBroker` that uses the original `Broker` internally. The main reason for the existence of `BrokerPlugin`s is to allow for one to configure the `Broker` used by the `BrokerService` class (either through code or XML configuration and spring). + diff --git a/command-agent.md b/command-agent.md new file mode 100644 index 0000000..e3d7999 --- /dev/null +++ b/command-agent.md @@ -0,0 +1,45 @@ +Apache ActiveMQ ™ -- Command Agent + +[Features](features.html) > [Command Agent](command-agent.html) + + +Removed in 5.9 + +* [https://issues.apache.org/jira/browse/AMQ-4406](https://issues.apache.org/jira/browse/AMQ-4406) + +Command Agent +------------- + +From 4.2 onwards Apache ActiveMQ allows you to communicate with a broker Command Agent to be able to perform administration queries and commands. This allows you to use the message bus itself to communicate with the message broker to list available queues, topics, subscriptions, to view metadata, browse queues and so forth. + +### Enabling the Command Agent + +To enable the command agent, in the activemq.xml (or your spring.xml you use to configure the broker) add the following + + + + ... + + + + ... + + + + ... + + +The broker will then have a command agent connected which will listen on the topic **ActiveMQ.Agent**. + +### Using Jabber (XMPP) to talk to the Broker + +You can use the [XMPP](xmpp.html) support to talk with the broker. For example follow the instructions in [XMPP](xmpp.html) to connect via a Jabber client, then just join the room **ActiveMQ.Agent** and talk to the broker! + +The following image shows the [Spark](http://jivesoftware.com/products/spark/) client in action talking to the broker + +![](command-agent.data/help.png) + +### Using the interactive console + +The activemq-core module has a simple Java class called SimpleConsole which you can run in your IDE to get an interactive console for communicating with a broker over JMS. Type in the various commands (or help to get more help) and the results are returned on the console. + diff --git a/community.md b/community.md new file mode 100644 index 0000000..bdda52b --- /dev/null +++ b/community.md @@ -0,0 +1,34 @@ +Apache ActiveMQ ™ -- Community + +[Community](community.html) + + +* [Articles](articles.html) +* [Books](books.html) +* [Contributing](contributing.html) +* [Discussion Forums](discussion-forums.html) +* [FAQ](faq.html) + * [Configuration](configuration.html) + * [Developing ActiveMQ](developing-activemq.html) + * [Errors](errors.html) + * [General](general.html) + * [JMS](jms.html) + * [Persistence Questions](persistence-questions.html) + * [Terminology](terminology.html) + * [Using Apache ActiveMQ](using-apache-activemq.html) +* [Mailing Lists](mailing-lists.html) + * [All Forums](all-forums.html) + * [Developer Forum](developer-forum.html) + * [User Forum](user-forum.html) +* [PMC Templates](pmc-templates.html) +* [Privacy Policy](privacy-policy.html) +* [Projects Using ActiveMQ](projects-using-activemq.html) +* [Security Advisories](security-advisories.html) +* [Sponsorship](sponsorship.html) +* [Support](support.html) +* [Team](team.html) +* [Tips for getting help](tips-for-getting-help.html) +* [Users](users.html) + +  + diff --git a/compile-activemq-with-gcj.md b/compile-activemq-with-gcj.md new file mode 100644 index 0000000..1dd6b05 --- /dev/null +++ b/compile-activemq-with-gcj.md @@ -0,0 +1,255 @@ +Apache ActiveMQ ™ -- Compile ActiveMQ with GCJ + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [C Integration](c-integration.html) > [Compile ActiveMQ with GCJ](compile-activemq-with-gcj.html) + + +You can use [GCJ](http://gcc.gnu.org/java/) to build ActiveMQ as a shared library you can reuse from C++. + +### Native compile ActiveMQ HOWTO + +#### Abstract + +This document describes how to native compile ActiveMQ for use in a C++ environment. The version of ActiveMQ used is 3.2 in this howto. To compile you'll need GCC 4.0.2, or later, with both Java, and C/C++ support. + +#### Tools Setup + +If you don't already have GCC 4.0.2 installed you need to download and build it. See GCC manuals for complete instructions on how to build GCC but below is a short descriptions of the steps involved. The GCC build steps assumes that you already have an older GCC compiler installed. + +* Unpack GCC into an arbitrary directory, for example /opt/gccbuild, and then create a separate output directory. Your directory structure should look similar to this; + + /opt/gccbuild/gcc-4.0.2 + /opt/gccbuild/output + +* Go to the output directory and run configure. + + cd /opt/gccbuild/output + ../gcc-4.0.2/configure --prefix=/opt/gcc402 + --enable-shared + --enable-threads=posix + --enable-languages=c,c++,java + +* Run make. + + make bootstrap + make install + + +* Download ActiveMQ and copy the JARs to a new empty directory /opt/app, including + + activeio-1.1.jar + activemq-core-3.2.jar + commons-logging-1.0.3.jar + concurrent-1.3.4.jar + geronimo-spec-j2ee-jacc-1.0-rc4.jar + geronimo-spec-j2ee-management-1.0-rc4.jar + geronimo-spec-jms-1.1-rc4.jar + geronimo-spec-jta-1.0.1B-rc4.jar + log4j-1.2.8.jar + + +#### Write the Glue Code + +Either access the ActiveMQ classes directly from C++ or write a facade object in Java that handles all startup and shutdown logic of ActiveMQ. Save the glue files in the same directory as for the ActiveMQ jars. + +An CNI example using a Java object starting the MQ. + +##### Bootstrap.cpp + +#include +#include +#include +#include +#include +#include "MQAdapter.h" + +using namespace std; + +int main(int argc, char* argv\[\]) +{ + cout << "Entering main" << endl; + using namespace java::lang; + + try + { + // Create and startup Java VM + JvCreateJavaVM(NULL) ; + JvAttachCurrentThread(NULL, NULL) ; + + System::out->println(JvNewStringLatin1("Java println")) ; + + // Start ActiveMQ + MQAdapter* pAdapter = new MQAdapter() ; + pAdapter->start() ; + + // Send a message + pAdapter->send(JvNewStringLatin1("Hello World!")) ; + + // Shutdown ActiveMQ + pAdapter->stop() ; + + JvDetachCurrentThread() ; + } + catch( Throwable *t ) + { + System::err->println(JvNewStringLatin1("Exception")) ; + t->printStackTrace() ; + } +} + +##### MQAdapter.java + +import org.activemq.*; +import java.util.Hashtable ; +import javax.jms.*; +import javax.naming.*; + +public class MQAdapter +{ + private InitialContext jndiContext ; + private QueueConnectionFactory factory ; + private QueueConnection connection ; + private QueueSession session ; + private QueueSender sender ; + private Queue queue ; + + public MQAdapter() + { + } + + public void start() + { + try + { + Hashtable props = new Hashtable() ; + props.put(Context.INITIAL\_CONTEXT\_FACTORY, "org.activemq.jndi.ActiveMQInitialContextFactory") ; + props.put(Context.PROVIDER_URL, "tcp://localhost:61616") ; + props.put("queue.MyQueue", "example.MyQueue") ; + + jndiContext = new InitialContext(props) ; + + // Create and configure JMS connection factory + factory = (QueueConnectionFactory)jndiContext.lookup("ConnectionFactory") ; + + // Lookup Queue + queue = (Queue)jndiContext.lookup("MyQueue") ; + + // Create a JMS connection + connection = (QueueConnection)factory.createQueueConnection() ; + System.out.println("Created connection: " + connection) ; + + // Create a JMS session + session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE) ; + System.out.println("Created session: " + session) ; + + // Create JMS sender + sender = session.createSender(queue) ; + } + catch( Exception e ) + { + e.printStackTrace() ; + + try + { + if( connection != null ) + connection.close() ; + } catch( JMSException jmse ) + { /\* ignore */ } + } + } + + public void stop() + { + try + { + if( connection != null ) + connection.close() ; + } catch( JMSException e ) + { /\* ignore */ } + } + + public void send(String msg) + { + TextMessage message ; + + try + { + message = session.createTextMessage(msg) ; + sender.send(message) ; + } + catch( JMSException e ) + { + e.printStackTrace() ; + } + } +} + +#### Compile the Java and C++ Code + +The Java code must be BC compiled to be able to dynamically link required classes as needed, see reference for more information on BC compilation. Use the suggested script to compile all ActiveMQ JARs and create a class map database. + +Note + +Using -Bsymbolic does not seem to work, use -symbolic instead. + + compile.sh: + + #!/bin/sh + + # Create new classmap database + gcj-dbtool -n classmap.db + + for JAR_FILE in \`find -iname "*.jar"\` + do + echo "Compiling ${JAR_FILE} to native" + gcj -shared -findirect-dispatch -fjni -fPIC -Wl,-symbolic -o ${JAR\_FILE}.so ${JAR\_FILE} + gcj-dbtool -a classmap.db ${JAR\_FILE} ${JAR\_FILE}.so + done + +* Run the above script and set environment property GCJ_PROPERTIES. + + ./compile.sh + export GCJ_PROPERTIES="gnu.gcj.precompiled.db.path=/opt/app/classmap.db" + + +* Java compile MQAdapter.java + + gcj --classpath=./geronimo-spec-jms-1.1-rc4.jar:./activemq-core-3.2.jar -C MQAdapter.java + + +* Generate CNI header for MQAdapter.class + + gcjh MQAdapter + + +* JAR the Java glue code + + fastjar cf MQAdapter.jar MQAdapter.class + + +* Native compile the Java JAR into a shared library, add output directory to LD\_LIBRARY\_PATH. + + gcj -shared -findirect-dispatch -fjni -fPIC -Wl,-symbolic -o MQAdapter.so MQAdapter.jar + export LD\_LIBRARY\_PATH=$LD\_LIBRARY\_PATH:/opt/app + + +* Compile the C++ code + + g++ -c Bootstrap.cpp + + +* Link Bootstrap with the Java code + + gcj -o Bootstrap Bootstrap.o -L /opt/app -lgcj -lstdc++ activeio-1.1.jar.so activemq-core-3.2.jar.so + commons-logging-1.0.3.jar.so concurrent-1.3.4.jar.so geronimo-spec-jms-1.1-rc4.jar.so + geronimo-spec-j2ee-management-1.0-rc4.jar.so geronimo-spec-j2ee-jacc-1.0-rc4.jar.so + geronimo-spec-jta-1.0.1B-rc4.jar.so log4j-1.2.8.jar.so MQAdapter.so + + +Now, if everything went ok you should be able to run the app. with ./Bootstrap. + +#### References + +[How to BC compile with GCJ](http://gcc.gnu.org/wiki/How%20to%20BC%20compile%20with%20GCJ) + +[The state of Java on Linux](http://www.redhat.com/magazine/012oct05/features/java/) + diff --git a/complex-single-broker-configuration-stomp-only.md b/complex-single-broker-configuration-stomp-only.md new file mode 100644 index 0000000..728e342 --- /dev/null +++ b/complex-single-broker-configuration-stomp-only.md @@ -0,0 +1,121 @@ +Apache ActiveMQ ™ -- Complex Single Broker Configuration (STOMP only) + +[Using ActiveMQ](using-activemq.html) > [User Submitted Configurations](user-submitted-configurations.html) > [Complex Single Broker Configuration (STOMP only)](complex-single-broker-configuration-stomp-only.html) + + +Example of an ActiveMQ configuration with predefined queues, simple destination security (could easily update it to JAAS), complex Web Console security with Jetty JAAS, and JMX security too. + +While this is a fairly detailed configuration, it locks down every ActiveMQ service. It would be ideal if ActiveMQ shipped with a default closed configuration like this. + +ActiveMQ is assumed to be installed in /usr/local/activemq/ in this example. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + --> + + + + + + + + + + + + + + + + + + + +Add this XML snippet to the web.xml for the /admin/ app, in order to enable HTTP Authentication to match the activemq.xml configuration above. + + + + Web Console + /* + + + admins + + + + + BASIC + ActiveMQ + + diff --git a/composite-destinations.md b/composite-destinations.md new file mode 100644 index 0000000..9253d57 --- /dev/null +++ b/composite-destinations.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- Composite Destinations + +[Features](features.html) > [Destination Features](destination-features.html) > [Composite Destinations](composite-destinations.html) + + +As of version 1.1, ActiveMQ supports a technology we call _composite destinations_. This allows a single virtual JMS Destination to be used to represent a collection of JMS Destinations. + +For example you can use composite destinations to send a message to 12 physical queues in one operation. Or send a message to one topic and one queue in one operation. + +We do this using a simple separator of "," allowing a number of destinations to be specified when creating a destintation, or registering destinations in JNDI. e.g. the destination + +FOO.A,FOO.B,FOO.C + +Represents 3 different destinations. This could be used with a queue or topic to represent a set of 3 destinations. e.g. + +// send to 3 queues as one logical operation +Queue queue = new ActiveMQQueue("FOO.A,FOO.B,FOO.C"); +producer.send(queue, someMessage); + +If you wish to mix and match the types of destination, you can use a prefix of **queue://** or **topic://** to differentiate the type of destination. e.g. to publish on a queue but also make a notification on a topic as well you could use + +// send to queues and topic one logical operation +Queue queue = new ActiveMQQueue("FOO.A,topic://NOTIFY.FOO.A"); +producer.send(queue, someMessage); + +Composite destinations can also be configured on the [broker side](virtual-destinations.html), such that messages sent to a single destination by the client will be transparently copied to multiple physical destinations. + diff --git a/configurable-ioexception-handling.md b/configurable-ioexception-handling.md new file mode 100644 index 0000000..394c54c --- /dev/null +++ b/configurable-ioexception-handling.md @@ -0,0 +1,122 @@ +Apache ActiveMQ ™ -- Configurable IOException Handling + +[Features](features.html) > [Persistence](persistence.html) > [Configurable IOException Handling](configurable-ioexception-handling.html) + + +Starting with 5.3.1, ActiveMQ provides configurable IOException handling for its file-based message stores. From version 5.5 the handler is also invoked when the JDBC persistence adapter gets a failure on `getConnection()`. + +Default IOException handler +--------------------------- + +ActiveMQ comes with a default IOException handler, which does the following. When some of the file-based message stores encounter IOException it can be one of the two things: either the disk is unavailable of there's no more space on the disk. + +The first case is usually encountered when disk fails or network disk is disconnected. These errors are not "recoverable" and we usually want to shutdown the broker until problems with the disk are solved. + +When there's no more space on the disk, we usually want to wait that some space is reclaimed and continue what we have been doing before (exchanging messages). All file-based persistent stores are capable of surviving these kind of errors. + +### Configuring Default IOException handler + +There are a couple of properties you can use to tune the behavior of the `DefaultIOExceptionHandler`. First, instantiate the exception handler as a bean. Then configure the broker to use the exception handler by setting the broker's `ioExceptionHandler` property. + +Example: + + + true + + + + ... + + +Handler configuration properties: + +Property + +Since + +Default Value + +Description + +`ignoreAllErrors` + +5.4 + +`false` + +When `true` all errors are ignored and the broker remains running. + +`ignoreNoSpaceErrors` + +5.4 + +`true` + +When `false` 'no disk space' errors are treated the same as other errors causing the broker to be stopped. + +`noSpaceMessage` + +5.4 + +`space` + +The string used to match against the exception's message. When matched a 'no disk space' error results. + +`ignoreSQLExceptions` + +5.5 + +`true` + +If `true` all SQLExceptions are ignored by the handler allowing them to be handled by the persistence adapter's locker. When `false` the exception handler processes the exception. + +`sqlExceptionMessage` + +5.5 + +`""` + +The SQLException phrase to match when ignoring SQLExceptions. Only matched exceptions are ignored. All SQLExceptions match the default empty string. + +`stopStartConnectors` + +5.5 + +`false` + +When `true` transport connectors are stopped (client connections are refused), however, the broker will remain running. The transport connectors will be restarted following a successful persistence adapter checkpoint. All exceptions are ignored whilst the transport connectors are stopped. This option ensures that the broker does not need to be manually restarted in the event of a DB restart, for example. + +`resumeCheckSleepPeriod` + +5.5 + +`5sec` + +The interval between persistence adapter checkpoints. Typically used in conjunction with `stopStartConnectors`. + +systemExitOnShutdown + +5.13 + +false + +before stopping the broker, set the broker attribute systemExitOnShutdown to this value to potentially force a jvm exit. + +The default configuration will try to find a specified string in the exception message to determine whether it is a 'no disk space' error. On most platforms (at least those we have tested), you'll find the word 'space' in it. Of course, you can customize this to your platform by using `noSpaceMessage` property. + +Note: as of ActiveMQ 5.11 the `JDBCIOExceptionHandler` has been deprecated. It has been replaced by the `org.apache.activemq.util.LeaseLockerIOExceptionHandler` that will work with any persistence adapter that supports pluggable storage lockers whether or not a locker is in use. + +Writing your own handler + +In case this handler doesn't work for you, you can write your own. For example you might want to change the way how you detect full disk and execute some external command, like `df` on Linux to be sure. + +All you have to do is implement the `org.apache.activemq.util.IOExceptionHandler` interface then configure the broker to use it: + + + true + + + + ... + + diff --git a/configuration.md b/configuration.md new file mode 100644 index 0000000..2b1abfa --- /dev/null +++ b/configuration.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- Configuration + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) + + +Questions on configuring ActiveMQ's JMS client or the Message Broker + +* [How can I enable detailed logging](how-can-i-enable-detailed-logging.html) +* [How does XBean compare to Spring 2](how-does-xbean-compare-to-spring-2.html) +* [How do I configure 10s of 1000s of Queues in a single broker](how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker.html) +* [How do I configure ActiveMQ to hold 100s of millions of Queue Messages](how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages.html) +* [How do I configure ActiveMQ to use AIO server transport](how-do-i-configure-activemq-to-use-aio-server-transport.html) +* [How do I configure automatic reconnection](how-do-i-configure-automatic-reconnection.html) +* [How do I configure distributed queues or topics](how-do-i-configure-distributed-queues-or-topics.html) +* [How do I configure the queues I want](how-do-i-configure-the-queues-i-want.html) +* [How do I define a local address and local port for TCP or SSL](how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl.html) +* [How do I disable persistence](how-do-i-disable-persistence.html) +* [How do I run ActiveMQ under the Kaffe JVM](how-do-i-run-activemq-under-the-kaffe-jvm.html) +* [How to configure a new database](how-to-configure-a-new-database.html) +* [How to deploy activemq-ra-version.rar to weblogic](how-to-deploy-activemq-ra-versionrar-to-weblogic.html) +* [How to disable multicast discovery](how-to-disable-multicast-discovery.html) + diff --git a/configure-startup-destinations.md b/configure-startup-destinations.md new file mode 100644 index 0000000..60ad6aa --- /dev/null +++ b/configure-startup-destinations.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- Configure Startup Destinations + +[Features](features.html) > [Destination Features](destination-features.html) > [Configure Startup Destinations](configure-startup-destinations.html) + + +Typically in Apache ActiveMQ we [create destinations on demand](how-do-i-create-new-destinations.html) as clients start to use them. However sometimes users want to be able to configure which destinations are available on startup explicitly in the [Xml Configuration](xml-configuration.html). + +4.1 Feature + +Note this feature is available from 4.1 onwards. If you try this XML on older versions of ActiveMQ you will get an exception about the 'destinations' property not being writable. + +### Example + +The following [example](http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/destinations-on-start.xml) shows how you can configure a number of destinations to be available at startup. + diff --git a/configure-version-5-brokers.md b/configure-version-5-brokers.md new file mode 100644 index 0000000..7ee308e --- /dev/null +++ b/configure-version-5-brokers.md @@ -0,0 +1,125 @@ +Apache ActiveMQ ™ -- Configure version 5 Brokers + +[Using ActiveMQ 5](using-activemq-5.html) > [Configure version 5 Brokers](configure-version-5-brokers.html) + + +### Overview + +There is an updates XML syntax for configuring message brokers - [see here](http://activemq.apache.org/schema/core/activemq-core-5.0-SNAPSHOT.xsd) + +So we decided that using XML would make this configuration much easier. we use [XBean](http://xbean.org/) to perform the XML configuration. + +For details of the XML see the [Xml Reference](xml-reference.html) + +Be careful with broker names and URIs + +Make sure you do not use any strange characters in the names of brokers as they are converted to URIs which [do not allow things like underscores](http://java.sun.com/j2se/1.4.2/docs/api/java/net/URI.html) in them etc. + +Examples +-------- + +The default ActiveMQ configuration: [current default config](http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/conf/activemq.xml). + + + + + + file:${activemq.conf}/credentials.properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +From the binary distributionthere is an _activemq_ script allowing you to run a Message Broker as a stand alone process from the command line easily providing the $ACTIVEMQ_HOME/bin directory is on your PATH. + diff --git a/configuring-activemq-cpp.md b/configuring-activemq-cpp.md new file mode 100644 index 0000000..35aa63a --- /dev/null +++ b/configuring-activemq-cpp.md @@ -0,0 +1,242 @@ +Apache ActiveMQ ™ -- Configuring ActiveMQ CPP + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [ActiveMQ C++ Clients](activemq-c-clients.html) > [Configuring ActiveMQ CPP](configuring-activemq-cpp.html) + + +The configuration of ActiveMQ is so slick, we decided to take a similar approach with ActiveMQ-CPP. All configuration is achieved via URI-encoded parameters, either on the connection or destinations. Through the URIs, you can configure virtually every facet of your ActiveMQ-CPP client. The tables below show the comprehensive set of parameters. + +**Connection URI Parameters** +----------------------------- + +#### Example Configuration + +cf = new ActiveMQConnectionFactory( + "tcp://localhost:61616?wireFormat=openwire&wireFormat.tightEncodingEnabled=true"); + +### **Socket Options** + +Option Name + +Default + +Description + +inputBufferSize + +10000 + +The number of bytes in the buffered input stream's buffer + +outputBufferSize + +10000 + +The number of bytes in the buffered output stream's buffer + +soLinger + +0 + +Socket SOLinger value + +soKeepAlive + +false + +Socket SOKeepAlive value + +soReceiveBufferSize + +-1 + +Socket receive buffer. If -1, use OS default. + +soSendBufferSize + +-1 + +Socket send buffer. If -1, use OS default. + +### **Transport Options** + +Option Name + +Default + +Description + +commandTracingEnabled + +false + +If true, enables tracing of incoming and outgoing transport commands + +tcpTracingEnabled + +false + +If true, enables tracing of raw network IO (in hex) + +useAsyncSend + +false + +If true, enables asynchronous sending of messages. + +### **Transaction Options** + +Option Name + +Default + +Description + +transaction.maxRedeliveryCount + +5 + +Maximum number of redelivery attempts. + +### **Wire Format Protocol Options** + +Option Name + +Default + +Description + +wireFormat + +openwire + +Selects the wire format to use. Out of the box, can be either stomp or openwire. + +wireFormat.stackTraceEnabled + +false + +Should the stack trace of exception that occur on the broker be sent to the client? Only used by openwire protocol. + +wireFormat.cacheEnabled + +false + +Should commonly repeated values be cached so that less marshalling occurs? Only used by openwire protocol. + +wireFormat.tcpNoDelayEnabled + +false + +Does not affect the wire format, but provides a hint to the peer that TCP nodelay should be enabled on the communications Socket. Only used by openwire protocol. + +wireFormat.sizePrefixDisabled + +false + +Should serialized messages include a payload length prefix? Only used by openwire protocol. + +wireFormat.tightEncodingEnabled + +false + +Should wire size be optimized over CPU usage? Only used by the openwire protocol. + +**Destination URI Parameters** +------------------------------ + +#### Example Configuration + +d = session->createTopic("com.foo?consumer.prefetchSize=2000&consumer.noLocal=true"); + +### **General Options** + +Option Name + +Default + +Description + +consumer.prefetchSize + +1000 + +The number of message the consumer will [prefetch](what-is-the-prefetch-limit-for.html). + +consumer.maximumPendingMessageLimit + +0 + +Use to control if messages are dropped if a [slow consumer](slow-consumer-handling.html) situation exists. + +consumer.noLocal + +false + +Same as the noLocal flag on a Topic consumer. Exposed here so that it can be used with a queue. + +consumer.dispatchAsync + +false + +Should the broker [dispatch messages asynchronously](consumer-dispatch-async.html) to the consumer. + +consumer.retroactive + +false + +Is this a [Retroactive Consumer](retroactive-consumer.html). + +consumer.selector + +null + +JMS Selector used with the consumer. + +consumer.exclusive + +false + +Is this an [Exclusive Consumer](exclusive-consumer.html). + +consumer.priority + +0 + +Allows you to configure a [Consumer Priority](consumer-priority.html). + +### **OpenWire-only Options** + +Option Name + +Default + +Description + +consumer.browser + +false + +consumer.networkSubscription + +false + +consumer.optimizedAcknowledge + +false + +Enables an optimised acknowledgement mode where messages are acknowledged in batches rather than individually. Alternatively, you could use Session.DUPS\_OK\_ACKNOWLEDGE acknowledgement mode for the consumers which can often be faster. **WARNING** enabling this issue could cause some issues with auto-acknowledgement on reconnection + +consumer.noRangeAcks + +false + +consumer.retroactive + +false + +Sets whether or not retroactive consumers are enabled. Retroactive consumers allow non-durable topic subscribers to receive old messages that were published before the non-durable subscriber started. + +producer.dispatchAsyc + +false + diff --git a/configuring-brokers.md b/configuring-brokers.md new file mode 100644 index 0000000..ba6e610 --- /dev/null +++ b/configuring-brokers.md @@ -0,0 +1,41 @@ +Apache ActiveMQ ™ -- Configuring Brokers + +[Using ActiveMQ](using-activemq.html) > [Configuring Brokers](configuring-brokers.html) + + +### Overview + +In ActiveMQ 4, we are using a new xml format to configure the broker. + +### Syntax + +The following xsd describes the syntax of the broker configuration file. + +[activemq-4.0.xsd](configuring-brokers.data/activemq-4.0.xsd?version=1&modificationDate=1133701454000&api=v2) + +And here is the reference documentation for that xsd file. + +[activemq-4.0.xsd.html](configuring-brokers.data/activemq-4.0.xsd.html?version=1&modificationDate=1133701442000&api=v2) + +### Example + + + + + + + + + + + + + + + + + + + + + diff --git a/configuring-transports.md b/configuring-transports.md new file mode 100644 index 0000000..331da6b --- /dev/null +++ b/configuring-transports.md @@ -0,0 +1,249 @@ +Apache ActiveMQ ™ -- Configuring Transports + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) + + +Transport configuration options +------------------------------- + +One of the first kinds of URI you are likely to use is a transport URI to connect to a broker using a kind of transport. Generally TCP or VM are the first transports you'll use. + +Be careful about whitespace + +All of the following URI configurations are based on the java.net.URI class which does not allow whitespace to be used. So if you are using **`failover:`** or **`static:`** URIs, do not put any whitespace around the **`','`** symbol. + +### The AUTO Transport + +Starting with 5.13.0 ActiveMQ has support for automatic wire protocol detection over TCP, SSL, NIO, and NIO SSL.  OpenWire, STOMP, AMQP, and MQTT are supported.  For details see the [AUTO](auto.html) Transport Reference. + +### The VM Transport + +The VM transport allows clients to connect to each other inside the VM without the overhead of the network communication. The connection used is not that of a socket connection but instead uses direct method invocations to enable a high performance embedded messaging system. + +The first client to use the VM connection will boot an embedded broker. Subsequent connections will attach that the same broker. Once all VM connections to the broker have been closed, the embedded broker will automatically shutdown. + +For more information see the [VM Transport Reference](vm-transport-reference.html) + +### The AMQP Transport + +As of 5.8.0 ActiveMQ has support for AMQP. For details see the [AMQP](amqp.html) Transport Reference. + +### The MQTT Transport + +Starting with 5.6.0 ActiveMQ also supports [MQTT](http://mqtt.org/). Its a light weight publish/subscribe messaging transport. See the [MQTT](mqtt.html) Transport Reference for details. + +### The TCP Transport + +The TCP transport allows clients to connect a remote ActiveMQ using a a TCP socket. + +For more information see the [TCP Transport Reference](tcp-transport-reference.html) + +### The NIO Transport + +Same as the TCP transport, except that the [New I/O (NIO)](http://en.wikipedia.org/wiki/New_I/O) package is used, which may provide better performance. The Java NIO package should not be confused with IBM's [AIO4J](http://java.sys-con.com/read/46658.htm) package. + +To switch from TCP to NIO, simply change the scheme portion of the URI. Here's an example as defined within a broker's XML configuration file. + + + ... + + + + ... + + +Trying to use nio transport url on the client side will instantiate the regular TCP transport. For more information see the [NIO Transport Reference](nio-transport-reference.html) + +### The SSL Transport + +This allows you to talk over TCP using SSL. For more information see the [SSL Transport Reference](ssl-transport-reference.html) + +### The NIO SSL Transport + +Availability + +Available since 5.6 + +Implementing SSL transport over NIO. This allows you to connect large number of SSL clients to a single broker instance. It's server side transport-option only + + + ... + + + + ... + + +Trying to use `nio+ssl` transport url on the client side will instantiate the regular SSL transport. + +### The Peer Transport + +The Peer transport provides a peer-to-peer network with ActiveMQ. What actually happens is the peer transport uses the VM transport to create and connect to a local embedded broker but which configures the embedded broker to establish network connections to other peer embedded brokers. + +For more information see the [Peer Transport Reference](peer-transport-reference.html) + +### The UDP Transport + +This allows you to talk over UDP. + +For more information see the [UDP Transport Reference](udp-transport-reference.html) + +### The Multicast Transport + +This allows you to talk over Multicast. + +For more information see the [Multicast Transport Reference](multicast-transport-reference.html) + +### The HTTP and HTTPS Transport + +This allows the ActiveMQ client and broker to tunnel over HTTP. If the client is not JMS you might want to look at [REST](rest.html) or [Ajax](ajax.html) support instead. + +For more information see the [HTTP and HTTPs Transports Reference](http-and-https-transports-reference.html) + +### The WebSockets Transport + +This transport uses the new HTML5 WebSockets to exchange messages with the broker. For more information see the [WebSockets](websockets.html) Transport Reference + +### The Stomp Transport + +A plain text transport that can be used with many languages. See [Stomp](stomp.html) for more details. + +General Purpose URIs +-------------------- + +You can configure other features via the URI syntax as follows... + +### Connection Configuration URI + +Any Apache ActiveMQ JMS connection can be configured using the URL or explicitly setting properties on the [ActiveMQConnection](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html) or [ActiveMQConnectionFactory](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) objects themselves. + +For more information see [Connection Configuration URI](connection-configuration-uri.html) + +### Destination Options + +You can configure various consumer related options using [Destination Options](destination-options.html) which allow you to configure destinations using URI syntax. + +### Broker Configuration URI + +You can use a [Broker Configuration URI](broker-configuration-uri.html) to configure an embedded broker, either using the BrokerFactory helper class from Java or using the activemq shell script. For more details see [How to Run a Broker](run-broker.html) + +### Configuring Wire Formats + +Any transport which involves marshalling messages onto some kind of network transport like TCP or UDP will typically use the [OpenWire](openwire.html) format. This is configurable to customize how things appear on the wire. + +For more information see [Configuring Wire Formats](configuring-wire-formats.html) + +High Level Protocol URIs +------------------------ + +The following higher level protocols can be configured via URI + +### The Failover Transport + +The Failover transport layers reconnect logic on top of any of the other transports. This is what used to be the Reliable transport in ActiveMQ 3. Its configuration syntax allows you to specify any number of composite URIs. The Failover transport randomly chooses one of the composite URIs and attempts to establish a connection to it. If it does not succeed or if it subsequently fails, a new connection is established to one of the other URIs in the list. + +For more information see the [Failover Transport Reference](failover-transport-reference.html) + +### The Fanout Transport + +The Fanout transport layers reconnect and replicate logic on top of any of the other transports. It is used replicate commands to multiple brokers. + +For more information see the [Fanout Transport Reference](fanout-transport-reference.html) + +Using Discovery +--------------- + +Often when using transports like TCP you want to use [Discovery](discovery.html) to locate the available brokers. This is different from using, say, [Multicast](multicast-transport-reference.html) \- as the actual main communication is over TCP but multicast is purely used to discover the location of brokers. + +### The Discovery Transport + +The Discovery transport works just like the reliable transport, except that it uses a discovery agent to locate the list of URIs to connect to. + +For more information see the [Discovery Transport Reference](discovery-transport-reference.html) + +### The ZeroConf Transport + +The ZeroConf transport provides [Discovery](discovery.html) and it works like the [Discovery Transport](discovery-transport-reference.html) but rather than using our own multicast based discovery mechanism (which allows you to configure the exact multicast address and port, etc.), the [ZeroConf](zeroconf.html) transport is used instead. + +For more information see the [ZeroConf Transport Reference](zeroconf-transport-reference.html) + +### Server side options + +There are a number of options that can be used for changing behavior on the server for the **`TransportConnector`** in the ActiveMQ broker configuration. These are: + +property name + +default + +description + +`allowLinkStealing` + +`false` + +This is enabled for default for MQTT transport. + +Link Stealing is where the last of two or more connections with the same id (clientID for JMS) is deemed the valid connection and the older one is closed by the broker. + +`discoveryURI` + +`null` + +If set, the multicast discovery address for client connections to find the broker. + +`enableStatusMonitor` + +`false` + +Will monitor connections to determine if they are blocked. + +`name` + +`null` + +The name of the **`TransportConnector`** instance. + +`rebalanceClusterClients` + +`false` + +Will automatically re-balance clients across the cluster on changes of topology. + +`updateClusterClients` + +`false` + +If enabled, will update client connections (if they use the **`failover://`** transport) of changes to the broker cluster. + +`updateClusterClientsOnRemove` + +`false` + +Will update clients if a broker is removed from the cluster. + +`updateClusterFilter` + +`null` + +Comma separated list of regular expressions. Brokers with a name matching the pattern will be included for client updates. + +`uri` + +`null` + +The bind address for the transport. + +**Note**: properties in red are version 5.10 (and higher) options only. + +Example configuration: + + +   + +   +     +   + +   + + diff --git a/configuring-version-5-transports.md b/configuring-version-5-transports.md new file mode 100644 index 0000000..00fd28d --- /dev/null +++ b/configuring-version-5-transports.md @@ -0,0 +1,249 @@ +Apache ActiveMQ ™ -- Configuring Version 5 Transports + +[Using ActiveMQ 5](using-activemq-5.html) > [Configuring Version 5 Transports](configuring-version-5-transports.html) + + +Transport configuration options +------------------------------- + +One of the first kinds of URI you are likely to use is a transport URI to connect to a broker using a kind of transport. Generally TCP or VM are the first transports you'll use. + +Be careful about whitespace + +All of the following URI configurations are based on the java.net.URI class which does not allow whitespace to be used. So if you are using **`failover:`** or **`static:`** URIs, do not put any whitespace around the **`','`** symbol. + +### The AUTO Transport + +Starting with 5.13.0 ActiveMQ has support for automatic wire protocol detection over TCP, SSL, NIO, and NIO SSL.  OpenWire, STOMP, AMQP, and MQTT are supported.  For details see the [AUTO](auto.html) Transport Reference. + +### The VM Transport + +The VM transport allows clients to connect to each other inside the VM without the overhead of the network communication. The connection used is not that of a socket connection but instead uses direct method invocations to enable a high performance embedded messaging system. + +The first client to use the VM connection will boot an embedded broker. Subsequent connections will attach that the same broker. Once all VM connections to the broker have been closed, the embedded broker will automatically shutdown. + +For more information see the [VM Transport Reference](vm-transport-reference.html) + +### The AMQP Transport + +As of 5.8.0 ActiveMQ has support for AMQP. For details see the [AMQP](amqp.html) Transport Reference. + +### The MQTT Transport + +Starting with 5.6.0 ActiveMQ also supports [MQTT](http://mqtt.org/). Its a light weight publish/subscribe messaging transport. See the [MQTT](mqtt.html) Transport Reference for details. + +### The TCP Transport + +The TCP transport allows clients to connect a remote ActiveMQ using a a TCP socket. + +For more information see the [TCP Transport Reference](tcp-transport-reference.html) + +### The NIO Transport + +Same as the TCP transport, except that the [New I/O (NIO)](http://en.wikipedia.org/wiki/New_I/O) package is used, which may provide better performance. The Java NIO package should not be confused with IBM's [AIO4J](http://java.sys-con.com/read/46658.htm) package. + +To switch from TCP to NIO, simply change the scheme portion of the URI. Here's an example as defined within a broker's XML configuration file. + + + ... + + + + ... + + +Trying to use nio transport url on the client side will instantiate the regular TCP transport. For more information see the [NIO Transport Reference](nio-transport-reference.html) + +### The SSL Transport + +This allows you to talk over TCP using SSL. For more information see the [SSL Transport Reference](ssl-transport-reference.html) + +### The NIO SSL Transport + +Availability + +Available since 5.6 + +Implementing SSL transport over NIO. This allows you to connect large number of SSL clients to a single broker instance. It's server side transport-option only + + + ... + + + + ... + + +Trying to use `nio+ssl` transport url on the client side will instantiate the regular SSL transport. + +### The Peer Transport + +The Peer transport provides a peer-to-peer network with ActiveMQ. What actually happens is the peer transport uses the VM transport to create and connect to a local embedded broker but which configures the embedded broker to establish network connections to other peer embedded brokers. + +For more information see the [Peer Transport Reference](peer-transport-reference.html) + +### The UDP Transport + +This allows you to talk over UDP. + +For more information see the [UDP Transport Reference](udp-transport-reference.html) + +### The Multicast Transport + +This allows you to talk over Multicast. + +For more information see the [Multicast Transport Reference](multicast-transport-reference.html) + +### The HTTP and HTTPS Transport + +This allows the ActiveMQ client and broker to tunnel over HTTP. If the client is not JMS you might want to look at [REST](rest.html) or [Ajax](ajax.html) support instead. + +For more information see the [HTTP and HTTPs Transports Reference](http-and-https-transports-reference.html) + +### The WebSockets Transport + +This transport uses the new HTML5 WebSockets to exchange messages with the broker. For more information see the [WebSockets](websockets.html) Transport Reference + +### The Stomp Transport + +A plain text transport that can be used with many languages. See [Stomp](stomp.html) for more details. + +General Purpose URIs +-------------------- + +You can configure other features via the URI syntax as follows... + +### Connection Configuration URI + +Any Apache ActiveMQ JMS connection can be configured using the URL or explicitly setting properties on the [ActiveMQConnection](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html) or [ActiveMQConnectionFactory](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) objects themselves. + +For more information see [Connection Configuration URI](connection-configuration-uri.html) + +### Destination Options + +You can configure various consumer related options using [Destination Options](destination-options.html) which allow you to configure destinations using URI syntax. + +### Broker Configuration URI + +You can use a [Broker Configuration URI](broker-configuration-uri.html) to configure an embedded broker, either using the BrokerFactory helper class from Java or using the activemq shell script. For more details see [How to Run a Broker](run-broker.html) + +### Configuring Wire Formats + +Any transport which involves marshalling messages onto some kind of network transport like TCP or UDP will typically use the [OpenWire](openwire.html) format. This is configurable to customize how things appear on the wire. + +For more information see [Configuring Wire Formats](configuring-wire-formats.html) + +High Level Protocol URIs +------------------------ + +The following higher level protocols can be configured via URI + +### The Failover Transport + +The Failover transport layers reconnect logic on top of any of the other transports. This is what used to be the Reliable transport in ActiveMQ 3. Its configuration syntax allows you to specify any number of composite URIs. The Failover transport randomly chooses one of the composite URIs and attempts to establish a connection to it. If it does not succeed or if it subsequently fails, a new connection is established to one of the other URIs in the list. + +For more information see the [Failover Transport Reference](failover-transport-reference.html) + +### The Fanout Transport + +The Fanout transport layers reconnect and replicate logic on top of any of the other transports. It is used replicate commands to multiple brokers. + +For more information see the [Fanout Transport Reference](fanout-transport-reference.html) + +Using Discovery +--------------- + +Often when using transports like TCP you want to use [Discovery](discovery.html) to locate the available brokers. This is different from using, say, [Multicast](multicast-transport-reference.html) \- as the actual main communication is over TCP but multicast is purely used to discover the location of brokers. + +### The Discovery Transport + +The Discovery transport works just like the reliable transport, except that it uses a discovery agent to locate the list of URIs to connect to. + +For more information see the [Discovery Transport Reference](discovery-transport-reference.html) + +### The ZeroConf Transport + +The ZeroConf transport provides [Discovery](discovery.html) and it works like the [Discovery Transport](discovery-transport-reference.html) but rather than using our own multicast based discovery mechanism (which allows you to configure the exact multicast address and port, etc.), the [ZeroConf](zeroconf.html) transport is used instead. + +For more information see the [ZeroConf Transport Reference](zeroconf-transport-reference.html) + +### Server side options + +There are a number of options that can be used for changing behavior on the server for the **`TransportConnector`** in the ActiveMQ broker configuration. These are: + +property name + +default + +description + +`allowLinkStealing` + +`false` + +This is enabled for default for MQTT transport. + +Link Stealing is where the last of two or more connections with the same id (clientID for JMS) is deemed the valid connection and the older one is closed by the broker. + +`discoveryURI` + +`null` + +If set, the multicast discovery address for client connections to find the broker. + +`enableStatusMonitor` + +`false` + +Will monitor connections to determine if they are blocked. + +`name` + +`null` + +The name of the **`TransportConnector`** instance. + +`rebalanceClusterClients` + +`false` + +Will automatically re-balance clients across the cluster on changes of topology. + +`updateClusterClients` + +`false` + +If enabled, will update client connections (if they use the **`failover://`** transport) of changes to the broker cluster. + +`updateClusterClientsOnRemove` + +`false` + +Will update clients if a broker is removed from the cluster. + +`updateClusterFilter` + +`null` + +Comma separated list of regular expressions. Brokers with a name matching the pattern will be included for client updates. + +`uri` + +`null` + +The bind address for the transport. + +**Note**: properties in red are version 5.10 (and higher) options only. + +Example configuration: + + +   + +   +     +   + +   + + diff --git a/configuring-wire-formats.md b/configuring-wire-formats.md new file mode 100644 index 0000000..30509c7 --- /dev/null +++ b/configuring-wire-formats.md @@ -0,0 +1,90 @@ +Apache ActiveMQ ™ -- Configuring Wire Formats + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Configuring Wire Formats](configuring-wire-formats.html) + + +### The OpenWire Wire Format + +OpenWire is the default wire format used by ActiveMQ.  It provides a highly efficient binary format for high speed messaging.  OpenWire options can be configured on a JMS client's connection URI or on a broker's transport bind URI. + +Option + +Default + +Description + +`cacheEnabled` + +`true` + +Should commonly repeated values be cached so that less marshaling occurs? + +`cacheSize` + +`1024` + +When **`cacheEnabled=true`** then this parameter is used to specify the number of values to be cached. + +`maxInactivityDuration` + +`30000` + +The maximum [inactivity](activemq-inactivitymonitor.html) duration (before which the socket is considered dead) in milliseconds. On some platforms it can take a long time for a socket to die. Therefore allow the broker to kill connections when they have been inactive for the configured period of time. Used by some transports to enable a keep alive heart beat feature. + +Inactivity monitoring is disabled when set to a value **`<= 0`**. + +`maxInactivityDurationInitalDelay` + +`10000` + +The initial delay before starting [inactivity](activemq-inactivitymonitor.html) checks. + +Yes, the word **`'Inital'`** is supposed to be misspelled like that. + +`maxFrameSize` + +`MAX_LONG` + +Maximum allowed frame size. Can help help prevent OOM DOS attacks. + +`sizePrefixDisabled` + +`false` + +Should the size of the packet be prefixed before each packet is marshaled? + +`stackTraceEnabled` + +`true` + +Should the stack trace of exception that occur on the broker be sent to the client? + +`tcpNoDelayEnabled` + +`true` + +Does not affect the wire format, but provides a hint to the peer that **`TCP_NODELAY`** should be enabled on the communications Socket. + +`tightEncodingEnabled` + +`true` + +Should wire size be optimized over CPU usage? + +Use the Correct Prefix! + +Wire format options must have the prefix **`wireFormat.`** to take effect, e.g., **`wireFormat.maxInactivityDuration=10000`**. Options missing this prefix will be ignored. + +#### Example Configurations + +**Java:** + +ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616?wireFormat.cacheEnabled=false&wireFormat.tightEncodingEnabled=false"); + +**Spring:** + + + + + + diff --git a/configuring.md b/configuring.md new file mode 100644 index 0000000..234e67d --- /dev/null +++ b/configuring.md @@ -0,0 +1,485 @@ +Apache ActiveMQ ™ -- Configuring + +[Index](index.html) > [Configuring](configuring.html) + +Configuring ActiveMQ-CPP +------------------------ + +The configuration of ActiveMQ is so slick, we decided to take a similar approach with ActiveMQ-CPP. All configuration is achieved via URI-encoded parameters, either on the connection or destinations. Through the URIs, you can configure virtually every facet of your ActiveMQ-CPP client. The tables below show the comprehensive set of parameters. + +### **Connection URI Parameters** + +#####  Example Configuration + +This first example uses a standard TCP based transport. + +cf = new ActiveMQConnectionFactory( + "tcp://localhost:61616?wireFormat=openwire&wireFormat.tightEncodingEnabled=true"); + +For a more reliable connection use the Failover Transport and configure in alternate locations to connect to. + +cf = new ActiveMQConnectionFactory( + "failover://(tcp://localhost:61616,tcp://anotherhost:61616)?connection.useAsyncSend=true"); + +### Protocol Options + +Option Name + +Description + +tcp + +Uses TCP/IP Sockets to connect to the broker. + +ssl + +Uses OpenSSL to secure TCP/IP sockets. **(Since v3.2.0)** + +failover + +Composite of other Transports, when a Transport connection fails, the Failover Transport connects to the next Transport in the list or retries the connection to the failed broker URI. + +#### **Socket Options** + +Option Name + +Default + +Description + +inputBufferSize + +10000 + +The number of bytes in the buffered input stream's buffer + +outputBufferSize + +10000 + +The number of bytes in the buffered output stream's buffer + +soLinger + +0 + +Socket SOLinger value + +soKeepAlive + +false + +Socket SOKeepAlive value + +soReceiveBufferSize + +-1 + +Socket receive buffer. If -1, use OS default. + +soSendBufferSize + +-1 + +Socket send buffer. If -1, use OS default. + +soConnectTimeout + +-1 + +Socket connection timeout in microseconds. If -1, use OS default. **(Since ActiveMQ-CPP 2.2)** + +tcpNoDelay + +true + +Sets the Socket level TCP_NODELAY option + +#### **General Transport Options** + +Option Name + +Default + +Description + +transport.commandTracingEnabled + +false + +If true, enables tracing of incoming and outgoing transport commands + +transport.tcpTracingEnabled + +false + +If true, enables tracing of raw network IO (in hex) + +transport.useAsyncSend + +false + +If true, enables asynchronous sending of messages. ***WARNING: Using this could result in a loss of data if messages are pending and the client is shut down or crashes.**\* **(Deprecated Since ActiveMQ-CPP 2.2.2 has no effect as of this release, use connection.useAsyncSend instead)** + +transport.ResponseCorrelator.maxResponseWaitTime + +3000 + +Milliseconds to wait for responses from the broker. **(Removed as of ActiveMQ-CPP 2.2.1, use connection.sendTimeout instead)** + +#### **Failover Transport Options** + +Option Name + +Default + +Description + +initialReconnectDelay + +10 + +How long to wait if the initial attempt to connect to the broker fails. + +maxReconnectDelay + +30000 + +Maximum time that the transport waits before trying to connect to the Broker again. + +useExponentialBackOff + +true + +Should the delay between connection attempt grow on each try up to the max reconnect delay + +maxReconnectAttempts + +0 + +Max number of times to attempt to reconnect before failing the transport, default is forever (0). + +startupMaxReconnectAttempts + +0 + +Max number of times to attempt to reconnect before failing the transport, default is forever (0). Only applies during the initial attempt to connect, after one successful connection the _maxReconnectAttempts_ flag applies from then on. **(Since v3.2.0)** + +randomize + +true + +Should the transport attempt to connect to the listed Broker URI's in Random order. + +backup + +false + +Should the Failover transport maintain hot backups. + +backupPoolSize + +1 + +If enabled, how many hot backup connections are made. + +timeout + +-1 + +If a send is blocked waiting on a failed connection to reconnect how long should it wait before failing the send, default is forever (-1). + +#### **Transaction Options** + +Option Name + +Default + +Description + +transaction.maxRedeliveryCount + +5 + +Maximum number of redelivery attempts. **(Removed in v3.2.0, see instead Connection Redelivery Policy)** + +#### **Connection Options** + +Option Name + +Default + +Description + +connection.sendTimeout + +0 + +Time to wait on Message Sends for a Response, default value of zero indicates to wait forever. Waiting forever allows the broker to have flow control over messages coming from this client if it is a fast producer or there is no consumer such that the broker would run out of memory if it did not slow down the producer. **Does not affect Stomp clients as the sends are ack'd by the broker.** **(Since ActiveMQ-CPP 2.2.1)** + +connection.producerWindowSize + +0 + +The ProducerWindowSize is the maximum number of bytes in memory that a producer will transmit to a broker before waiting for acknowledgement messages from the broker that it has accepted the previously sent messages. In other words, this how you configure the producer flow control window that is used for async sends where the client is responsible for managing memory usage. The default value of 0 means no flow control at the client. See also [Producer Flow Control](http://activemq.apache.org/producer-flow-control.html). **This option only affects Openwire clients as Stomp does not have a means of notifying the clients of accepted messages asynchronously**. **(Since ActiveMQ-CPP 2.2.2)** + +connnection.closeTimeout + +15000 + +The amount of time to wait for a response from the broker when shutting down. Normally we want a response to indicate that the client has been disconnected cleanly, but we don't want to wait forever, however if you do, set this to zero. **(Since ActiveMQ-CPP 2.2.1)** + +connection.useAsyncSend + +false + +Forces the use of Async Sends which adds a massive performance boost; but means that the send() method will return immediately whether the message has been sent or not which could lead to message loss. Normally only Persistant messages that are not part of a transaction are sent synchronously, using this options forces those messages to also be async. **(****Since ActiveMQ-CPP 2.2.2****)** + +connection.alwaysSyncSend + +false + +Forces all messages that are sent to be sent synchronously overriding any usage of the useAsyncSend flag. This can reduce performance in some cases since the only messages we normally send synchronously are Persistent messages not sent in a transaction. This options guarantees that no send will return until the broker has acknowledge receipt of the message. **(****Since ActiveMQ-CPP 2.2.2****)** + +connection.useCompression + +false + +Should outgoing messages have their body portion compressed using the ZLib compression algorithms **(Since v3.2.0)** + +connection.dispatchAsync + +true + +Should the broker [dispatch messages asynchronously](http://activemq.apache.org/consumer-dispatch-async.html) to the consumer, this causes all consumers from this Connection to use this setting. **(Since v3.2.0)** + +##### **Connection Policy Options** + +As of version 3.2.0 the Connection object supports policies that control various aspects its behaviour and of the Consumer objects it creates. + +###### Prefetch Policy + +Option Name + +Default + +Description + +cms.PrefetchPolicy.durableTopicPrefetch + +100 + +Max prefetch for Durable Topics + +cms.PrefetchPolicy.queueBrowserPrefetch + +500 + +Max prefetch for a Queue Browser + +cms.PrefetchPolicy.queuePrefetch + +1000 + +Max prefetch for a Queue or Temp Queue + +cms.PrefetchPolicy.topicPrefetch + +65535 + +Max prefetch for a Topic or Temp Topic + +###### Redelivery Policy + +Option Name + +Default + +Description + +cms.RedeliveryPolicy.backOffMultiplier + +5.0 + +Used to extend the redelivery window when the _useExponentialBackOff option is enabled. + +cms.RedeliveryPolicy.collisionAvoidancePercent + +15 + +Percentage of randomness to add to redelivery backoff to keep multiple consumers in a rollback from redelivering at the same time. + +cms.RedeliveryPolicy.initialRedeliveryDelay + +1000 + +Amount of time to wait before starting redeliveries, in milliseconds. + +cms.RedeliveryPolicy.maximumRedeliveries + +6 + +Maximum number of time to attempt a redelivery before giving up and NAck'ing the message. + +cms.RedeliveryPolicy.useCollisionAvoidance + +false + +Should the Random avoidance percentage be added into the redelivery delay. + +cms.RedeliveryPolicy.useExponentialBackOff + +false + +Should redeliveries be slowed on each cycle. + +#### **Wire Format Protocol Options** + +Option Name + +Default + +Description + +wireFormat + +openwire + +Selects the wire format to use. Out of the box, can be either stomp or openwire. + +wireFormat.stackTraceEnabled + +false + +Should the stack trace of exception that occur on the broker be sent to the client? Only used by openwire protocol. + +wireFormat.cacheEnabled + +false + +Should commonly repeated values be cached so that less marshalling occurs? Only used by openwire protocol. + +wireFormat.tcpNoDelayEnabled + +true + +Does not affect the wire format, but provides a hint to the peer that TCP nodelay should be enabled on the communications Socket. Only used by openwire protocol. + +wireFormat.sizePrefixDisabled + +false + +Should serialized messages include a payload length prefix? Only used by openwire protocol. + +wireFormat.tightEncodingEnabled + +false + +Should wire size be optimized over CPU usage? Only used by the openwire protocol. + +wireFormat.maxInactivityDuration + +30000 + +The maximum inactivity duration (before which the socket is considered dead) in milliseconds. On some platforms it can take a long time for a socket to appear to die, so we allow the broker to kill connections if they are inactive for a period of time. Use by some transports to enable a keep alive heart beat feature. Set to a value <= 0 to disable inactivity monitoring. + +maxInactivityDurationInitalDelay + +10000 + +The initial delay in starting the maximum inactivity checks (and, yes, the word 'Inital' is supposed to be misspelled like that) + +### **Destination URI Parameters** + +##### Example Configuration + +d = session->createTopic("com.foo?consumer.prefetchSize=2000&consumer.noLocal=true"); + +#### **General Options** + +Option Name + +Default + +Description + +consumer.prefetchSize + +1000 + +The number of message the consumer will [prefetch](http://activemq.apache.org/what-is-the-prefetch-limit-for.html). + +consumer.maximumPendingMessageLimit + +0 + +Use to control if messages are dropped if a [slow consumer](http://activemq.apache.org/slow-consumer-handling.html) situation exists. + +consumer.noLocal + +false + +Same as the noLocal flag on a Topic consumer. Exposed here so that it can be used with a queue. + +consumer.dispatchAsync + +false + +Should the broker [dispatch messages asynchronously](http://activemq.apache.org/consumer-dispatch-async.html) to the consumer. + +consumer.retroactive + +false + +Is this a [Retroactive Consumer](http://activemq.apache.org/retroactive-consumer.html). + +consumer.selector + +null + +JMS Selector used with the consumer. + +consumer.exclusive + +false + +Is this an [Exclusive Consumer](http://activemq.apache.org/exclusive-consumer.html). + +consumer.priority + +0 + +Allows you to configure a [Consumer Priority](http://activemq.apache.org/consumer-priority.html). + +#### **OpenWire-only Options** + +Option Name + +Default + +Description + +consumer.browser + +false + +consumer.networkSubscription + +false + +consumer.optimizedAcknowledge + +false + +Enables an optimised acknowledgement mode where messages are acknowledged in batches rather than individually. Alternatively, you could use Session.DUPS\_OK\_ACKNOWLEDGE acknowledgement mode for the consumers which can often be faster. **WARNING** enabling this issue could cause some issues with auto-acknowledgement on reconnection + +consumer.noRangeAcks + +false + +consumer.retroactive + +false + +Sets whether or not retroactive consumers are enabled. Retroactive consumers allow non-durable topic subscribers to receive old messages that were published before the non-durable subscriber started. + diff --git a/connection-configuration-uri.md b/connection-configuration-uri.md new file mode 100644 index 0000000..38c4c2d --- /dev/null +++ b/connection-configuration-uri.md @@ -0,0 +1,200 @@ +Apache ActiveMQ ™ -- Connection Configuration URI + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Connection Configuration URI](connection-configuration-uri.html) + + +Connection Configuration URI +---------------------------- + +An Apache ActiveMQ connection can be configured by explicitly setting properties on the [ActiveMQConnection](http://activemq.apache.org/maven/apidocs/org/apache/activemq/ActiveMQConnection.html) or [ActiveMQConnectionFactory](http://activemq.apache.org/maven/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) objects themselves via the bean properties or using the following URI syntax. + +### Example + +You set the property called **`jms.$PROPERTY`** on a regular connection URI. For example you can set the **`brokerURL`** on your [ActiveMQConnectionFactory](http://activemq.apache.org/maven/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) to the following value to enable [Async Sends](async-sends.html) + +tcp://localhost:61616?jms.useAsyncSend=true + +### Connection Options + +Use the Correct Prefix! + +The following options should be prefixed with **`jms.`** when used on a **`brokerURL`** or a broker's transport connector. + +Option Name + +Default Value + +Description + +`alwaysSessionAsync` + +`true` + +When **`true`** a separate thread is used for dispatching messages for each Session in the Connection. + +A separate thread is always used when there's more than one session, or the session isn't in **`Session.AUTO_ACKNOWLEDGE`** or **`Session.DUPS_OK_ACKNOWLEDGE`** mode. + +`alwaysSyncSend` + +`false` + +When **`true`** a **`MessageProducer`** will always use Sync sends when sending a Message even if it is not required for the Delivery Mode. + +`auditDepth` + +`2048` + +The size of the message window that will be audited for duplicates and out of order messages. + +`auditMaximumProducerNumber` + +`64` + +Maximum number of producers that will be audited. + +`checkForDuplicates` + +`true` + +When **`true`** the consumer will check for duplicate messages and properly handle the message to make sure that it is not processed twice inadvertently. + +`clientID` + +`null` + +Sets the JMS clientID to use for the connection. + +`closeTimeout` + +`15000` + +Sets the timeout, in milliseconds, before a close is considered complete. Normally a **`close()`** on a connection waits for confirmation from the broker. + +This allows the close operation to timeout preventing the client from hanging when no broker is available. + +`consumerExpiryCheckEnabled` + +`true` + +Controls whether message expiration checking is done in each **`MessageConsumer`** prior to dispatching a message. Disabling this check can lead to consumption of expired messages. (since 5.11). + +`copyMessageOnSend` + +`true` + +Should a JMS message be copied to a new JMS Message object as part of the **`send()`** method in JMS. This is enabled by default to be compliant with the JMS specification. + +For a performance boost set to **`false`** if you do not mutate JMS messages after they are sent. + +`disableTimeStampsByDefault` + +`false` + +Sets whether or not timestamps on messages should be disabled or not. + +For a small performance boost set to **`false`**. + +`dispatchAsync` + +`false` + +Should the broker [dispatch messages asynchronously](consumer-dispatch-async.html) to the consumer? + +`nestedMapAndListEnabled` + +`true` + +Controls whether [Structured Message Properties and MapMessages](structured-message-properties-and-mapmessages.html) are supported so that Message properties and **`MapMessage`** entries can contain nested Map and List objects. Available from version 4.1. + +`objectMessageSerializationDefered` + +`false` + +When an object is set on an **`ObjectMessage`** the JMS spec requires the object be serialized by that set method. + +When **`true`** the object will not be serialized. The object may subsequently be serialized if the message needs to be sent over a socket or stored to disk. + +`optimizeAcknowledge` + +`false` + +Enables an optimized acknowledgement mode where messages are acknowledged in batches rather than individually. Alternatively, you could use **`Session.DUPS_OK_ACKNOWLEDGE`** acknowledgement mode for the consumers which can often be faster. + +**WARNING**: enabling this issue could cause some issues with auto-acknowledgement on reconnection. + +`optimizeAcknowledgeTimeOut` + +`300` + +If > 0, specifies the max time, in milliseconds, between batch acknowledgements when **`optimizeAcknowledge`** is enabled. (since 5.6). + +`optimizedAckScheduledAckInterval` + +`0` + +If > 0, specifies a time interval upon which all the outstanding ACKs are delivered when optimized acknowledge is used so that a long running consumer that doesn't receive any more messages will eventually ACK the last few un-ACK'ed messages (since 5.7). + +`optimizedMessageDispatch` + +`true` + +If **`true`** a larger prefetch limit is used - only applicable for durable topic subscribers. + +`useAsyncSend` + +`false` + +Forces the use of [Async Sends](async-sends.html) which adds a massive performance boost; but means that the **`send()`** method will return immediately whether the message has been sent or not which could lead to message loss. + +`useCompression` + +`false` + +Enables the use of compression on the message's body. + +`useRetroactiveConsumer` + +`false` + +Sets whether or not retroactive consumers are enabled. Retroactive consumers allow non-durable topic subscribers to receive old messages that were published before the non-durable subscriber started. + +`warnAboutUnstartedConnectionTimeout` + +`500` + +The timeout, in milliseconds, from the time of connection creation to when a warning is generated if the connection is not properly started via [Connection.start()](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Connection.html#start()) and a message is received by a consumer. It is a very common gotcha to forget to [start the connection and then wonder why no messages are delivered](i-am-not-receiving-any-messages-what-is-wrong.html) so this option makes the default case to create a warning if the user forgets. + +To disable the warning just set the value to **`< 0`**. + +### Nested Options + +You can also configure nested objects on the connection object using the given prefixes. See the javadoc for a breakdown of each individual property. + +Option Name + +Object configured + +See Also + +`jms.blobTransferPolicy.*` + +[BlobTransferPolicy](http://activemq.apache.org/maven/apidocs/org/apache/activemq/blob/BlobTransferPolicy.html) + +[Blob Message](#) + +`jms.prefetchPolicy.*` + +[ActiveMQPrefetchPolicy](http://http//activemq.apache.org/maven/apidocs/org/apache/activemq/ActiveMQPrefetchPolicy.html) + +[What is the Prefetch Limit For?](what-is-the-prefetch-limit-for.html) + +`jms.redeliveryPolicy.*` + +[RedeliveryPolicy](http://activemq.apache.org/maven/apidocs/org/apache/activemq/RedeliveryPolicy.html) + +[Redelivery Policy](redelivery-policy.html) + +For example you could set + +tcp://localhost:61616?jms.prefetchPolicy.all=100&jms.redeliveryPolicy.maximumRedeliveries=5 + diff --git a/connection-factory-properties.md b/connection-factory-properties.md new file mode 100644 index 0000000..b97cfe6 --- /dev/null +++ b/connection-factory-properties.md @@ -0,0 +1,65 @@ +Apache ActiveMQ ™ -- Connection Factory Properties + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Resource Adapter](resource-adapter.html) > [Connection Factory Properties](connection-factory-properties.html) + + +The 'outbound' Connection Factory objects used to send messages by default use the connection configuration properties of the Resource Adapter deployment, but those properties can be overridden per connection factory. + +The Connection Factory properties that can be configured are: + +Property Name + +Required + +Default Value + +ServerUrl + +no + +set in resource adapter + +UserName + +no + +set in resource adapter + +Clientid + +no + +set in resource adapter + +Password + +no + +set in resource adapter + +UseInboundSession + +no + +set in resource adapter + +#### ServerUrl + +The URL to the ActiveMQ server that you want this connection to connect to. If using an embedded broker, this value should be 'vm://localhost'. + +#### UserName + +The default user name that will be used to establish connections to the ActiveMQ server. + +#### Password + +The default password that will be used to log the default user into the ActiveMQ server. + +#### Clientid + +The client id that will be set on the connection that is established to the ActiveMQ server. + +#### UseInboundSession + +Boolean to configure if outbound connections should reuse the inbound connection's session for sending messages. + diff --git a/connectivity.md b/connectivity.md new file mode 100644 index 0000000..7dc29d1 --- /dev/null +++ b/connectivity.md @@ -0,0 +1,45 @@ +Apache ActiveMQ ™ -- Connectivity + +[Connectivity](connectivity.html) + + +Apache ActiveMQ is designed to support a large number if [Cross Language Clients](cross-language-clients.html), speak a wide range of [Protocols](protocols.html) and be usable in a wide variety of [Containers](containers.html) in addition to being usable in a stand alone Java SE platform. + +* [Ajax](ajax.html) +* [Containers](containers.html) + * [Axis and CXF Support](axis-and-cxf-support.html) + * [BlazeDS](blazeds.html) + * [Geronimo](geronimo.html) + * [Integrating Apache ActiveMQ with Glassfish](integrating-apache-activemq-with-glassfish.html) + * [Integrating Apache ActiveMQ with JBoss](integrating-apache-activemq-with-jboss.html) + * [J2EE](j2ee.html) + * [JBoss Integration](jboss-integration.html) + * [JCA Container](jca-container.html) + * [JNDI Support](jndi-support.html) + * [Old OSGi Integration](old-osgi-integration.html) + * [OSGi Integration](osgi-integration.html) + * [Resource Adapter](resource-adapter.html) + * [SJSAS with GenericJMSRA](sjsas-with-genericjmsra.html) + * [Spring Support](spring-support.html) + * [Sun JNDI](sun-jndi.html) + * [Tomcat](tomcat.html) + * [WebLogic Integration](weblogic-integration.html) + * [zOS](zos.html) +* [Cross Language Clients](cross-language-clients.html) + * [ActiveMQ C++ Clients](activemq-c-clients.html) + * [C Integration](c-integration.html) + * [Delphi and FreePascal](delphi-and-freepascal.html) +* [JMS to JMS Bridge](jms-to-jms-bridge.html) +* [Protocols](protocols.html) + * [AMQP](amqp.html) + * [AUTO](auto.html) + * [MQTT](mqtt.html) + * [OpenWire](openwire.html) + * [REST](rest.html) + * [RSS and Atom](rss-and-atom.html) + * [Stomp](stomp.html) + * [WSIF](wsif.html) + * [WS Notification](ws-notification.html) + * [XMPP](xmpp.html) +* [WebSockets](websockets.html) + diff --git a/connectors.md b/connectors.md new file mode 100644 index 0000000..41e2595 --- /dev/null +++ b/connectors.md @@ -0,0 +1,94 @@ + Connectors · ActiveMQ Artemis Documentation + +* [Introduction](./) +* [Configuration](configuration.html) +* [Connectors](connectors.html) +* [Destinations](destinations.html) +* [Authentication](authentication.html) +* [Authorization](authorization.html) +* [SSL](ssl.html) +* [Legal Notice](notice.html) + +* [Published with GitBook](https://www.gitbook.com) + +[Connectors](.) +=============== + +Connectors +========== + +After broker is started, you'll want to connect your clients to it. So, let's start with comparing ActiveMQ and Artemis configurations in area of client connectors. In ActiveMQ terminology, they are called _transport connectors_, and the default configuration looks something like this (in `conf/activemq.xml`). + + + + + + + + + + +In Artemis, client connectors are called _acceptors_ and they are configured in `etc/broker.xml` like this + + + tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE + tcp://0.0.0.0:5672?protocols=AMQP + tcp://0.0.0.0:61613?protocols=STOMP + tcp://0.0.0.0:5445?protocols=HORNETQ,STOMP + tcp://0.0.0.0:1883?protocols=MQTT + + + +As you can notice the syntax is very similar, but there are still some differences that we need to understand. First, as we said earlier, there's no notion of blocking and non-blocking (nio) transport in Artemis, so you should treat everything as non-blocking. Also, in Artemis the low level transport is distinct from the actual messaging protocol (like AMQP or MQTT) used on top of it. One acceptor can handle multiple messaging protocols on the same port. By default, all protocols are accepted on the single port, but you can restrict this using the `protocols=X,Y` uri attribute pattern as shown in the example above. + +Besides _tcp_ network protocol, Artemis support _InVm_ and _Web Socket_ transports. The _InVm_ transport is similar to ActiveMQ's _vm_ transport and is used to connect clients to the embedded broker. The difference is that you can use any messaging protocol on top of _InVm_ transport in Artemis, while _vm_ transport in ActiveMQ is tied to OpenWire. + +One of the advantages of using Netty for IO layer, is that Web Sockets are supported out of the box. So, there's no need for the separate _ws_ transport like in ActiveMQ, the _tcp_ (Netty) acceptor in Artemis will detect Web Socket clients and handle them accordingly. + +To summarize this topic, here's a table that shows you how to migrate your ActiveMQ transport connectors to the Artemis acceptors + +ActiveMQ + +Artemis (options in the acceptor URL) + +OpenWire + +protocols=OpenWire (version 10+) + +NIO + +- + +AMQP + +protocols=AMQP + +STOMP + +protocols=STOMP + +VM (OpenWire only) + +InVM (all protocols, peer to tcp) + +HTTP (OpenWire-based) + +- + +MQTT + +protocols=MQTT + +WebSocket (STOMP and MQTT) + +handled by tcp (all protocols) + +results matching "" +=================== + +No results matching "" +====================== + +[](configuration.html)[](destinations.html) + +var gitbook = gitbook || \[\]; gitbook.push(function() { gitbook.page.hasChanged({"page":{"title":"Connectors","level":"1.3","depth":1,"next":{"title":"Destinations","level":"1.4","depth":1,"path":"destinations.md","ref":"destinations.md","articles":\[\]},"previous":{"title":"Configuration","level":"1.2","depth":1,"path":"configuration.md","ref":"configuration.md","articles":\[\]},"dir":"ltr"},"config":{"plugins":\[\],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":\["facebook","google","twitter","weibo","instapaper"\]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"github":"apache/activemq-artemis","theme":"default","githubHost":"https://github.com/","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"ActiveMQ Artemis Documentation","links":{"home":"http://activemq.apache.org/","issues":"http://activemq.apache.org/","contribute":"http://activemq.apache.org/contributing.html"},"gitbook":"3.x.x","description":"ActiveMQ Artemis Migration Guide"},"file":{"path":"connectors.md","mtime":"2017-03-10T10:03:20.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-03-10T13:48:00.771Z"},"basePath":".","book":{"language":""}}); }); \ No newline at end of file diff --git a/consumer-dispatch-async.md b/consumer-dispatch-async.md new file mode 100644 index 0000000..a06567c --- /dev/null +++ b/consumer-dispatch-async.md @@ -0,0 +1,35 @@ +Apache ActiveMQ ™ -- Consumer Dispatch Async + +[Features](features.html) > [Consumer Features](consumer-features.html) > [Consumer Dispatch Async](consumer-dispatch-async.html) + + +Overview +-------- + +From ActiveMQ v4: the choice of a broker performing synchronous or asynchronous dispatch to a consumer has become more configurable. It is now configured as a default value on the [connection URI, Connection and ConnectionFactory](connection-configuration-uri.html) as well as with being customizable on a per consumer basis via the [Destination Options](destination-options.html) instead previously just being a transport server setting. + +This makes more sense since you want to do asynchronous message delivery to slower consumers, but synchronous message delivery for faster consumers (to avoid the synchronization and context switching costs of adding another SEDA queue). The downside to using synchronous message delivery is that the producer is more likely to block if there is a slow consumer that he is dispatching messages to. + +The default setting is **`dispatchAsync=true`** which is the best setting for high performance. If you want to deal better with slow consumers you will want to enable this setting. If you want better throughput and the chances of having a slow consumer are low, you may want to change this to **`dispatchAsync=false`**. + +### Configuring Async Dispatch at the ConnectionFactory Level + +((ActiveMQConnectionFactory)connectionFactory).setDispatchAsync(false); + +### Configuring Dispatch Async at the Connection Level + +Configuring the **`dispatchAsync`** setting at this level overrides the settings at the connection factory level. + +### Configuring Dispatch Async at the Consumer Level using the Destination URI + +Configuring the **`dispatchAsync`** using [Destination Options](destination-options.html) overrides the settings at the connection and connection factory level. + +queue = new ActiveMQQueue("TEST.QUEUE?consumer.dispatchAsync=false"); +consumer = session.createConsumer(queue); + +### Disabling Async Dispatch on Broker's Transport Connector + +It is possible to disable async dispatch on a specific transport connector via the **`disableAsyncDispatch`** property. Once disabled for this transport, it cannot be enabled by individual clients. + + + diff --git a/consumer-features.md b/consumer-features.md new file mode 100644 index 0000000..8c7d88b --- /dev/null +++ b/consumer-features.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- Consumer Features + +[Features](features.html) > [Consumer Features](consumer-features.html) + + +* [Consumer Dispatch Async](consumer-dispatch-async.html) +* [Consumer Priority](consumer-priority.html) +* [Exclusive Consumer](exclusive-consumer.html) +* [Manage Durable Subscribers](manage-durable-subscribers.html) +* [Message Groups](message-groups.html) +* [Redelivery Policy](redelivery-policy.html) +* [Retroactive Consumer](retroactive-consumer.html) +* [Selectors](selectors.html) +* [Slow Consumer Handling](slow-consumer-handling.html) +* [Subscription Recovery Policy](subscription-recovery-policy.html) + diff --git a/consumer-priority.md b/consumer-priority.md new file mode 100644 index 0000000..4ba8e84 --- /dev/null +++ b/consumer-priority.md @@ -0,0 +1,20 @@ +Apache ActiveMQ ™ -- Consumer Priority + +[Features](features.html) > [Consumer Features](consumer-features.html) > [Consumer Priority](consumer-priority.html) + + +### Background + +As well as having a pluggable dispatch policy e.g. round robin, ActiveMQ also supports consumer priorities. This allows us to weight consumers to optimize network hops. For example, you typically want a broker to send messages to regular JMS consumers rather than to other brokers; there's no need to make unnecessary broker-to-broker hops if there are available consumers. + +### Example + +The priority for a consumer is set using [Destination Options](destination-options.html) as follows: + +queue = new ActiveMQQueue("TEST.QUEUE?consumer.priority=10"); +consumer = session.createConsumer(queue); + +The range of priority values is: **`0`** to **`127`**. The highest priority is **`127`**. The default priority is **`0`**. + +The broker orders a queue's consumers according to their priorities, dispatching messages to the highest priority consumers first. Once a particular consumer's prefetch buffer is full the broker will start dispatching messages to the consumer with the next lowest priority whose prefetch buffer is not full. + diff --git a/containers.md b/containers.md new file mode 100644 index 0000000..fcbfb52 --- /dev/null +++ b/containers.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Containers + +[Connectivity](connectivity.html) > [Containers](containers.html) + + +This page lists the various containers that Apache ActiveMQ works inside + +* [Axis and CXF Support](axis-and-cxf-support.html) +* [BlazeDS](blazeds.html) +* [Geronimo](geronimo.html) +* [Integrating Apache ActiveMQ with Glassfish](integrating-apache-activemq-with-glassfish.html) +* [Integrating Apache ActiveMQ with JBoss](integrating-apache-activemq-with-jboss.html) +* [J2EE](j2ee.html) +* [JBoss Integration](jboss-integration.html) +* [JCA Container](jca-container.html) +* [JNDI Support](jndi-support.html) +* [Old OSGi Integration](old-osgi-integration.html) +* [OSGi Integration](osgi-integration.html) +* [Resource Adapter](resource-adapter.html) +* [SJSAS with GenericJMSRA](sjsas-with-genericjmsra.html) +* [Spring Support](spring-support.html) +* [Sun JNDI](sun-jndi.html) +* [Tomcat](tomcat.html) +* [WebLogic Integration](weblogic-integration.html) +* [zOS](zos.html) + diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..fa550a9 --- /dev/null +++ b/contributing.md @@ -0,0 +1,93 @@ +Apache ActiveMQ ™ -- Contributing + +[Community](community.html) > [Contributing](contributing.html) + + +There are many ways you can help make ActiveMQ a better piece of software - please dive in and help! + +Try surf the documentation - if somethings confusing or not clear, let us know. Download the code & try it out and see what you think. Browse the source code. Got an itch to scratch, want to tune some operation or add some feature? + +Want to do some hacking on ActiveMQ? Try surfing to our [issue tracker](http://issues.apache.org/jira/browse/AMQ) for open issues or features that need to be implemented, take ownership of an issue and try fix it. + +Getting in touch +---------------- + +There are various ways of communicating with the ActiveMQ community. + +* join us on the [Discussion Forums](discussion-forums.html) or subscribe to the [Mailing Lists](mailing-lists.html) and take part in any conversations +* pop by on in [irc](irc.html) and say hi + +* add some comments to the [wiki](navigation.html) + +If you find a bug or problem +---------------------------- + +Please raise a new issue in our [issue tracker](https://issues.apache.org/jira/browse/AMQ) + +If you can create a JUnit test case then your issue is more likely to be resolved quicker. +e.g. take a look at some of the existing [unit tests cases](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tree;f=activemq-unit-tests/src/test;h=185a655c5200ed30fd2964bc236c18c5bde534c4;hb=refs/heads/master) + +Then we can add your issue to the test suite and then we'll know when its really fixed and we can ensure that the problem **stays fixed** in future releases. + +If you want to help out with the documentation +---------------------------------------------- + +If you want to contribute to the ActiveMQ documentation you should first subscribe our [dev@](mailto:dev-subscribe@activemq.apache.org) where ActiveMQ developers interact with each other. If you want edit rights on the ActiveMQ site, create an account in the [ActiveMQ wiki](https://cwiki.apache.org/confluence/display/ACTIVEMQ) and fill in and submit an ICLA to the ASF (see the [Committer Guide](becoming-a-committer.html)). Then ask on the dev@ list to be granted edit rights and an admin will do so fairly quickly. If you want to just contribute the content, please submit the content on the dev@ list or create an issue and attach it there. **All** contributions are highly appreciated. + +Working on the code +------------------- + +Grab the [Source](source.html) from git + +Build the project. + +export MAVEN_OPTS="-Xmx512M -XX:MaxPermSize=128M" +mvn -Dtest=false install + +PS: You might need to build multiple times (if you get a build error) because sometimes maven fails to download all the files. + +Create a project in your IDE. e.g. if you are using Eclipse the following should do the trick. + +mvn eclipse:eclipse + +Then import the projects into your workspace. + +Creating patches +---------------- + +We gladly accept patches if you can find ways to improve, tune or fix ActiveMQ in some way. + +Most IDEs can create nice patches now very easily. e.g. in Eclipse just right click on a file/directory and select Team -> Create Patch. Then just save the patch as a file and then submit it. (You may have to click on Team -> Share... first to enable the Subversion options). + +If you're a command line person try the following to create the patch + +diff -u Main.java.orig Main.java >> patchfile.txt + +or + +git diff Main.java >> patchfile.txt + +Submitting patches +------------------ + +The easiest way to submit a patch is to create a new JIRA issue, attach the patch and tick the ASF license grant check box, tick the Patch Attached button on the issue then fire off an email to the [Mailing Lists](mailing-lists.html) or [Discussion Forums](discussion-forums.html). + +Becoming a commmitter +--------------------- + +Once you've got involved as above, we may well invite you to be a committer. See [Becoming a committer](becoming-a-committer.html) for more details. + +Using the issue tracker +----------------------- + +Before you can raise an issue in the issue tracker you need to register with it. This is quick & painless. + +If you want to have a go at fixing an issue you need to be in the list of activemq-developers on the issue tracker. To join the group, please mail the [dev@activemq.apache.org](mailto:dev@activemq.apache.org) mail list with the email address you used to register with the issue tracker and we'll add you to the group. + +Why not dive in the [issue tracker](https://issues.apache.org/jira/browse/AMQ), and try tackle some of our outstanding issues? + +Becoming a committer +-------------------- + +The first step is contributing to the project; if you want to take that a step forward and become a fellow committer on the project then see the [Committer Guide](becoming-a-committer.html) + diff --git a/copy-of-apache-activemq-board-report-201604-april.md b/copy-of-apache-activemq-board-report-201604-april.md new file mode 100644 index 0000000..afa3279 --- /dev/null +++ b/copy-of-apache-activemq-board-report-201604-april.md @@ -0,0 +1,67 @@ +Apache ActiveMQ ™ -- Copy of Apache ActiveMQ Board Report - 2016.04 (April) + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Index](index.html) > [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) > [Copy of Apache ActiveMQ Board Report - 2016.04 (April)](copy-of-apache-activemq-board-report-201604-april.html) + + +**Description** + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting JMS 1.1, J2EE 1.4, AMQP 1.0. + +**Activity** + +* Apache ActiveMQ Artemis has been working towards adding ActiveMQ 5.x equivalent features and client compatibility improvements: + + * The OpenWire protocol module has been completely refactored, improvements include: + + * Improved message encoding support with increased performance + * Cluster connections can now be configured using ActiveMQ 5.x style URI + + * Equivalent implementations of all ActiveMQ 5.x JAAS modules are now available in Artemis + + * Artemis has initial support for database backed Journal. + + * Various improvements and bug fixes to: + * HA Replication, STOMP protocol module, File Journal Storage. + + +**PMC changes** + +* Currently 20 PMC members + + +**Committer base changes** + +* Currently 56 committers + + +**Releases** + +* **5.13.2 was released on** Fri Mar 04 2016 + +* **AcitveMQ-CPP v3.9.3** on Thu Mar 31 2016 +* **Apache.NMS.ActiveMQ v1.7.2** on Thu Apr 7 2016 + +**Mailing list activity** + +* [users@activemq.apache.org](mailto:users@activemq.apache.org) + + * TODO +* [dev@activemq.apache.org](mailto:dev@activemq.apache.org) + + * TODO +* [issues@activemq.apache.org](mailto:issues@activemq.apache.org) + + * TODO +* [announce@activemq.apache.org](mailto:announce@activemq.apache.org) + + * TODO + +**JIRA activity** + +* TODO + + +(Most of this information is pulled from [reporter.apache.org](https://reporter.apache.org/)) + diff --git a/could-not-find-packetreader-for-packet-type-unknown-packet-type.md b/could-not-find-packetreader-for-packet-type-unknown-packet-type.md new file mode 100644 index 0000000..85dad1c --- /dev/null +++ b/could-not-find-packetreader-for-packet-type-unknown-packet-type.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- Could not find PacketReader for packet type - UNKNOWN PACKET TYPE + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Could not find PacketReader for packet type - UNKNOWN PACKET TYPE](could-not-find-packetreader-for-packet-type-unknown-packet-type.html) + + +### Error + +Could not find PacketReader for packet type: UNKNOWN PACKET TYPE: -102 + +### Reason + +You are probably using different versions of ActiveMQ jars on the client and the broker. Try using the same jars on each node and the problem should go away. + +Once 4.0 is GA we will be freezing the wire format version then increasing it for every future GA release - so the error message you get going forward should be more explicit + diff --git a/creating-distributions.md b/creating-distributions.md new file mode 100644 index 0000000..3f37753 --- /dev/null +++ b/creating-distributions.md @@ -0,0 +1,79 @@ +Apache ActiveMQ ™ -- Creating Distributions + +[Index](index.html) > [Developers](developers.html) > [Creating Distributions](creating-distributions.html) + +Creating a Distribution of ActiveMQ-CPP +--------------------------------------- + +This should give you an idea of the steps involved with creating a new distribution of ActiveMQ-CPP. This content was extracted from [http://www.apache.org/dev/mirror-guide-bodewig.html](http://www.apache.org/dev/mirror-guide-bodewig.html), so you may want to reference that for more information. + +### A Little Background Info ... + +Apache mirrors everything under /www.www.apache.org/dist. We have had the infrastructure team add a directory under there for activemq. All you need in order to write to this directory is to be a member of the activemq group. If you're not, you'll have to create an infrastructure issue to get yourself added. Under the dir activemq, there is a directory activemq-cpp/source for the source distributions of ActiveMQ-CPP. + +Under the source dir, we just drop the archive files (*.zip, *.tar.gz, *.zip.asc, *.tar.gz.asc) for the release versions. (NOTE: After you add files here, you should wait about 24 hours before notifying the lists since it takes a while for all the mirrors to pick up the files). + +The links on our download pages reference an apache CGI script to handle the mirrors. This is a quick and dirty way of doing this, but it works until we come up with a better way. An example usage of the link is the url below: + +[http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-1.1-src.zip](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-1.1-src.zip) + +The cgi script "closer.cgi" takes a file resource relative to www/www.apache.org/dist and generates a download page for it with the list of mirrors. + +To see this in action, go to the amq-cpp 1.1 download page here: [http://activemq.apache.org/activemq-cpp-11-release.html](http://activemq.apache.org/activemq-cpp-11-release.html) + +... and click on one of the archives. You'll be taken to a generic-looking download page. + +Like I said, this is a quick and dirty for now, but it works! ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png) + +### Product version, interface version and package name + +The page [ActiveMQ-CPP product version number](activemq-cpp-product-version-number.html) has been created to specify the way version numbers are used in the project, with some examples. + +[ActiveMQ-CPP, libtool and packaging notes](activemq-cpp-libtool-and-packaging-notes.html) discusses the way version numbers impact libtool and packaging, and make some recommendations for this project. + +### Creating a Distribution (step-by-step) + +* Create a pre-release download page for your distribution. This should have a disclaimer that the release is not yet official and should have a temporary link to a pre-release distribution. For the pre-release, you do not need to have both zip and tar.gz, but a detached signature file (.asc) file should accompany any distribution. Below is an example of the disclaimer that should appear at the top of the download page: + +The Release is still in progress + +You are previewing the release page for unreleased version of yadda. The download links on the page below may not work until it is officially released. + +Until the release is approved you could try the current source bundle: +[http://people.apache.org/~myaccount/yadda.zip](http://people.apache.org/~myaccount/yadda.zip) + +Here is the Wiki Test for the above: + +{warning:title=The Release is still in progress} + You are previewing the release page for unreleased version of yadda. The download links on the page below may not work until it is officially released. + + Until the release is approved you could try the current source bundle: + \[http://people.apache.org/~myaccount/yadda.zip\] +{warning} + +* Call a vote on the release of the distribution. This email typically has + + \[VOTE\] + + in the subject line and should provide a link to the download page and the pre-release distribution. +* Wait 3 days. If there >= 3 +1's and no -1's, you can proceed with the release. +* Create all of the distributions of the source (*.zip, *.tar.gz). Make sure that you remove the .svn directories from the directory before you create the archives. On *nix, this can be done with the command: + +rm -rf \`find . -type d -name .svn\` + +* Sign your distribution files, creating an asc file for both the tar and zip files, see this page [http://www.apache.org/dev/release-signing.html](http://www.apache.org/dev/release-signing.html) for more information on release signing. + +gpg --armor --output foo.tar.gz.asc --detach-sig foo.tar.gz +gpg --armor --output foo.zip.asc --detach-sig foo.zip + +* Copy the distribution files to **/www/www.apache.org/dist/activemq/activemq-cpp/source** on minotaur. +* Wait 24 hours for the mirrors to be updated with the distribution. +* Update the links on the download page to reference your distribution through the CGI script. This simply means that you precede the file names with the path [http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/](http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/). + +i.e. http://www.apache.org/dyn/closer.cgi/activemq/activemq-cpp/source/activemq-cpp-1.1-src.zip + +* Generate the Doxygen API and place it under /www/activemq.apache.org/cms/api_docs. +* Add the link to the release API to the [API](api.html) page. +* Add a news item under the CMS space on the wiki about the release. +* Send out an e-mail on both the dev and users list about the release. + diff --git a/cross-language-clients.md b/cross-language-clients.md new file mode 100644 index 0000000..2f81308 --- /dev/null +++ b/cross-language-clients.md @@ -0,0 +1,1028 @@ +Apache ActiveMQ ™ -- Cross Language Clients + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) + + +Apache ActiveMQ is a message broker written in Java with JMS, [REST](rest.html) and [WebSocket](websockets.html) interfaces, however it supports protocols like [AMQP](amqp.html), [MQTT](mqtt.html), [OpenWire](openwire.html) and [STOMP](stomp.html) that can be used by applications in different languages. + +Libraries +--------- + +* [.NET](http://activemq.apache.org/nms/) +* [C](http://docs.codehaus.org/display/STOMP/C) (defunct) +* [C++](http://activemq.apache.org/cms/) +* [Erlang](https://github.com/igb/Erlang-STOMP-Client) +* [Go](https://github.com/go-stomp/stomp) +* [Haskell](https://github.com/toschoo/mom) +* [Haxe](https://code.google.com/p/hxstomp) (defunct) +* [Jekejeke Prolog](https://github.com/fribeiro1/jekpro-activemq-library) +* [NetLogo](https://github.com/fribeiro1/ActiveMQ-Extension) +* [Node.js](https://github.com/gdaws/node-stomp) +* [Perl 5](http://search.cpan.org/%7Elcons/Net-STOMP-Client/) +* [Pike](https://github.com/hww3/pike_modules-public_protocols_stomp) +* [Python](https://github.com/jasonrbriggs/stomp.py) +* [Racket](https://github.com/tonyg/racket-stomp) +* [Ruby on Rails](https://github.com/kookster/activemessaging) +* [Tcl/Tk](https://github.com/siemens/tstomp) + +Code Samples +------------ + +Language + +Variant + +Interface + +Protocol + +Links + +Awk + +Gawk + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/06/how-to-send-a-message-to-an-apache-activemq-queue-with-gawk/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/06/how-to-send-a-message-to-an-apache-activemq-topic-with-gawk/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/06/how-to-receive-a-message-from-an-apache-activemq-queue-with-gawk/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/06/how-to-receive-a-message-from-an-apache-activemq-topic-with-gawk/) + +C/C++ + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/23/how-to-send-a-message-to-an-apache-activemq-queue-with-cc/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/23/how-to-send-a-message-to-an-apache-activemq-topic-with-cc/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/23/how-to-receive-a-message-from-an-apache-activemq-queue-with-cc/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/23/how-to-receive-a-message-from-an-apache-activemq-topic-with-cc/) + +COBOL + +GNU COBOL + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/04/15/how-to-send-a-message-to-an-apache-activemq-queue-with-gnu-cobol/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/04/15/how-to-send-a-message-to-an-apache-activemq-topic-with-gnu-cobol/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/04/17/how-to-receive-a-message-from-an-apache-activemq-queue-with-gnu-cobol/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/04/17/how-to-receive-a-message-from-an-apache-activemq-topic-with-gnu-cobol/) + +COBOL + +Visual COBOL + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2013/11/12/how-to-send-a-message-to-an-apache-activemq-queue-with-visual-cobol/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/11/12/how-to-send-a-message-to-an-apache-activemq-topic-with-visual-cobol/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/11/13/how-to-receive-a-message-from-an-apache-activemq-queue-with-visual-cobol/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/11/13/how-to-receive-a-message-from-an-apache-activemq-topic-with-visual-cobol/) + +Ceylon + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2013/12/28/how-to-send-a-message-to-an-apache-activemq-queue-with-ceylon/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/12/28/how-to-send-a-message-to-an-apache-activemq-topic-with-ceylon/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/12/28/how-to-receive-a-message-from-an-apache-activemq-queue-with-ceylon/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/12/28/how-to-receive-a-message-from-an-apache-activemq-topic-with-ceylon/) + +Clojure + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2013/12/31/how-to-send-a-message-to-an-apache-activemq-queue-with-clojure/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/12/31/how-to-send-a-message-to-an-apache-activemq-topic-with-clojure/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/12/31/how-to-receive-a-message-from-an-apache-activemq-queue-with-clojure/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/12/31/how-to-receive-a-message-from-an-apache-activemq-topic-with-clojure/) + +D + +None + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2015/12/02/how-to-send-a-message-to-an-apache-activemq-queue-with-d/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/12/02/how-to-send-a-message-to-an-apache-activemq-topic-with-d/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/12/03/how-to-receive-a-message-from-an-apache-activemq-queue-with-d/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/12/03/how-to-receive-a-message-from-an-apache-activemq-topic-with-d/) + +Dylan + +Open Dylan + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/02/06/how-to-send-a-message-to-an-apache-activemq-queue-with-open-dylan/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/02/06/how-to-send-a-message-to-an-apache-activemq-topic-with-open-dylan/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/02/06/how-to-receive-a-message-from-an-apache-activemq-queue-with-open-dylan/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/02/06/how-to-receive-a-message-from-an-apache-activemq-topic-with-open-dylan/) + +Efene + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/01/11/how-to-send-a-message-to-an-apache-activemq-queue-with-efene/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/01/11/how-to-send-a-message-to-an-apache-activemq-topic-with-efene/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/01/11/how-to-receive-a-message-from-an-apache-activemq-queue-with-efene/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/01/11/how-to-receive-a-message-from-an-apache-activemq-topic-with-efene/) + +Eiffel + +EiffelStudio + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/01/24/how-to-send-a-message-to-an-apache-activemq-queue-with-eiffelstudio/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/01/24/how-to-send-a-message-to-an-apache-activemq-topic-with-eiffelstudio/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/01/24/how-to-receive-a-message-from-an-apache-activemq-queue-with-eiffelstudio/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/01/24/how-to-receive-a-message-from-an-apache-activemq-queue-with-eiffelstudio/) + +Eiffel + +GNU Eiffel + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/01/25/how-to-send-a-message-to-an-apache-activemq-queue-with-gnu-eiffel/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/01/25/how-to-send-a-message-to-an-apache-activemq-topic-with-gnu-eiffel/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/01/25/how-to-receive-a-message-from-an-apache-activemq-queue-with-gnu-eiffel/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/01/25/how-to-receive-a-message-from-an-apache-activemq-topic-with-gnu-eiffel/) + +Elixir + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/09/how-to-send-a-message-to-an-apache-activemq-queue-with-elixir/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/09/how-to-send-a-message-to-an-apache-activemq-topic-with-elixir/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/09/how-to-receive-a-message-from-an-apache-activemq-queue-with-elixir/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/09/how-to-receive-a-message-from-an-apache-activemq-topic-with-elixir/) + +Erlang + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/06/how-to-send-a-message-to-an-apache-activemq-queue-with-erlang/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/06/how-to-send-a-message-to-an-apache-activemq-topic-with-erlang/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/07/how-to-receive-a-message-from-an-apache-activemq-queue-with-erlang/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/07/how-to-receive-a-message-from-an-apache-activemq-topic-with-erlang/) + +Factor + +None + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2015/12/13/how-to-send-a-message-to-an-apache-activemq-queue-with-factor/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/12/13/how-to-send-a-message-to-an-apache-activemq-topic-with-factor/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/12/13/how-to-receive-a-message-from-an-apache-activemq-queue-with-factor/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/12/13/how-to-receive-a-message-from-an-apache-activemq-topic-with-factor/) + +Fantom + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/01/11/how-to-send-a-message-to-an-apache-activemq-queue-with-fantom/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/01/11/how-to-send-a-message-to-an-apache-activemq-topic-with-fantom/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/01/11/how-to-receive-a-message-from-an-apache-activemq-queue-with-fantom/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/01/11/how-to-receive-a-message-from-an-apache-activemq-topic-with-fantom/) + +Frege + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/01/06/how-to-send-a-message-to-an-apache-activemq-queue-with-frege/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/01/06/how-to-send-a-message-to-an-apache-activemq-topic-with-frege/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/01/06/how-to-receive-a-message-from-an-apache-activemq-queue-with-frege/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/01/06/how-to-receive-a-message-from-an-apache-activemq-topic-with-frege/) + +Go + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/16/how-to-send-a-message-to-an-apache-activemq-queue-with-go/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/16/how-to-send-a-message-to-an-apache-activemq-topic-with-go/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/16/how-to-receive-a-message-from-an-apache-activemq-queue-with-go/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/16/how-to-receive-a-message-from-an-apache-activemq-topic-with-go/) + +Golo + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/01/10/how-to-send-a-message-to-an-apache-activemq-queue-with-golo/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/01/10/how-to-send-a-message-to-an-apache-activemq-topic-with-golo/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/01/10/how-to-receive-a-message-from-an-apache-activemq-queue-with-golo/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/01/10/how-to-receive-a-message-from-an-apache-activemq-topic-with-golo/) + +Gosu + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/12/31/how-to-send-a-message-to-an-apache-activemq-queue-with-gosu/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/12/31/how-to-send-a-message-to-an-apache-activemq-topic-with-gosu/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/12/31/how-to-receive-a-message-from-an-apache-activemq-queue-with-gosu/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/12/31/how-to-receive-a-message-from-an-apache-activemq-topic-with-gosu/) + +Groovy + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/01/01/how-to-send-a-message-to-an-apache-activemq-queue-with-groovy/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/01/01/how-to-send-a-message-to-an-apache-activemq-topic-with-groovy/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/01/01/how-to-receive-a-message-from-an-apache-activemq-queue-with-groovy/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/01/01/how-to-receive-a-message-from-an-apache-activemq-topic-with-groovy/) + +Haxe + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/12/how-to-send-a-message-to-an-apache-activemq-queue-with-haxe/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/12/how-to-send-a-message-to-an-apache-activemq-topic-with-haxe/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/12/how-to-receive-a-message-from-an-apache-activemq-queue-with-haxe/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/12/how-to-receive-a-message-from-an-apache-activemq-topic-with-haxe/) + +Haskell + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/14/how-to-send-a-message-to-an-apache-activemq-queue-with-haskell/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/14/how-to-send-a-message-to-an-apache-activemq-topic-with-haskell/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/14/how-to-receive-a-message-from-an-apache-activemq-queue-with-haskell/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/14/how-to-receive-a-message-from-an-apache-activemq-topic-with-haskell/) + +Interfix + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/01/12/how-to-send-a-message-to-an-apache-activemq-queue-with-interfix/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/01/12/how-to-send-a-message-to-an-apache-activemq-topic-with-interfix/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/01/12/how-to-receive-a-message-from-an-apache-activemq-queue-with-interfix/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/01/12/how-to-receive-a-message-from-an-apache-activemq-topic-with-interfix/) + +Ioke + +None + +Library + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/12/10/how-to-send-a-message-to-an-apache-activemq-queue-with-ioke/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/12/10/how-to-send-a-message-to-an-apache-activemq-topic-with-ioke/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/12/10/how-to-receive-a-message-from-an-apache-activemq-queue-with-ioke/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/12/10/how-to-receive-a-message-from-an-apache-activemq-topic-with-ioke/) + +Java + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/19/how-to-send-a-message-to-an-apache-activemq-queue-with-java/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/19/how-to-send-a-message-to-an-apache-activemq-topic-with-java/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/11/10/how-to-receive-a-message-from-an-apache-activemq-queue-with-java/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/11/10/how-to-receive-a-message-from-an-apache-activemq-topic-with-java/) + +Java + +Apache Camel + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/04/21/how-to-send-a-message-to-an-apache-activemq-queue-with-apache-camel/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/04/21/how-to-send-a-message-to-an-apache-activemq-topic-with-apache-camel/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/04/21/how-to-receive-a-message-from-an-apache-activemq-queue-with-apache-camel/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/04/21/how-to-receive-a-message-from-an-apache-activemq-topic-with-apache-camel/) + +Java + +JAX-RS + +REST + +REST + +* [Send to Queue](https://simplesassim.wordpress.com/2013/11/07/how-to-send-a-message-to-an-apache-activemq-queue-with-jax-rs/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/11/07/how-to-send-a-message-to-an-apache-activemq-topic-with-jax-rs/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/11/07/how-to-receive-a-message-from-an-apache-activemq-queue-with-jax-rs/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/11/07/how-to-receive-a-message-from-an-apache-activemq-topic-with-jax-rs/) + +Java + +Java API for WebSocket + +WebSocket + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/01/23/how-to-send-a-message-to-an-apache-activemq-queue-with-the-java-api-for-websocket/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/01/23/how-to-send-a-message-to-an-apache-activemq-topic-with-the-java-api-for-websocket/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/01/23/how-to-receive-a-message-from-an-apache-activemq-queue-with-the-java-api-for-websocket/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/01/23/how-to-receive-a-message-from-an-apache-activemq-topic-with-the-java-api-for-websocket/) + +JavaScript + +None + +WebSocket + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/02/02/how-to-send-a-message-to-an-apache-activemq-queue-with-javascript/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/02/02/how-to-send-a-message-to-an-apache-activemq-topic-with-javascript/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/02/02/how-to-receive-a-message-from-an-apache-activemq-queue-with-javascript/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/02/02/how-to-receive-a-message-from-an-apache-activemq-topic-with-javascript/) + +JavaScript + +DynJS + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/01/02/how-to-send-a-message-to-an-apache-activemq-queue-with-dynjs/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/01/02/how-to-send-a-message-to-an-apache-activemq-topic-with-dynjs/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/01/02/how-to-receive-a-message-from-an-apache-activemq-queue-with-dynjs/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/01/02/how-to-receive-a-message-from-an-apache-activemq-topic-with-dynjs/) + +JavaScript + +Rhino + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2013/12/31/how-to-send-a-message-to-an-apache-activemq-queue-with-rhino/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/12/31/how-to-send-a-message-to-an-apache-activemq-topic-with-rhino/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/12/31/how-to-receive-a-message-from-an-apache-activemq-queue-with-rhino/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/12/31/how-to-receive-a-message-from-an-apache-activemq-topic-with-rhino/) + +JavaScript + +Nashorn + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2013/12/31/how-to-send-a-message-to-an-apache-activemq-queue-with-nashorn/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/12/31/how-to-send-a-message-to-an-apache-activemq-topic-with-nashorn/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/12/31/how-to-receive-a-message-from-an-apache-activemq-queue-with-nashorn/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/12/31/how-to-receive-a-message-from-an-apache-activemq-topic-with-nashorn/) + +JavaScript + +Node.js + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/03/13/how-to-send-a-message-to-an-apache-activemq-queue-with-node-js/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/03/13/how-to-send-a-message-to-an-apache-activemq-topic-with-node-js/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/03/13/how-to-receive-a-message-from-an-apache-activemq-queue-with-node-js/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/03/13/how-to-receive-a-message-from-an-apache-activemq-topic-with-node-js/) + +JudoScript + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/01/10/how-to-send-a-message-to-an-apache-activemq-queue-with-judoscript/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/01/10/how-to-send-a-message-to-an-apache-activemq-topic-with-judoscript/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/01/10/how-to-receive-a-message-from-an-apache-activemq-queue-with-judoscript/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/01/10/how-to-receive-a-message-from-an-apache-activemq-topic-with-judoscript/) + +Julia + +None + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2016/01/02/how-to-send-a-message-to-an-apache-activemq-queue-with-julia/) +* [Send to Topic](https://simplesassim.wordpress.com/2016/01/02/how-to-send-a-message-to-an-apache-activemq-topic-with-julia/) +* [Receive from Queue](https://simplesassim.wordpress.com/2016/01/02/how-to-receive-a-message-from-an-apache-activemq-queue-with-julia/) +* [Receive from Topic](https://simplesassim.wordpress.com/2016/01/02/how-to-receive-a-message-from-an-apache-activemq-topic-with-julia/) + +Kotlin + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/01/10/how-to-send-a-message-to-an-apache-activemq-queue-with-kotlin/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/01/10/how-to-send-a-message-to-an-apache-activemq-topic-with-kotlin/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/01/10/how-to-receive-a-message-from-an-apache-activemq-queue-with-kotlin/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/01/10/how-to-receive-a-message-from-an-apache-activemq-topic-with-kotlin/) + +Lisp/Scheme + +ABCL + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/04/02/how-to-send-a-message-to-an-apache-activemq-queue-with-abcl/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/04/02/how-to-send-a-message-to-an-apache-activemq-topic-with-abcl/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/04/02/how-to-receive-a-message-from-an-apache-activemq-queue-with-abcl/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/04/02/how-to-receive-a-message-from-an-apache-activemq-topic-with-abcl/) + +Lisp/Scheme + +Allegro CL + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/04/05/how-to-send-a-message-to-an-apache-activemq-queue-with-allegro-cl/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/04/05/how-to-send-a-message-to-an-apache-activemq-topic-with-allegro-cl/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/04/05/how-to-receive-a-message-from-an-apache-activemq-queue-with-allegro-cl/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/04/05/how-to-receive-a-message-from-an-apache-activemq-topic-with-allegro-cl/) + +Lisp/Scheme + +Bigloo + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/04/02/how-to-send-a-message-to-an-apache-activemq-queue-with-bigloo/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/04/02/how-to-send-a-message-to-an-apache-activemq-topic-with-bigloo/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/04/02/how-to-receive-a-message-from-an-apache-activemq-queue-with-bigloo/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/04/02/how-to-receive-a-message-from-an-apache-activemq-topic-with-bigloo/) + +Lisp/Scheme + +GNU CLISP + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/17/how-to-send-a-message-to-an-apache-activemq-queue-with-gnu-clisp/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/17/how-to-send-a-message-to-an-apache-activemq-topic-with-gnu-clisp/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/17/how-to-receive-a-message-from-an-apache-activemq-queue-with-gnu-clisp/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/17/how-to-receive-a-message-from-an-apache-activemq-topic-with-gnu-clisp/) + +Lisp/Scheme + +JScheme + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/30/how-to-send-a-message-to-an-apache-activemq-queue-with-jscheme/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/30/how-to-send-a-message-to-an-apache-activemq-topic-with-jscheme/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/30/how-to-receive-a-message-from-an-apache-activemq-queue-with-jscheme/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/30/how-to-receive-a-message-from-an-apache-activemq-topic-with-jscheme/) + +Lisp/Scheme + +Joxa + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/11/how-to-send-a-message-to-an-apache-activemq-queue-with-joxa/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/11/how-to-send-a-message-to-an-apache-activemq-topic-with-joxa/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/11/how-to-receive-a-message-from-an-apache-activemq-queue-with-joxa/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/11/how-to-receive-a-message-from-an-apache-activemq-topic-with-joxa/) + +Lisp/Scheme + +Kawa + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/17/how-to-send-a-message-to-an-apache-activemq-queue-with-kawa/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/17/how-to-send-a-message-to-an-apache-activemq-topic-with-kawa/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/17/how-to-receive-a-message-from-an-apache-activemq-queue-with-kawa/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/17/how-to-receive-a-message-from-an-apache-activemq-topic-with-kawa/) + +Lisp/Scheme + +LFE + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/11/how-to-send-a-message-to-an-apache-activemq-queue-with-lfe/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/11/how-to-send-a-message-to-an-apache-activemq-topic-with-lfe/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/11/how-to-receive-a-message-from-an-apache-activemq-queue-with-lfe/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/11/how-to-receive-a-message-from-an-apache-activemq-topic-with-lfe/) + +Lisp/Scheme + +MIT/GNU Scheme + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/24/how-to-send-a-message-to-an-apache-activemq-queue-with-mitgnu-scheme/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/24/how-to-send-a-message-to-an-apache-activemq-topic-with-mitgnu-scheme/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/25/how-to-receive-a-message-from-an-apache-activemq-queue-with-mitgnu-scheme/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/25/how-to-receive-a-message-from-an-apache-activemq-topic-with-mitgnu-scheme/) + +Lisp/Scheme + +Racket + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/29/how-to-send-a-message-to-an-apache-activemq-queue-with-racket/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/29/how-to-send-a-message-to-an-apache-activemq-topic-with-racket/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/29/how-to-receive-a-message-from-an-apache-activemq-queue-with-racket/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/29/how-to-receive-a-message-from-an-apache-activemq-topic-with-racket/) + +Lisp/Scheme + +SISC + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/04/06/how-to-send-a-message-to-an-apache-activemq-queue-with-sisc/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/04/06/how-to-send-a-message-to-an-apache-activemq-topic-with-sisc/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/04/06/how-to-receive-a-message-from-an-apache-activemq-queue-with-sisc/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/04/06/how-to-receive-a-message-from-an-apache-activemq-topic-with-sisc/) + +Logo + +NetLogo + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/12/06/how-to-send-a-message-to-an-apache-activemq-queue-with-netlogo/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/12/06/how-to-send-a-message-to-an-apache-activemq-topic-with-netlogo/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/12/06/how-to-receive-a-message-from-an-apache-activemq-queue-with-netlogo/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/12/06/how-to-receive-a-message-from-an-apache-activemq-topic-with-netlogo/) + +Lua + +Lua + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/13/how-to-send-a-message-to-an-apache-activemq-queue-with-lua/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/13/how-to-send-a-message-to-an-apache-activemq-topic-with-lua/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/13/how-to-receive-a-message-from-an-apache-activemq-queue-with-lua/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/13/how-to-receive-a-message-from-an-apache-activemq-topic-with-lua/) + +Lua + +Luaj + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/01/25/how-to-send-a-message-to-an-apache-activemq-queue-with-luaj/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/01/25/how-to-send-a-message-to-an-apache-activemq-topic-with-luaj/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/01/25/how-to-receive-a-message-from-an-apache-activemq-queue-with-luaj/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/01/25/how-to-receive-a-message-from-an-apache-activemq-topic-with-luaj/) + +ML + +OCaml + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2015/02/21/how-to-send-a-message-to-an-apache-activemq-queue-with-ocaml/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/02/22/how-to-send-a-message-to-an-apache-activemq-topic-with-ocaml/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/02/22/how-to-receive-a-message-from-an-apache-activemq-queue-with-ocaml/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/02/22/how-to-receive-a-message-from-an-apache-activemq-topic-with-ocaml/) + +ML + +OCaml-Java + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/02/15/how-to-send-a-message-to-an-apache-activemq-queue-with-ocaml-java/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/02/15/how-to-send-a-message-to-an-apache-activemq-topic-with-ocaml-java/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/02/15/how-to-receive-a-message-from-an-apache-activemq-queue-with-ocaml-java/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/02/15/how-to-receive-a-message-from-an-apache-activemq-topic-with-ocaml-java/) + +Mirah + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/12/30/how-to-send-a-message-to-an-apache-activemq-queue-with-mirah/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/12/30/how-to-send-a-message-to-an-apache-activemq-topic-with-mirah/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/12/30/how-to-receive-a-message-from-an-apache-activemq-queue-with-mirah/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/12/30/how-to-receive-a-message-from-an-apache-activemq-topic-with-mirah/) + +Perl + +Perl 5 + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/08/how-to-send-a-message-to-an-apache-activemq-queue-with-perl-5/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/08/how-to-send-a-message-to-an-apache-activemq-topic-with-perl-5/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/08/how-to-receive-a-message-from-an-apache-activemq-queue-with-perl-5/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/08/how-to-receive-a-message-from-an-apache-activemq-topic-with-perl-5/) + +Pike + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/16/how-to-send-a-message-to-an-apache-activemq-queue-with-pike/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/16/how-to-send-a-message-to-an-apache-activemq-topic-with-pike/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/16/how-to-receive-a-message-from-an-apache-activemq-queue-with-pike/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/16/how-to-receive-a-message-from-an-apache-activemq-topic-with-pike/) + +Prolog + +JIProlog + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/01/14/how-to-send-a-message-to-an-apache-activemq-queue-with-jiprolog/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/01/14/how-to-send-a-message-to-an-apache-activemq-topic-with-jiprolog/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/01/14/how-to-receive-a-message-from-an-apache-activemq-queue-with-jiprolog/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/01/14/how-to-receive-a-message-from-an-apache-activemq-topic-with-jiprolog/) + +Prolog + +Jekejeke Prolog + +Library + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/01/26/how-to-send-a-message-to-an-apache-activemq-queue-with-jekejeke-prolog/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/01/26/how-to-send-a-message-to-an-apache-activemq-topic-with-jekejeke-prolog/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/01/26/how-to-receive-a-message-from-an-apache-activemq-queue-with-jekejeke-prolog/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/01/26/how-to-receive-a-message-from-an-apache-activemq-topic-with-jekejeke-prolog/) + +Prolog + +tuProlog + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2015/01/21/how-to-send-a-message-to-an-apache-activemq-queue-with-tuprolog/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/01/21/how-to-send-a-message-to-an-apache-activemq-topic-with-tuprolog/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/01/21/how-to-receive-a-message-from-an-apache-activemq-queue-with-tuprolog/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/01/21/how-to-receive-a-message-from-an-apache-activemq-topic-with-tuprolog/) + +Python + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/14/how-to-send-a-message-to-an-apache-activemq-queue-with-python/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/14/how-to-send-a-message-to-an-apache-activemq-topic-with-python/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/14/how-to-receive-a-message-from-an-apache-activemq-queue-with-python/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/14/how-to-receive-a-message-from-an-apache-activemq-topic-with-python/) + +Python + +Jython + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2013/12/30/how-to-send-a-message-to-an-apache-activemq-queue-with-jython/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/12/30/how-to-send-a-message-to-an-apache-activemq-topic-with-jython/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/12/30/how-to-receive-a-message-from-an-apache-activemq-queue-with-jython/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/12/30/how-to-receive-a-message-from-an-apache-activemq-topic-with-jython/) + +R + +GNU R + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/19/how-to-send-a-message-to-an-apache-activemq-queue-with-gnu-r/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/19/how-to-send-a-message-to-an-apache-activemq-topic-with-gnu-r/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/19/how-to-receive-a-message-from-an-apache-activemq-queue-with-gnu-r/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/19/how-to-receive-a-message-from-an-apache-activemq-topic-with-gnu-r/) + +R + +Renjin + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/12/31/how-to-send-a-message-to-an-apache-activemq-queue-with-renjin/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/12/31/how-to-send-a-message-to-an-apache-activemq-topic-with-renjin/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/12/31/how-to-receive-a-message-from-an-apache-activemq-queue-with-renjin/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/12/31/how-to-receive-a-message-from-an-apache-activemq-topic-with-renjin/) + +Rebol + +None + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2015/11/28/how-to-send-a-message-to-an-apache-activemq-queue-with-rebol/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/11/28/how-to-send-a-message-to-an-apache-activemq-topic-with-rebol/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/11/28/how-to-receive-a-message-from-an-apache-activemq-queue-with-rebol/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/11/28/how-to-receive-a-message-from-an-apache-activemq-topic-with-rebol/) + +Rexx + +BSF4ooRexx + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/08/21/how-to-send-a-message-to-an-apache-activemq-queue-with-bsf4oorexx/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/08/21/how-to-send-a-message-to-an-apache-activemq-topic-with-bsf4oorexx/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/08/22/how-to-receive-a-message-from-an-apache-activemq-queue-with-bsf4oorexx/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/08/22/how-to-receive-a-message-from-an-apache-activemq-topic-with-bsf4oorexx/) + +Rexx + +NetRexx + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/08/17/how-to-send-a-message-to-an-apache-activemq-queue-with-netrexx/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/08/17/how-to-send-a-message-to-an-apache-activemq-topic-with-netrexx/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/08/17/how-to-receive-a-message-from-an-apache-activemq-queue-with-netrexx/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/08/17/how-to-receive-a-message-from-an-apache-activemq-topic-with-netrexx/) + +Rexx + +ooRexx + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/08/21/how-to-send-a-message-to-an-apache-activemq-queue-with-oorexx/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/08/21/how-to-send-a-message-to-an-apache-activemq-topic-with-oorexx/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/08/21/how-to-receive-a-message-from-an-apache-activemq-queue-with-oorexx/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/08/21/how-to-receive-a-message-from-an-apache-activemq-topic-with-oorexx/) + +Ruby + +None + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/02/how-to-send-a-message-to-an-apache-activemq-queue-with-ruby/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/03/how-to-send-a-message-to-an-apache-activemq-topic-with-ruby/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/03/how-to-receive-a-message-from-an-apache-activemq-queue-with-ruby/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/03/how-to-receive-a-message-from-an-apache-activemq-topic-with-ruby/) + +Ruby + +Ruby on Rails + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/01/27/how-to-send-a-message-to-an-apache-activemq-queue-with-ruby-on-rails/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/01/27/how-to-send-a-message-to-an-apache-activemq-topic-with-ruby-on-rails/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/01/27/how-to-receive-a-message-from-an-apache-activemq-queue-with-ruby-on-rails/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/01/27/how-to-receive-a-message-from-an-apache-activemq-topic-with-ruby-on-rails/) + +Ruby + +JRuby + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2013/12/30/how-to-send-a-message-to-an-apache-activemq-queue-with-jruby/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/12/30/how-to-send-a-message-to-an-apache-activemq-topic-with-jruby/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/12/30/how-to-receive-a-message-from-an-apache-activemq-queue-with-jruby/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/12/30/how-to-receive-a-message-from-an-apache-activemq-topic-with-jruby/) + +Rust + +None + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2015/01/16/how-to-send-a-message-to-an-apache-activemq-queue-with-rust/) +* [Send to Topic](https://simplesassim.wordpress.com/2015/01/16/how-to-send-a-message-to-an-apache-activemq-topic-with-rust/) +* [Receive from Queue](https://simplesassim.wordpress.com/2015/01/16/how-to-receive-a-message-from-an-apache-activemq-queue-with-rust/) +* [Receive from Topic](https://simplesassim.wordpress.com/2015/01/16/how-to-receive-a-message-from-an-apache-activemq-topic-with-rust/) + +Scala + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2013/12/31/how-to-send-a-message-to-an-apache-activemq-queue-with-scala/) +* [Send to Topic](https://simplesassim.wordpress.com/2013/12/31/how-to-send-a-message-to-an-apache-activemq-topic-with-scala/) +* [Receive from Queue](https://simplesassim.wordpress.com/2013/12/31/how-to-receive-a-message-from-an-apache-activemq-queue-with-scala/) +* [Receive from Topic](https://simplesassim.wordpress.com/2013/12/31/how-to-receive-a-message-from-an-apache-activemq-topic-with-scala/) + +Smalltalk + +GNU Smalltalk + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/28/how-to-send-a-message-to-an-apache-activemq-queue-with-gnu-smalltalk/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/28/how-to-send-a-message-to-an-apache-activemq-topic-with-gnu-smalltalk/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/28/how-to-receive-a-message-from-an-apache-activemq-queue-with-gnu-smalltalk/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/28/how-to-receive-a-message-from-an-apache-activemq-topic-with-gnu-smalltalk/) + +Smalltalk + +Squeak + +Sockets + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/03/30/how-to-send-a-message-to-an-apache-activemq-queue-with-squeak/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/03/30/how-to-send-a-message-to-an-apache-activemq-topic-with-squeak/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/03/30/how-to-receive-a-message-from-an-apache-activemq-queue-with-squeak/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/03/30/how-to-receive-a-message-from-an-apache-activemq-topic-with-squeak/) + +Tcl + +Tcl/Tk + +Library + +STOMP + +* [Send to Queue](https://simplesassim.wordpress.com/2014/02/27/how-to-send-a-message-to-an-apache-activemq-queue-with-tcltk/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/02/27/how-to-send-a-message-to-an-apache-activemq-topic-with-tcltk/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/02/27/how-to-receive-a-message-from-an-apache-activemq-queue-with-tcltk/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/02/27/how-to-receive-a-message-from-an-apache-activemq-topic-with-tcltk/) + +Tcl + +Tcl/Java + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/08/24/how-to-send-a-message-to-an-apache-activemq-queue-with-tcljava/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/08/24/how-to-send-a-message-to-an-apache-activemq-topic-with-tcljava/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/08/24/how-to-receive-a-message-from-an-apache-activemq-queue-with-tcljava/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/08/24/how-to-receive-a-message-from-an-apache-activemq-topic-with-tcljava/) + +Xtend + +None + +JMS + +OpenWire + +* [Send to Queue](https://simplesassim.wordpress.com/2014/01/01/how-to-send-a-message-to-an-apache-activemq-queue-with-xtend/) +* [Send to Topic](https://simplesassim.wordpress.com/2014/01/01/how-to-send-a-message-to-an-apache-activemq-topic-with-xtend/) +* [Receive from Queue](https://simplesassim.wordpress.com/2014/01/01/how-to-receive-a-message-from-an-apache-activemq-queue-with-xtend/) +* [Receive from Topic](https://simplesassim.wordpress.com/2014/01/01/how-to-receive-a-message-from-an-apache-activemq-topic-with-xtend/) + diff --git a/cvs.md b/cvs.md new file mode 100644 index 0000000..aa7ab22 --- /dev/null +++ b/cvs.md @@ -0,0 +1,200 @@ +Apache ActiveMQ ™ -- CVS + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [CVS](cvs.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Web Browsing of CVS +------------------- + +To browse CVS via the web use the FishEye interface + +[http://cvs.activemq.codehaus.org/](http://cvs.activemq.codehaus.org/) + +CVS Access behind a firewall +---------------------------- + +For those developers who are stuck behind a corporate firewall, you could try ask your firewall administrator nicely to open up CVS or SSH - or failing that [Fisheye](http://cvs.activemq.codehaus.org/) can support tarball downloads... + +Anonymous CVS access +-------------------- + +This project's CVS repository can be checked out through anonymous (pserver) CVS with the following instruction set. When prompted for a password for anonymous, simply press the Enter key. + + + +Updates from within the module's directory do not need the -d parameter. + +Developer CVS Access via SSH +---------------------------- + +Only project developers can access the CVS tree via this method. SSH1 must be installed on your client machine. Substitute username with the proper value. Enter your site password when prompted. + + + +Remember to replace 'username' with your actual username on cvs.activemq.codehaus.org. + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/delay-and-schedule-message-delivery.md b/delay-and-schedule-message-delivery.md new file mode 100644 index 0000000..3827e7a --- /dev/null +++ b/delay-and-schedule-message-delivery.md @@ -0,0 +1,81 @@ +Apache ActiveMQ ™ -- Delay and Schedule Message Delivery + +[Features](features.html) > [Message Features](message-features.html) > [Delay and Schedule Message Delivery](delay-and-schedule-message-delivery.html) + + +ActiveMQ from version **5.4** has an optional persistent scheduler built into the ActiveMQ message broker. It is enabled by setting the broker **schedulerSupport** attribute to true in the [Xml Configuration](xml-configuration.html). +An ActiveMQ client can take advantage of a delayed delivery by using the following message properties: + +Check your Message Properties + +The message property `scheduledJobId `is reserved for use by the Job Scheduler. If this property is set before sending, the message will be sent immediately and not scheduled. Also, after a scheduled message is received, the property `scheduledJobId` will be set on the received message so keep this in mind if using something like a Camel Route which might automatically copy properties over when re-sending a message. + +Property name + +type + +description + +AMQ\_SCHEDULED\_DELAY + +long + +The time in milliseconds that a message will wait before being scheduled to be delivered by the broker + +AMQ\_SCHEDULED\_PERIOD + +long + +The time in milliseconds to wait after the start time to wait before scheduling the message again + +AMQ\_SCHEDULED\_REPEAT + +int + +The number of times to repeat scheduling a message for delivery + +AMQ\_SCHEDULED\_CRON + +String + +Use a Cron entry to set the schedule + +For the connivence of Java JMS clients - there's an interface with the property names used for scheduling at _**org.apache.activemq.ScheduledMessage**_. + +For example, to have a message scheduled for delivery in 60 seconds - you would need to set the _AMQ\_SCHEDULED\_DELAY_ property: + + MessageProducer producer = session.createProducer(destination); + TextMessage message = session.createTextMessage("test msg"); + long time = 60 * 1000; + message.setLongProperty(ScheduledMessage.AMQ\_SCHEDULED\_DELAY, time); + producer.send(message); + +You can set a message to wait with an initial delay, and the repeat delivery 10 times, waiting 10 seconds between each re-delivery: + + MessageProducer producer = session.createProducer(destination); + TextMessage message = session.createTextMessage("test msg"); + long delay = 30 * 1000; + long period = 10 * 1000; + int repeat = 9; + message.setLongProperty(ScheduledMessage.AMQ\_SCHEDULED\_DELAY, delay); + message.setLongProperty(ScheduledMessage.AMQ\_SCHEDULED\_PERIOD, period); + message.setIntProperty(ScheduledMessage.AMQ\_SCHEDULED\_REPEAT, repeat); + producer.send(message); + +You can also use [CRON](http://en.wikipedia.org/wiki/Cron) to schedule a message, for example, if you want a message scheduled to be delivered every hour, you would need to set the CRON entry to be - _0 * * * *_ \- e.g. + + MessageProducer producer = session.createProducer(destination); + TextMessage message = session.createTextMessage("test msg"); + message.setStringProperty(ScheduledMessage.AMQ\_SCHEDULED\_CRON, "0 * * * *"); + producer.send(message); + +CRON scheduling takes priority over using message delay - however, if a repeat and period is set with a CRON entry, the ActiveMQ scheduler will schedule delivery of the message for every time the CRON entry fires. Easier to explain with an example. Supposing that you want a message to be delivered 10 times, with a one second delay between each message - and you wanted this to happen every hour - you'd do this: + + MessageProducer producer = session.createProducer(destination); + TextMessage message = session.createTextMessage("test msg"); + message.setStringProperty(ScheduledMessage.AMQ\_SCHEDULED\_CRON, "0 * * * *"); + message.setLongProperty(ScheduledMessage.AMQ\_SCHEDULED\_DELAY, 1000); + message.setLongProperty(ScheduledMessage.AMQ\_SCHEDULED\_PERIOD, 1000); + message.setIntProperty(ScheduledMessage.AMQ\_SCHEDULED\_REPEAT, 9); + producer.send(message); + diff --git a/delete-inactive-destinations.md b/delete-inactive-destinations.md new file mode 100644 index 0000000..abb9878 --- /dev/null +++ b/delete-inactive-destinations.md @@ -0,0 +1,33 @@ +Apache ActiveMQ ™ -- Delete Inactive Destinations + +[Features](features.html) > [Destination Features](destination-features.html) > [Delete Inactive Destinations](delete-inactive-destinations.html) + + +Inactive Destination + +An 'inactive' destination is one that has had no messages pending and no consumers connected for some configured period of time. + +By default the broker does _not_ check for inactive destinations. This as governed by the default values for the following options: **`schedulePeriodForDestinationPurge="0"`** and **`gcInactiveDestinations="false"`**. + +However, the broker can be configured to purge inactive destinations. To do so requires using specially configured destination policy entries in combination with the broker attribute: **`schedulePeriodForDestinationPurge > 0`**. + +Example: + + + + + + + + + + + + + +In this example the broker will check for inactive destinations every **`10`** seconds, as determined by **`schedulePeriodForDestinationPurge="10000"`**. When a destination purge is triggered the broker will delete any queue that has been empty for longer than **`inactiveTimoutBeforeGC="30000"`** milliseconds (default: **`60000`** milliseconds) and for which **`gcInactiveDestinations="true"`** is set on its corresponding destination policy entry. + +When a destination is removed the broker will log a message like: + +INFO Queue - TEST.QUEUE Inactive for longer than 30000 ms - removing ... + diff --git a/delphi-and-freepascal.md b/delphi-and-freepascal.md new file mode 100644 index 0000000..fe1f619 --- /dev/null +++ b/delphi-and-freepascal.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Delphi and FreePascal + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [Delphi and FreePascal](delphi-and-freepascal.html) + + +Delphi and FreePascal Client +============================ + +Habari ActiveMQ Client is a library for Delphi(tm) and Free Pascal. With Habari, applications can connect to Apache ActiveMQ servers, subscribe to queues and topics, send and receive messages and objects, and work with transactions. + +### Supported Communication Libraries + +* Internet Direct (Indy) 10.2 +* Synapse +* OverByte ICS V6 (limited feature set) +* TClientSocket (limited feature set) + +### Project Status + +Habari ActiveMQ Client 1.0 has been released on March 5, 2008. Demo applications, API documentation and source code examples are available for download. +The API documentation is available at [http://www.mikejustin.com/habari/docs/html/index.html](http://www.mikejustin.com/habari/docs/html/index.html) + +### Project Home Page + +[http://www.mikejustin.com/](http://www.mikejustin.com/) + diff --git a/dependencies.md b/dependencies.md new file mode 100644 index 0000000..786ce1c --- /dev/null +++ b/dependencies.md @@ -0,0 +1,66 @@ + ActiveMQ - Project Dependencies + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * **Dependencies** + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Project Dependencies +-------------------- + +There are no dependencies for this project. It is a standalone application that does not depend on any other project. + diff --git a/dependency-convergence.md b/dependency-convergence.md new file mode 100644 index 0000000..8cb8709 --- /dev/null +++ b/dependency-convergence.md @@ -0,0 +1,1653 @@ + ActiveMQ - Reactor Dependency Convergence + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * **Dependency Convergence** + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Reactor Dependency Convergence +------------------------------ + +**Legend:** + +![success](images/icon_success_sml.gif) + +All projects share one version of the dependency. + +![error](images/icon_error_sml.gif) + +At least one project has a differing version of the dependency. + + + +**Statistics:** + +Number of sub-projects: + +29 + +Number of dependencies (NOD): + +162 + +Number of unique artifacts (NOA): + +163 + +Number of SNAPSHOT artifacts (NOS): + +0 + +Convergence (NOD/NOA): + +![error](images/icon_error_sml.gif) **99%** + +Ready for Release (100% Convergence and no SNAPSHOTS): + +![error](images/icon_error_sml.gif) **Error** +You do not have 100% convergence. + +### Dependencies used in sub-projects + +#### activesoap:jaxp-api + +![success](images/icon_success_sml.gif) + +1.3 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### annogen:annogen + +![success](images/icon_success_sml.gif) + +0.1.0 + +1. [org.apache.activemq:activemq-openwire-generator](http://activemq.apache.org/activemq-openwire-generator) + +#### ant:ant + +![success](images/icon_success_sml.gif) + +1.6.2 + +1. [org.apache.activemq:activemq-openwire-generator](http://activemq.apache.org/activemq-openwire-generator) + +#### aopalliance:aopalliance + +![success](images/icon_success_sml.gif) + +1.0 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### axion:axion + +![success](images/icon_success_sml.gif) + +1.0-M3-dev + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### axis:axis + +![success](images/icon_success_sml.gif) + +1.4 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### com.thoughtworks.xstream:xstream + +![success](images/icon_success_sml.gif) + +1.4.3 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +3. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +4. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +5. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +6. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### commons-beanutils:commons-beanutils + +![success](images/icon_success_sml.gif) + +1.8.3 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### commons-collections:commons-collections + +![success](images/icon_success_sml.gif) + +3.2.1 + +1. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +2. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +3. [org.apache.activemq:activemq-jaas](http://activemq.apache.org/activemq-jaas) +4. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### commons-daemon:commons-daemon + +![success](images/icon_success_sml.gif) + +1.0.10 + +1. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) + +#### commons-dbcp:commons-dbcp + +![success](images/icon_success_sml.gif) + +1.4 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### commons-io:commons-io + +![success](images/icon_success_sml.gif) + +1.4 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### commons-lang:commons-lang + +![success](images/icon_success_sml.gif) + +2.6 + +1. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +2. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) +3. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) + +#### commons-logging:commons-logging + +![success](images/icon_success_sml.gif) + +1.1.1 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### commons-net:commons-net + +![success](images/icon_success_sml.gif) + +3.1 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### commons-pool:commons-pool + +![success](images/icon_success_sml.gif) + +1.6 + +1. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +2. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +3. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +4. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +5. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### commons-primitives:commons-primitives + +![success](images/icon_success_sml.gif) + +1.0 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### groovy:gram + +![success](images/icon_success_sml.gif) + +1.1 + +1. [org.apache.activemq:activemq-openwire-generator](http://activemq.apache.org/activemq-openwire-generator) + +#### groovy:groovy-all + +![success](images/icon_success_sml.gif) + +1.0-jsr-03 + +1. [org.apache.activemq:activemq-openwire-generator](http://activemq.apache.org/activemq-openwire-generator) + +#### javax.jmdns:jmdns + +![success](images/icon_success_sml.gif) + +3.4.1 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### javax.servlet:jstl + +![success](images/icon_success_sml.gif) + +1.1.2 + +1. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### jdom:jdom + +![success](images/icon_success_sml.gif) + +1.0 + +1. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) + +#### jivesoftware:smack + +![success](images/icon_success_sml.gif) + +3.1.0 + +1. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) + +#### jivesoftware:smackx + +![success](images/icon_success_sml.gif) + +3.1.0 + +1. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) + +#### jrms:jrms + +![success](images/icon_success_sml.gif) + +1.1 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### junit:junit + +![success](images/icon_success_sml.gif) + +4.10 + +1. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +2. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +3. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +4. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +5. [org.apache.activemq:activemq-fileserver](http://activemq.apache.org/activemq-fileserver) +6. [org.apache.activemq:activemq-itest-spring31](http://activemq.apache.org/tests/activemq-itest-spring31) +7. [org.apache.activemq:activemq-jaas](http://activemq.apache.org/activemq-jaas) +8. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) +9. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) +10. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +11. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +12. [org.apache.activemq:activemq-ra](http://activemq.apache.org/activemq-ra) +13. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) +14. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +15. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +16. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +17. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +18. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) +19. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) +20. [org.apache.activemq:kahadb](http://activemq.apache.org/kahadb) + +#### log4j:log4j + +![success](images/icon_success_sml.gif) + +1.2.17 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +3. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +4. [org.apache.activemq:activemq-fileserver](http://activemq.apache.org/activemq-fileserver) +5. [org.apache.activemq:activemq-itest-spring31](http://activemq.apache.org/tests/activemq-itest-spring31) +6. [org.apache.activemq:activemq-jaas](http://activemq.apache.org/activemq-jaas) +7. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +8. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +9. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) +10. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +11. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +12. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) +13. [org.apache.activemq:kahadb](http://activemq.apache.org/kahadb) + +#### net.sf.saxon:Saxon-HE + +![success](images/icon_success_sml.gif) + +9.4 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### opensymphony:sitemesh + +![success](images/icon_success_sml.gif) + +2.4.2 + +1. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq.protobuf:activemq-protobuf + +![success](images/icon_success_sml.gif) + +1.1 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### org.apache.activemq:activeio-core + +![success](images/icon_success_sml.gif) + +3.1.4 + +1. [org.apache.activemq.tooling:maven-activemq-memtest-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-memtest-plugin) +2. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +3. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) +4. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +5. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +6. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +7. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +8. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +9. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) +10. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-all + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-camel + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-all](http://activemq.apache.org/activemq-all) +2. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +3. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-console + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq.tooling:maven-activemq-memtest-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-memtest-plugin) +2. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +3. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) +4. [org.apache.activemq:activemq-all](http://activemq.apache.org/activemq-all) +5. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) +6. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) +7. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +8. [org.apache.activemq:activemq-run](http://activemq.apache.org/activemq-run) +9. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +10. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-core + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq.tooling:maven-activemq-memtest-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-memtest-plugin) +2. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +3. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) +4. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +5. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +6. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +7. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +8. [org.apache.activemq:activemq-fileserver](http://activemq.apache.org/activemq-fileserver) +9. [org.apache.activemq:activemq-fileserver](http://activemq.apache.org/activemq-fileserver) +10. [org.apache.activemq:activemq-itest-spring31](http://activemq.apache.org/tests/activemq-itest-spring31) +11. [org.apache.activemq:activemq-itest-spring31](http://activemq.apache.org/tests/activemq-itest-spring31) +12. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) +13. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) +14. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) +15. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +16. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +17. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +18. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +19. [org.apache.activemq:activemq-ra](http://activemq.apache.org/activemq-ra) +20. [org.apache.activemq:activemq-ra](http://activemq.apache.org/activemq-ra) +21. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +22. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +23. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +24. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +25. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +26. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +27. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +28. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) +29. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) +30. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) +31. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-fileserver + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-jaas + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +3. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +4. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-leveldb + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-openwire-generator + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### org.apache.activemq:activemq-optional + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-all](http://activemq.apache.org/activemq-all) +2. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) +3. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-pool + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) +3. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +4. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +5. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-ra + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +3. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) +4. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) + +#### org.apache.activemq:activemq-rar + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-run + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-spring + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-itest-spring31](http://activemq.apache.org/tests/activemq-itest-spring31) +3. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-web + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +2. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +3. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-web-console + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-web-demo + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:activemq-xmpp + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.activemq:kahadb + +![success](images/icon_success_sml.gif) + +5.7.0 + +1. [org.apache.activemq:activemq-all](http://activemq.apache.org/activemq-all) +2. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +3. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.aries.blueprint:org.apache.aries.blueprint + +![success](images/icon_success_sml.gif) + +0.3 + +1. [org.apache.activemq:activemq-blueprint](http://activemq.apache.org/activemq-blueprint) + +#### org.apache.camel:camel-core + +![success](images/icon_success_sml.gif) + +2.10.1 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.camel:camel-jdbc + +![success](images/icon_success_sml.gif) + +2.10.1 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) + +#### org.apache.camel:camel-jms + +![success](images/icon_success_sml.gif) + +2.10.1 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.camel:camel-spring + +![success](images/icon_success_sml.gif) + +2.10.1 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.camel:camel-test + +![success](images/icon_success_sml.gif) + +2.10.1 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) + +#### org.apache.camel:camel-test-spring + +![success](images/icon_success_sml.gif) + +2.10.1 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) + +#### org.apache.commons:commons-math + +![success](images/icon_success_sml.gif) + +2.2 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.apache.derby:derby + +![success](images/icon_success_sml.gif) + +10.9.1.0 + +1. [org.apache.activemq.tooling:maven-activemq-memtest-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-memtest-plugin) +2. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +3. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) +4. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +5. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +6. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +7. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +8. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +9. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.derby:derbynet + +![success](images/icon_success_sml.gif) + +10.9.1.0 + +1. [org.apache.activemq.tooling:maven-activemq-memtest-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-memtest-plugin) +2. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +3. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) +4. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.directory.server:apacheds-core-integ + +![success](images/icon_success_sml.gif) + +2.0.0-M6 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-jaas](http://activemq.apache.org/activemq-jaas) + +#### org.apache.directory.server:apacheds-server-integ + +![success](images/icon_success_sml.gif) + +2.0.0-M6 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-jaas](http://activemq.apache.org/activemq-jaas) + +#### org.apache.felix:org.apache.felix.bundlerepository + +![success](images/icon_success_sml.gif) + +1.2.1 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.apache.felix:org.apache.felix.framework + +![success](images/icon_success_sml.gif) + +1.0.0 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.apache.ftpserver:ftpserver-core + +![success](images/icon_success_sml.gif) + +1.0.6 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### org.apache.geronimo.components:geronimo-transaction + +![success](images/icon_success_sml.gif) + +2.2.1 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +3. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) + +#### org.apache.geronimo.specs:geronimo-activation\_1.1\_spec + +![success](images/icon_success_sml.gif) + +1.0.2 + +1. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) + +#### org.apache.geronimo.specs:geronimo-annotation\_1.0\_spec + +![success](images/icon_success_sml.gif) + +1.1.1 + +1. [org.apache.activemq:activemq-all](http://activemq.apache.org/activemq-all) +2. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +3. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +4. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +5. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) + +#### org.apache.geronimo.specs:geronimo-j2ee-connector\_1.5\_spec + +![success](images/icon_success_sml.gif) + +2.0.0 + +1. [org.apache.activemq:activemq-ra](http://activemq.apache.org/activemq-ra) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.geronimo.specs:geronimo-j2ee-management\_1.1\_spec + +![success](images/icon_success_sml.gif) + +1.0.1 + +1. [org.apache.activemq.tooling:maven-activemq-memtest-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-memtest-plugin) +2. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +3. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) +4. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +5. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) +6. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +7. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +8. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.geronimo.specs:geronimo-jacc\_1.1\_spec + +![success](images/icon_success_sml.gif) + +1.0.1 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +3. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +4. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.geronimo.specs:geronimo-jms\_1.1\_spec + +![success](images/icon_success_sml.gif) + +1.1.1 + +1. [org.apache.activemq.tooling:maven-activemq-memtest-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-memtest-plugin) +2. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +3. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) +4. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +5. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +6. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +7. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +8. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.geronimo.specs:geronimo-jsp\_2.1\_spec + +![success](images/icon_success_sml.gif) + +1.0.1 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.geronimo.specs:geronimo-jta\_1.0.1B\_spec + +![success](images/icon_success_sml.gif) + +1.0.1 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +3. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +4. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +5. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +6. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.geronimo.specs:geronimo-servlet\_2.5\_spec + +![success](images/icon_success_sml.gif) + +1.2 + +1. [org.apache.activemq:activemq-fileserver](http://activemq.apache.org/activemq-fileserver) +2. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +3. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +4. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.hadoop:hadoop-core + +![success](images/icon_success_sml.gif) + +1.0.0 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.apache.hadoop:hadoop-test + +![success](images/icon_success_sml.gif) + +1.0.0 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.apache.httpcomponents:httpclient + +![success](images/icon_success_sml.gif) + +4.2.1 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.httpcomponents:httpcore + +![success](images/icon_success_sml.gif) + +4.2.1 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.karaf.features:org.apache.karaf.features.command + +![success](images/icon_success_sml.gif) + +2.2.9 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.apache.karaf.shell:org.apache.karaf.shell.console + +![success](images/icon_success_sml.gif) + +2.2.9 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.apache.karaf.tooling:org.apache.karaf.tooling.testing + +![success](images/icon_success_sml.gif) + +2.2.9 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.apache.maven:maven-plugin-api + +![success](images/icon_success_sml.gif) + +2.0 + +1. [org.apache.activemq.tooling:maven-activemq-memtest-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-memtest-plugin) +2. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) +3. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) + +#### org.apache.maven:maven-project + +![success](images/icon_success_sml.gif) + +2.0 + +1. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) + +#### org.apache.openejb:openejb-core + +![success](images/icon_success_sml.gif) + +3.1.2 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) + +#### org.apache.servicemix.bundles:org.apache.servicemix.bundles.josql + +![success](images/icon_success_sml.gif) + +1.5_5 + +1. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +2. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### org.apache.velocity:velocity + +![success](images/icon_success_sml.gif) + +1.7 + +1. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +2. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### org.apache.xbean:xbean-blueprint + +![success](images/icon_success_sml.gif) + +3.11.1 + +1. [org.apache.activemq:activemq-blueprint](http://activemq.apache.org/activemq-blueprint) + +#### org.apache.xbean:xbean-spring + +![success](images/icon_success_sml.gif) + +3.11.1 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +3. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +4. [org.apache.activemq:activemq-itest-spring31](http://activemq.apache.org/tests/activemq-itest-spring31) +5. [org.apache.activemq:activemq-jaas](http://activemq.apache.org/activemq-jaas) +6. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +7. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) +8. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +9. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +10. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +11. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +12. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.apache.xmlbeans:xmlbeans + +![success](images/icon_success_sml.gif) + +2.5.0 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### org.apache.xmlbeans:xmlbeans-xpath + +![success](images/icon_success_sml.gif) + +2.5.0 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### org.codehaus.jackson:jackson-core-asl + +![success](images/icon_success_sml.gif) + +1.9.2 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.codehaus.jackson:jackson-mapper-asl + +![success](images/icon_success_sml.gif) + +1.9.2 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.codehaus.jettison:jettison + +![success](images/icon_success_sml.gif) + +1.3.2 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +3. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.codehaus.woodstox:stax2-api + +![success](images/icon_success_sml.gif) + +3.0.2 + +1. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) + +#### org.codehaus.woodstox:woodstox-core-asl + +![success](images/icon_success_sml.gif) + +4.1.4 + +1. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) + +#### org.eclipse.jdt:core + +![success](images/icon_success_sml.gif) + +3.1.1 + +1. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.eclipse.jetty.aggregate:jetty-all-server + +![success](images/icon_success_sml.gif) + +7.6.7.v20120910 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-fileserver](http://activemq.apache.org/activemq-fileserver) +3. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +4. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +5. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +6. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +7. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.eclipse.jetty:jetty-continuation + +![success](images/icon_success_sml.gif) + +7.6.7.v20120910 + +1. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) + +#### org.eclipse.jetty:jetty-webapp + +![success](images/icon_success_sml.gif) + +7.6.7.v20120910 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### org.eclipse.jetty:jetty-websocket + +![success](images/icon_success_sml.gif) + +7.6.7.v20120910 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +2. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) + +#### org.fusesource.hawtbuf:hawtbuf-proto + +![success](images/icon_success_sml.gif) + +1.9 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.fusesource.hawtdispatch:hawtdispatch-scala + +![success](images/icon_success_sml.gif) + +1.11 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.fusesource.joram-jms-tests:joram-jms-tests + +![success](images/icon_success_sml.gif) + +1.0 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### org.fusesource.leveldbjni:leveldbjni-linux32 + +![success](images/icon_success_sml.gif) + +1.3 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.fusesource.leveldbjni:leveldbjni-linux64 + +![success](images/icon_success_sml.gif) + +1.3 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.fusesource.leveldbjni:leveldbjni-osx + +![success](images/icon_success_sml.gif) + +1.3 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.fusesource.leveldbjni:leveldbjni-win32 + +![success](images/icon_success_sml.gif) + +1.3 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.fusesource.leveldbjni:leveldbjni-win64 + +![success](images/icon_success_sml.gif) + +1.3 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.fusesource.mqtt-client:mqtt-client + +![success](images/icon_success_sml.gif) + +1.3 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### org.hamcrest:hamcrest-all + +![success](images/icon_success_sml.gif) + +1.1 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### org.iq80.leveldb:leveldb + +![success](images/icon_success_sml.gif) + +0.2 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.iq80.snappy:snappy + +![success](images/icon_success_sml.gif) + +0.2 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.jasypt:jasypt + +![success](images/icon_success_sml.gif) + +1.9.0 + +1. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +2. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +3. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.jasypt:jasypt-spring3 + +![success](images/icon_success_sml.gif) + +1.9.0 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.jencks:jencks + +![success](images/icon_success_sml.gif) + +2.2 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) + +#### org.jencks:jencks-amqpool + +![success](images/icon_success_sml.gif) + +2.2 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) + +#### org.jmock:jmock-junit4 + +![success](images/icon_success_sml.gif) + +2.5.1 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-ra](http://activemq.apache.org/activemq-ra) + +#### org.jmock:jmock-legacy + +![success](images/icon_success_sml.gif) + +2.5.1 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-ra](http://activemq.apache.org/activemq-ra) + +#### org.mortbay.jetty:jetty + +![success](images/icon_success_sml.gif) + +6.1.26 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.mortbay.jetty:jetty-util + +![success](images/icon_success_sml.gif) + +6.1.26 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.mortbay.jetty:jsp-2.1 + +![success](images/icon_success_sml.gif) + +6.1.14 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.mortbay.jetty:jsp-2.1-glassfish + +![success](images/icon_success_sml.gif) + +2.1.v20100127 + +1. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.mortbay.jetty:jsp-api-2.1 + +![success](images/icon_success_sml.gif) + +6.1.14 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.objectweb.howl:howl + +![success](images/icon_success_sml.gif) + +1.0.1-1 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) + +#### org.ops4j.pax.exam:pax-exam + +![success](images/icon_success_sml.gif) + +1.2.4 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.ops4j.pax.exam:pax-exam-container-default + +![success](images/icon_success_sml.gif) + +1.2.4 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.ops4j.pax.exam:pax-exam-junit + +![success](images/icon_success_sml.gif) + +1.2.4 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.ops4j.pax.exam:pax-exam-junit-extender-impl + +![success](images/icon_success_sml.gif) + +1.2.4 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.ops4j.pax.logging:pax-logging-api + +![success](images/icon_success_sml.gif) + +1.6.2 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.ops4j.pax.logging:pax-logging-service + +![success](images/icon_success_sml.gif) + +1.6.2 + +1. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) + +#### org.osgi:org.osgi.core + +![success](images/icon_success_sml.gif) + +4.2.0 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) +3. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) + +#### org.scala-lang:scala-library + +![success](images/icon_success_sml.gif) + +2.9.1 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.scalatest:scalatest_2.9.1 + +![success](images/icon_success_sml.gif) + +1.8 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### org.seleniumhq.selenium:selenium-chrome-driver + +![success](images/icon_success_sml.gif) + +2.25.0 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### org.seleniumhq.selenium:selenium-firefox-driver + +![success](images/icon_success_sml.gif) + +2.25.0 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### org.seleniumhq.selenium:selenium-java + +![success](images/icon_success_sml.gif) + +2.25.0 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### org.slf4j:jcl-over-slf4j + +![success](images/icon_success_sml.gif) + +1.6.6 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.slf4j:slf4j-api + +![success](images/icon_success_sml.gif) + +1.6.6 + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +3. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +4. [org.apache.activemq:activemq-fileserver](http://activemq.apache.org/activemq-fileserver) +5. [org.apache.activemq:activemq-itest-spring31](http://activemq.apache.org/tests/activemq-itest-spring31) +6. [org.apache.activemq:activemq-jaas](http://activemq.apache.org/activemq-jaas) +7. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) +8. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +9. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +10. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +11. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +12. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) +13. [org.apache.activemq:kahadb](http://activemq.apache.org/kahadb) + +#### org.slf4j:slf4j-log4j12 + +![success](images/icon_success_sml.gif) + +1.6.6 + +1. [org.apache.activemq.tooling:maven-activemq-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-plugin) +2. [org.apache.activemq:activemq-all](http://activemq.apache.org/activemq-all) +3. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +4. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +5. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +6. [org.apache.activemq:activemq-fileserver](http://activemq.apache.org/activemq-fileserver) +7. [org.apache.activemq:activemq-itest-spring31](http://activemq.apache.org/tests/activemq-itest-spring31) +8. [org.apache.activemq:activemq-jaas](http://activemq.apache.org/activemq-jaas) +9. [org.apache.activemq:activemq-karaf](http://activemq.apache.org/activemq-karaf) +10. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +11. [org.apache.activemq:activemq-pool](http://activemq.apache.org/activemq-pool) +12. [org.apache.activemq:activemq-ra](http://activemq.apache.org/activemq-ra) +13. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) +14. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +15. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +16. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +17. [org.apache.activemq:activemq-xmpp](http://activemq.apache.org/activemq-xmpp) +18. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) +19. [org.apache.activemq:kahadb](http://activemq.apache.org/kahadb) + +#### org.slf4j:slf4j-simple + +![success](images/icon_success_sml.gif) + +1.6.6 + +1. [org.apache.activemq.tooling:maven-activemq-perf-plugin](http://activemq.apache.org/activemq-tooling/maven-activemq-perf-plugin) + +#### org.springframework.osgi:spring-osgi-core + +![success](images/icon_success_sml.gif) + +1.2.1 + +1. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) + +#### org.springframework:spring-aop + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.springframework:spring-beans + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) + +#### org.springframework:spring-context + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:activemq-console](http://activemq.apache.org/activemq-console) +2. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +3. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) + +#### org.springframework:spring-core + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +2. [org.apache.activemq:activemq-rar](http://activemq.apache.org/activemq-rar) + +#### org.springframework:spring-jms + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +3. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) +4. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.springframework:spring-oxm + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.springframework:spring-test + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:activemq-camel](http://activemq.apache.org/activemq-camel) +2. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +3. [org.apache.activemq:activemq-spring](http://activemq.apache.org/activemq-spring) + +#### org.springframework:spring-tx + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.springframework:spring-web + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.springframework:spring-webmvc + +![success](images/icon_success_sml.gif) + +3.0.7.RELEASE + +1. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### org.xerial.snappy:snappy-java + +![success](images/icon_success_sml.gif) + +1.0.3 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### regexp:regexp + +![success](images/icon_success_sml.gif) + +1.3 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) + +#### rome:rome + +![success](images/icon_success_sml.gif) + +1.0 + +1. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) + +#### taglibs:standard + +![success](images/icon_success_sml.gif) + +1.1.2 + +1. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +2. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### tomcat:jasper-compiler + +![success](images/icon_success_sml.gif) + +5.5.12 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### tomcat:jasper-runtime + +![success](images/icon_success_sml.gif) + +5.5.12 + +1. [org.apache.activemq:activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +#### xalan:xalan + +![success](images/icon_success_sml.gif) + +2.7.1 + +1. [org.apache.activemq:activemq-core](http://activemq.apache.org/activemq-core) +2. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### xerces:xercesImpl + +![error](images/icon_error_sml.gif) + +2.6.2 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +2.9.1 + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) + +#### xerces:xmlParserAPIs + +![success](images/icon_success_sml.gif) + +2.6.2 + +1. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + +#### xpp3:xpp3 + +![success](images/icon_success_sml.gif) + +1.1.4c + +1. [org.apache.activemq:activemq-optional](http://activemq.apache.org/activemq-optional) +2. [org.apache.activemq:activemq-web-console](http://activemq.apache.org/activemq-web-console) +3. [org.apache.activemq:activemq-web-demo](http://activemq.apache.org/activemq-web-demo) +4. [org.apache.activemq:activemq-web](http://activemq.apache.org/activemq-web) +5. [org.apache.activemq:apache-activemq](http://activemq.apache.org/apache-activemq) + diff --git a/dependency-management.md b/dependency-management.md new file mode 100644 index 0000000..a7210f3 --- /dev/null +++ b/dependency-management.md @@ -0,0 +1,1186 @@ + ActiveMQ - Project Dependency Management + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * **Dependency Management** + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Project Dependency Management +----------------------------- + +### compile + +The following is a list of compile dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run the submodule: + +GroupId + +ArtifactId + +Version + +Type + +License + +activemq + +smack + +1.5.0 + +jar + +- + +activemq + +smackx + +1.5.0 + +jar + +- + +activesoap + +jaxp-api + +1.3 + +jar + +- + +annogen + +annogen + +0.1.0 + +jar + +- + +aopalliance + +[aopalliance](http://aopalliance.sourceforge.net) + +1.0 + +jar + +Public Domain + +axion + +axion + +1.0-M3-dev + +jar + +- + +axis + +[axis](http://ws.apache.org/axis) + +1.4 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +com.thoughtworks.xstream + +[xstream](http://codehaus.org/xstream-parent/xstream/) + +1.4.3 + +jar + +[BSD style](http://xstream.codehaus.com/license.html) + +commons-beanutils + +[commons-beanutils](http://commons.apache.org/beanutils/) + +1.8.3 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +commons-collections + +[commons-collections](http://commons.apache.org/collections/) + +3.2.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +commons-daemon + +[commons-daemon](http://commons.apache.org/daemon/) + +1.0.10 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +commons-dbcp + +[commons-dbcp](http://commons.apache.org/dbcp/) + +1.4 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +commons-io + +[commons-io](http://commons.apache.org/io/) + +1.4 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +commons-logging + +[commons-logging](http://commons.apache.org/logging) + +1.1.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +commons-net + +[commons-net](http://commons.apache.org/net/) + +3.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +commons-pool + +[commons-pool](http://commons.apache.org/pool/) + +1.6 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +commons-primitives + +commons-primitives + +1.0 + +jar + +- + +javax.jmdns + +[jmdns](http://sourceforge.net/projects/jmdns/) + +3.4.1 + +jar + +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +javax.servlet + +jstl + +1.1.2 + +jar + +- + +jdom + +jdom + +1.0 + +jar + +- + +jxta + +jxta + +2.0 + +jar + +- + +opensymphony + +[sitemesh](http://www.opensymphony.com/sitemesh) + +2.4.2 + +jar + +[The Apache Software License, Version 1.1](http://www.opensymphony.com/sitemesh/license.action) + +org.apache.activemq + +[activeio-core](http://activemq.apache.org/activeio-core/) + +3.1.4 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-all](http://activemq.apache.org/activemq-all) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-camel](http://activemq.apache.org/activemq-camel) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-console](http://activemq.apache.org/activemq-console) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-core](http://activemq.apache.org/activemq-core) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-fileserver](http://activemq.apache.org/activemq-fileserver) + +5.7.0 + +war + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-jaas](http://activemq.apache.org/activemq-jaas) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-karaf](http://activemq.apache.org/activemq-karaf) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-leveldb](http://activemq.apache.org/activemq-leveldb) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-openwire-generator](http://activemq.apache.org/activemq-openwire-generator) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-optional](http://activemq.apache.org/activemq-optional) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-pool](http://activemq.apache.org/activemq-pool) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-ra](http://activemq.apache.org/activemq-ra) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-rar](http://activemq.apache.org/activemq-rar) + +5.7.0 + +rar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-run](http://activemq.apache.org/activemq-run) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-spring](http://activemq.apache.org/activemq-spring) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-web](http://activemq.apache.org/activemq-web) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-web](http://activemq.apache.org/activemq-web) + +5.7.0 + +war + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-web-console](http://activemq.apache.org/activemq-web-console) + +5.7.0 + +war + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-web-demo](http://activemq.apache.org/activemq-web-demo) + +5.7.0 + +war + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-xmpp](http://activemq.apache.org/activemq-xmpp) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[kahadb](http://activemq.apache.org/kahadb) + +5.7.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq.protobuf + +[activemq-protobuf](http://activemq.apache.org/activemq-protobuf) + +1.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.ant + +[ant](http://ant.apache.org/ant/) + +1.8.4 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.camel + +[camel-core](http://camel.apache.org/camel-parent/camel-core) + +2.10.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.camel + +[camel-jetty](http://camel.apache.org/camel-parent/camel-jetty) + +2.10.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.camel + +[camel-jms](http://camel.apache.org/camel-parent/camel-jms) + +2.10.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.camel + +[camel-spring](http://camel.apache.org/camel-parent/camel-spring) + +2.10.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.camel + +[camel-test](http://camel.apache.org/camel-parent/camel-test) + +2.10.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.camel + +[camel-test-spring](http://camel.apache.org/camel-parent/camel-test-spring) + +2.10.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.derby + +[derby](http://db.apache.org/derby/derby/) + +10.9.1.0 + +jar + +[Apache 2](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.derby + +[derbynet](http://db.apache.org/derby/derbynet/) + +10.9.1.0 + +jar + +[Apache 2](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.components + +[geronimo-transaction](http://geronimo.apache.org/maven/components/geronimo-transaction/3.1.1) + +2.2.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.specs + +[geronimo-annotation\_1.0\_spec](http://geronimo.apache.org/specs/geronimo-annotation_1.0_spec) + +1.1.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.specs + +[geronimo-j2ee-connector\_1.5\_spec](http://geronimo.apache.org/specs/geronimo-j2ee-connector_1.5_spec) + +2.0.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.specs + +[geronimo-j2ee-management\_1.1\_spec](http://geronimo.apache.org/specs/geronimo-j2ee-management_1.1_spec) + +1.0.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.specs + +[geronimo-jacc\_1.1\_spec](http://geronimo.apache.org/maven/specs/geronimo-jacc_1.1_spec/1.0.2) + +1.0.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.specs + +[geronimo-jms\_1.1\_spec](http://geronimo.apache.org/specs/geronimo-jms_1.1_spec) + +1.1.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.specs + +[geronimo-jsp\_2.1\_spec](http://geronimo.apache.org/specs/geronimo-jsp_2.1_spec) + +1.0.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.specs + +[geronimo-jta\_1.0.1B\_spec](http://geronimo.apache.org/specs/geronimo-jta_1.0.1B_spec) + +1.0.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.geronimo.specs + +[geronimo-servlet\_2.5\_spec](http://geronimo.apache.org/maven/specs/servlet-2.5/1.2) + +1.2 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.hadoop.zookeeper + +zookeeper + +3.3.5 + +jar + +- + +org.apache.httpcomponents + +[httpclient](http://hc.apache.org/httpcomponents-client) + +4.2.1 + +jar + +LICENSE.txt + +org.apache.httpcomponents + +[httpcore](http://hc.apache.org/httpcomponents-core-ga) + +4.2.1 + +jar + +LICENSE.txt + +org.apache.openjpa + +[openjpa-persistence-jdbc](http://openjpa.apache.org/openjpa-persistence-jdbc) + +1.2.0 + +jar + +[Apache Software License 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.servicemix.bundles + +[org.apache.servicemix.bundles.josql](http://servicemix.apache.org/bundles-pom/org.apache.servicemix.bundles.josql/) + +1.5_5 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.velocity + +[velocity](http://velocity.apache.org/engine/devel/) + +1.7 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.xbean + +[xbean-spring](http://geronimo.apache.org/maven/xbean/3.11.1/xbean-spring) + +3.11.1 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.xmlbeans + +[xmlbeans](http://xmlbeans.apache.org) + +2.5.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.xmlbeans + +[xmlbeans-xpath](http://xmlbeans.apache.org) + +2.5.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.codehaus.jettison + +[jettison](http://codehaus.org/jettison/) + +1.3.2 + +jar + +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) + +org.eclipse.jetty.aggregate + +[jetty-all-server](http://www.eclipse.org/jetty/jetty-aggregate-project/jetty-all-server) + +7.6.7.v20120910 + +jar + +[Apache Software License - Version 2.0](http://www.apache.org/licenses/LICENSE-2.0), [Eclipse Public License - Version 1.0](http://www.eclipse.org/org/documents/epl-v10.php) + +org.fusesource.fuse-extra + +[fusemq-leveldb](https://github.com/fusesource/fuse-extra/fuse-scala/fusemq-leveldb) + +1.3 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.fusesource.mqtt-client + +[mqtt-client](http://mqtt-client.fusesource.org/mqtt-client/) + +1.3 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.jasypt + +[jasypt](http://www.jasypt.org) + +1.9.0 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.mortbay.jetty + +[jsp-2.1-glassfish](http://jetty.mortbay.org/jetty-jsp/jsp-2.1-glassfish) + +2.1.v20100127 + +jar + +[CDDL 1.0](https://glassfish.dev.java.net/public/CDDLv1.0.html) + +org.osgi + +[org.osgi.core](http://www.osgi.org) + +4.2.0 + +jar + +[Apache License, Version 2.0](http://opensource.org/licenses/apache2.0.php) + +org.slf4j + +[jcl-over-slf4j](http://www.slf4j.org) + +1.6.6 + +jar + +[MIT License](http://www.opensource.org/licenses/mit-license.php) + +org.slf4j + +[slf4j-api](http://www.slf4j.org) + +1.6.6 + +jar + +[MIT License](http://www.opensource.org/licenses/mit-license.php) + +org.slf4j + +[slf4j-log4j12](http://www.slf4j.org) + +1.6.6 + +jar + +[MIT License](http://www.opensource.org/licenses/mit-license.php) + +org.springframework + +spring-aop + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-beans + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-context + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-core + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-jms + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-oxm + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-test + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-tx + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-web + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework + +spring-webmvc + +3.0.7.RELEASE + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.springframework.osgi + +[spring-osgi-core](http://www.springframework.org/osgi) + +1.2.1 + +jar + +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) + +p2psockets + +p2psockets-core + +1.1.2 + +jar + +- + +regexp + +regexp + +1.3 + +jar + +- + +rome + +[rome](https://rome.dev.java.net/) + +1.0 + +jar + +- + +taglibs + +standard + +1.1.2 + +jar + +- + +xalan + +xalan + +2.7.1 + +jar + +- + +xpp3 + +[xpp3](http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/) + +1.1.4c + +jar + +- + +### runtime + +The following is a list of runtime dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to run the submodule: + +GroupId + +ArtifactId + +Version + +Type + +License + +log4j + +[log4j](http://logging.apache.org/log4j/1.2/) + +1.2.17 + +jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +### test + +The following is a list of test dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to compile and run unit tests for the submodule: + +GroupId + +ArtifactId + +Version + +Type + +License + +junit + +[junit](http://junit.org) + +4.10 + +jar + +[Common Public License Version 1.0](http://www.opensource.org/licenses/cpl1.0.txt) + +org.apache.activemq + +[activeio-core](http://activemq.apache.org/activeio-core/) + +3.1.4 + +test-jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.activemq + +[activemq-core](http://activemq.apache.org/activemq-core) + +5.7.0 + +test-jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.camel + +[camel-core](http://camel.apache.org/camel-parent/camel-core) + +2.10.1 + +test-jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.apache.camel + +[camel-spring](http://camel.apache.org/camel-parent/camel-spring) + +2.10.1 + +test-jar + +[The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) + +org.hamcrest + +[hamcrest-all](https://github.com/hamcrest/JavaHamcrest/hamcrest-all) + +1.1 + +jar + +[New BSD License](http://www.opensource.org/licenses/bsd-license.php) + +org.jmock + +jmock-junit4 + +2.5.1 + +jar + +[BSD style](http://jmock.org/license.html) + +org.jmock + +jmock-legacy + +2.5.1 + +jar + +[BSD style](http://jmock.org/license.html) + diff --git a/design-documents.md b/design-documents.md new file mode 100644 index 0000000..9f3bfe1 --- /dev/null +++ b/design-documents.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Design Documents + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Design Documents](design-documents.html) + + +* [Slow Consumers](slow-consumers.html) +* [Durable Queue Memory Management](durable-queue-memory-management.html) +* [Supporting IO Streams](supporting-io-streams.html) +* [Message Redelivery and DLQ Handling](message-redelivery-and-dlq-handling.html) +* [Multicast Transport](multicast-transport.html) +* [Proposed C Client Architecture](proposed-c-client-architecture.html) +* [REST protocols](rest-protocols.html) + diff --git a/destination-features.md b/destination-features.md new file mode 100644 index 0000000..6d255e1 --- /dev/null +++ b/destination-features.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- Destination Features + +[Features](features.html) > [Destination Features](destination-features.html) + + +* [Composite Destinations](composite-destinations.html) +* [Configure Startup Destinations](configure-startup-destinations.html) +* [Delete Inactive Destinations](delete-inactive-destinations.html) +* [Destination Options](destination-options.html) +* [Mirrored Queues](mirrored-queues.html) +* [Per Destination Policies](per-destination-policies.html) +* [Virtual Destinations](virtual-destinations.html) +* [Wildcards](wildcards.html) + diff --git a/destination-options.md b/destination-options.md new file mode 100644 index 0000000..9283b91 --- /dev/null +++ b/destination-options.md @@ -0,0 +1,70 @@ +Apache ActiveMQ ™ -- Destination Options + +[Features](features.html) > [Destination Features](destination-features.html) > [Destination Options](destination-options.html) + + +### Background + +Destination Options are a way to provide extended configuration options to a JMS consumer without having to extend the JMS API. The options are encoded using URL query syntax in the destination name that the consumer is created on. + +### Consumer Options + +Option Name + +Default Value + +Description + +`consumer.dispatchAsync` + +`true` + +Should the broker [dispatch messages asynchronously](consumer-dispatch-async.html) to the consumer. + +`consumer.exclusive` + +`false` + +Is this an [Exclusive Consumer](exclusive-consumer.html). + +`consumer.maximumPendingMessageLimit` + +`0` + +Use to control if messages for non-durable topics are dropped if a [slow consumer](slow-consumer-handling.html) situation exists. + +`consumer.noLocal` + +`false` + +Same as the **`noLocal`** flag on a Topic consumer. Exposed here so that it can be used with a queue. + +`consumer.prefetchSize` + +`n/a` + +The number of message the consumer will [prefetch](what-is-the-prefetch-limit-for.html). + +`consumer.priority` + +`0` + +Allows you to configure a [Consumer Priority](consumer-priority.html). + +`consumer.retroactive` + +`false` + +Is this a [Retroactive Consumer](retroactive-consumer.html). + +`consumer.selector` + +`null` + +JMS Selector used with the consumer. + +### Example + +queue = new ActiveMQQueue("TEST.QUEUE?consumer.dispatchAsync=false&consumer.prefetchSize=10"); +consumer = session.createConsumer(queue); + diff --git a/destinations-plugin.md b/destinations-plugin.md new file mode 100644 index 0000000..2f2b9cd --- /dev/null +++ b/destinations-plugin.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Destinations Plugin + +[Features](features.html) > [Interceptors](interceptors.html) > [Destinations Plugin](destinations-plugin.html) + + +In some environments clients can't create destinations and only administrators are allowed to do that using management consoles or APIs. This plugin allows users to export destinations created during the runtime of the broker and replicate that state on another broker. + + + + + +The plugin saves all destinations to the file defined by the location property when it stops. If the property is not specified, broker data directory will be used and the file will be named `destinations` (`${ACTIVEMQ_HOME}/data/localhost/destinations` by default). If this file is present on the broker start, destinations listed in the file will be pre-created. The future improvements can include periodic export or on demand via management API. + diff --git a/destinations.md b/destinations.md new file mode 100644 index 0000000..51e8ef7 --- /dev/null +++ b/destinations.md @@ -0,0 +1,57 @@ + Destinations · ActiveMQ Artemis Documentation + +* [Introduction](./) +* [Configuration](configuration.html) +* [Connectors](connectors.html) +* [Destinations](destinations.html) +* [Authentication](authentication.html) +* [Authorization](authorization.html) +* [SSL](ssl.html) +* [Legal Notice](notice.html) + +* [Published with GitBook](https://www.gitbook.com) + +[Destinations](.) +================= + +Destinations +============ + +We already talked about addressing differences between ActiveMQ and Artemis in the [introduction](./). Now let's dig into the details and see how to configure JMS queues and topics. It's important to note here that both brokers are configured by default to _auto-create_ destinations requested by clients, which is preferred behavior for many use cases. This is configured using authorization security policies, so we will cover this topic in the later sections of this manual. For now, let's see how you can predefine JMS queues and topics in both brokers. + +In ActiveMQ, destinations are pre-defined in the `` section of the `conf/activemq.xml` configuration file. + + + + + + + +Things looks a bit different in Artemis. We already explained that queues are `anycast` addresses and topics are `muticast` ones. We're not gonna go deep into the address settings details here and you're advised to look at the user manual for that. Let's just see what we need to do in order to replicate ActiveMQ configuration. + +Addresses are defined in `` section of the `etc/broker.xml` configuration file. So the corresponding Artemis configuration for the ActiveMQ example above, looks like this: + + +
+ + + +
+ +
+ +
+ + + +After this step we have our destinations ready in the new broker. + +results matching "" +=================== + +No results matching "" +====================== + +[](connectors.html)[](authentication.html) + +var gitbook = gitbook || \[\]; gitbook.push(function() { gitbook.page.hasChanged({"page":{"title":"Destinations","level":"1.4","depth":1,"next":{"title":"Authentication","level":"1.5","depth":1,"path":"authentication.md","ref":"authentication.md","articles":\[\]},"previous":{"title":"Connectors","level":"1.3","depth":1,"path":"connectors.md","ref":"connectors.md","articles":\[\]},"dir":"ltr"},"config":{"plugins":\[\],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":\["facebook","google","twitter","weibo","instapaper"\]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"github":"apache/activemq-artemis","theme":"default","githubHost":"https://github.com/","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"ActiveMQ Artemis Documentation","links":{"home":"http://activemq.apache.org/","issues":"http://activemq.apache.org/","contribute":"http://activemq.apache.org/contributing.html"},"gitbook":"3.x.x","description":"ActiveMQ Artemis Migration Guide"},"file":{"path":"destinations.md","mtime":"2017-03-10T10:03:20.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-03-10T13:48:00.771Z"},"basePath":".","book":{"language":""}}); }); \ No newline at end of file diff --git a/developer-forum.md b/developer-forum.md new file mode 100644 index 0000000..4a0f221 --- /dev/null +++ b/developer-forum.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- Developer Forum + +[Community](community.html) > [Mailing Lists](mailing-lists.html) > [Developer Forum](developer-forum.html) + + +[ActiveMQ - Dev](http://activemq.2283324.n4.nabble.com/ActiveMQ-Dev-f2368404.html) + diff --git a/developer-guide.md b/developer-guide.md new file mode 100644 index 0000000..1e9ce1d --- /dev/null +++ b/developer-guide.md @@ -0,0 +1,21 @@ +Apache ActiveMQ ™ -- Developer Guide + +[Developers](developers.html) > [Developer Guide](developer-guide.html) + + +The following documents might be interesting + +* [Building](building.html) +* [Release Plans](release-plans.html) +* [Release Guide](release-guide.html) +* [Design Documents](design-documents.html) +* [Changes in 4.0](changes-in-40.html) +* [Apache ActiveMQ Board Reports](apache-activemq-board-reports.html) +* [Maven SNAPSHOT Repository in your POM](maven-snapshot-repository-in-your-pom.html) + +### Code walkthrough + +* [Code Overview](code-overview.html) +* [Wire Protocol](wire-protocol.html) +* [Developing Plugins](developing-plugins.html) + diff --git a/developers.md b/developers.md new file mode 100644 index 0000000..cf83361 --- /dev/null +++ b/developers.md @@ -0,0 +1,42 @@ +Apache ActiveMQ ™ -- Developers + +[Developers](developers.html) + + +* [Becoming a committer](becoming-a-committer.html) +* [Benchmark Tests](benchmark-tests.html) +* [Board Reports](board-reports.html) + * [2007 April](2007-april.html) +* [Building](building.html) +* [Code Overview](code-overview.html) +* [Developer Guide](developer-guide.html) + * [Design Documents](design-documents.html) + * [Class Diagrams for activemq-4.0-M4 source code](class-diagrams-for-activemq-40-m4-source-code.html) + * [Durable Queue Memory Management](durable-queue-memory-management.html) + * [Message Redelivery and DLQ Handling](message-redelivery-and-dlq-handling.html) + * [Multicast Transport](multicast-transport.html) + * [Proposed C Client Architecture](proposed-c-client-architecture.html) + * [REST protocols](rest-protocols.html) + * [Slow Consumers](slow-consumers.html) + * [Supporting IO Streams](supporting-io-streams.html) + * [Developing Plugins](developing-plugins.html) + * [Maven SNAPSHOT Repository in your POM](maven-snapshot-repository-in-your-pom.html) + * [Release Plans](release-plans.html) + * [4.0 RC 1 Guide](40-rc-1-guide.html) + * [How you can help release](how-you-can-help-release.html) + * [Release Info](release-info.html) +* [Ideas](ideas.html) + * [RESTful Queue](restful-queue.html) +* [Integration Tests](integration-tests.html) + * [Example Testing Scenario](example-testing-scenario.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) +* [JMeter System Tests](jmeter-system-tests.html) +* [JUnit Reports](junit-reports.html) +* [Release Guide](release-guide.html) +* [Sandbox](sandbox.html) +* [Source](source.html) +* [Source XRef](source-xref.html) +* [SVN](svn.html) +* [Test Source XRef](test-source-xref.html) +* [Wire Protocol](wire-protocol.html) + diff --git a/developing-activemq.md b/developing-activemq.md new file mode 100644 index 0000000..4454e1e --- /dev/null +++ b/developing-activemq.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- Developing ActiveMQ + +[Community](community.html) > [FAQ](faq.html) > [Developing ActiveMQ](developing-activemq.html) + + +Questions for developers wishing to extend or enhance Apache ActiveMQ + +* [How can I add a new type of transport](how-can-i-add-a-new-type-of-transport.html) +* [How can I contribute](how-can-i-contribute.html) +* [How do I add my own plugins](how-do-i-add-my-own-plugins.html) +* [How do I debug ActiveMQ from my IDE](how-do-i-debug-activemq-from-my-ide.html) + diff --git a/developing-plugins.md b/developing-plugins.md new file mode 100644 index 0000000..d39b3e8 --- /dev/null +++ b/developing-plugins.md @@ -0,0 +1,68 @@ +Apache ActiveMQ ™ -- Developing Plugins + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Developing Plugins](developing-plugins.html) + + +Apache ActiveMQ is based on the model of POJOs and _Dependency Injection_. If you are developing [Interceptors](interceptors.html) or additional components or plugins for ActiveMQ then the first thing you should do is develop the code as if you are writing any other Spring component, using dependency injection. + +### Dependency Injection + +Some folks favour using constructor based injection as it removes the need to have a separate lifecycle _start()_ method - others find using property based injection is a little more flexible and easier to map to XML configuration files. We'll leave that choice up to you. For complex to create objects you could consider writing a FactoryBean. For more details on writing POJOs with Spring see their [documentation](http://www.springframework.org/documentation). + +### Custom XML + +With ActiveMQ you can use regular Spring.xml syntax to configure things. However to produce neater XML that is easier to read and edit we use [XBean](http://geronimo.apache.org/xbean/) to autogenerate support for [Custom XML](http://geronimo.apache.org/xbean/custom-xml.html). + +If you wish your POJO to have its own custom XML you may wish to follow the following source examples for working nicely with XBean. Basically you add an XBean annotation in the javadoc comments to tell XBean how to map the POJO to custom XML. This should look something like + +/\*\* + \* @org.apache.xbean.XBean element="foo" + */ +public class MyExtension { +... +} + +You can omit the element configuration. For more details on the available annotation options see [here](http://geronimo.apache.org/xbean/xbean-ant-task.html) + +If you are submitting your plugin to the ActiveMQ project then it will end up being included in the maven build step to create the XBean artifacts as part of the jar (in the META-INF/services area). + +However if you are writing an external plugin to ActiveMQ then you will need to add the maven-xbean-plugin to your Maven 2 build. Refer to the [activemq-spring/pom.xml](http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-spring/pom.xml) as an example of using this plugin. + +### Configuring plugins without custom XML + +If you want to configure plugins that does not implement custom XML, you can define plugins as "regular" Spring beans and reference them in broker's `plugins` attribute. For example, + + + ... + + + + +Not that this mechanism will not work in case that you have some XBean plugins configured inside the `` tag. In that case you must define the plugin inside that tag as well (with the appropriate schema definition). For example, + + + + + + + + + + + + +### Examples + +The easiest way to get a feel for how to extend ActiveMQ is maybe to look at some concrete examples of features and how those are implemented and configured. Here are some examples + +* [XBeanBrokerService](http://svn.apache.org/repos/asf/activemq/trunk/activemq-spring/src/main/java/org/apache/activemq/xbean/XBeanBrokerService.java) deals with most of the core configuration of the tag in the XML +* [Security](security.html) has an [example](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/jaas-broker.xml) XML configuration file using the [AuthorizationPlugin](http://svn.apache.org/repos/asf/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/security/AuthorizationPlugin.java) +* The [Discarding DLQ Plugin](message-redelivery-and-dlq-handling.html) is used to discard messages from the DLQ. + diff --git a/discovery-transport-reference.md b/discovery-transport-reference.md new file mode 100644 index 0000000..e755691 --- /dev/null +++ b/discovery-transport-reference.md @@ -0,0 +1,85 @@ +Apache ActiveMQ ™ -- Discovery Transport Reference + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Discovery Transport Reference](discovery-transport-reference.html) + + +### The Discovery Transport + +The Discovery transport works just like the [Failover](failover-transport-reference.html) transport, except that it uses a discovery agent to locate the list of uri to connect to. The Discovery transport is also used by the [Fanout](fanout-transport-reference.html) transport for discovering brokers to send a fanout message to. + +#### Configuration Syntax + +**discovery:(discoveryAgentURI)?transportOptions** +or +**discovery:discoveryAgentURI** + +Note that to be able to use [Discovery](discovery.html) to find brokers, the brokers need to have the multicast discovery agent enabled on the broker. + +To configure discovery in a Broker you should use the [Xml Configuration](xml-configuration.html). Here is an [example](http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/usecases/receiver-discovery.xml?view=co) of using discovery. Its basically something like the following (see the **discoveryUri**) + + + + + + + ... + + +##### Transport Options + +Option Name + +Default Value + +Description + +reconnectDelay + +10 + +How long to wait for discovery + +initialReconnectDelay + +10 + +How long to wait before the first reconnect attempt to a discovered url + +maxReconnectDelay + +30000 + +The maximum amount of time we ever wait between reconnect attempts + +useExponentialBackOff + +true + +Should an exponential backoff be used btween reconnect attempts + +backOffMultiplier + +2 + +The exponent used in the exponential backoff attempts + +maxReconnectAttempts + +0 + +If not 0, then this is the maximum number of reconnect attempts before an error is sent back to the client + +group + +default + +an identifier for the group to partition multi cast traffic among collaborating peers; the group forms part of the shared identity of a discovery datagram (since 5.2) + +##### Example URI + +discovery:(multicast://default)?initialReconnectDelay=100 + +Applying parameters to discovered transports + +From 5.4, transport parameters in the URI will also be applied to discovered transports if they are prefixed with `discovered.`; For example, adding the `discovered.connectionTimeout` parameter to the URI will apply the parameter to every discovered [TCP](tcp-transport-reference.html) transport, even though this parameter is not a Discovery transport option. + diff --git a/discovery.md b/discovery.md new file mode 100644 index 0000000..d17213e --- /dev/null +++ b/discovery.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- Discovery + +[Features](features.html) > [Discovery](discovery.html) + + +Discovery Agents +---------------- + +ActiveMQ uses an abstraction called a [Discovery Agent](http://actievmq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/transport/discovery/DiscoveryAgent.html) to detect remote services such as remote brokers. We can use discovery for JMS clients to auto-detect a Message Broker to connect to, or to provide [Networks of Brokers](networks-of-brokers.html) + +There are currently two kinds of discovery agent. + +### Multicast + +The Discovery transport uses our own Multicast based discovery agent to locate the list of URIs to connect to. + +For more information see the [Discovery Transport Reference](discovery-transport-reference.html). + +### Zeroconf + +[ZeroConf](zeroconf.html) is a standard discovery specification that uses UDP / multicast to discovery devices. Its used by Apple's Rendezvous services. +We use the [jmDNS](http://jmdns.sf.net/) project to implement the Zeroconf specification to detect services. This means other Zeroconf +based tools can be used in conjunction with this discovery agent. + +To configure discovery in a Broker you should use the [Xml Configuration](xml-configuration.html). Here is an [example](http://svn.apache.org/viewvc/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/usecases/receiver-zeroconf.xml?view=co) of using discovery to create [Networks of Brokers](networks-of-brokers.html). + +If you have one or more brokers running with Zeroconf discovery enabled you can connect to a broker using the brokerURL + +zeroconf:\_activemq\_development. + +This will use Zeroconf to find an available broker and one will be randomly chosen & things will auto-failover on disconnect if there are several brokers running. + +### LDAP Discovery + +ActiveMQ supports the use of LDAP for discovery of brokers. + +Please see [LDAP Broker Discovery Mechanism](ldap-broker-discovery-mechanism.html) for more details. + +Trying out discovery +-------------------- + +If you run the following commands in separate shells you'll have 2 brokers auto-discovering themselves and 2 clients using fixed-URLs + +maven -o server -Dconfig=src/test/org/activemq/usecases/receiver-zeroconf.xml +maven -o server -Dconfig=src/test/org/activemq/usecases/sender-zeroconf.xml +maven -o consumer -Durl=tcp://localhost:62002 +maven -o producer -Durl=tcp://localhost:62001 + +If you want the clients to use discovery to find brokers, run either of the two 'server' statements above (or both) then run the producer/consumer as follows + +maven -o consumer -Durl=zeroconf:_activemq.broker.development. +maven -o producer -Durl=zeroconf:_activemq.broker.development. + +The transport URL is of the format + + zeroconf: + +where __ is the Zeroconf service name; which seems to start with an underscore (_) and must end with a dot (.). So we can use this service name to distinguish development, UAT & production brokers - or group them into domains etc. + +Discovery and Security +---------------------- + +When using auto discovery of brokers an attacker may be able to present itself as a legitimate broker and by this way catch and / or manipulate all messages that run over it. + +Are there security settings in auto discovery to avoid this? + diff --git a/discussion-forums.md b/discussion-forums.md new file mode 100644 index 0000000..80357bc --- /dev/null +++ b/discussion-forums.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- Discussion Forums + +[Community](community.html) > [Discussion Forums](discussion-forums.html) + + +Before posting you might want to read the [Tips for getting help](tips-for-getting-help.html). + +Many users prefer to use online forums rather than joining a mail list which can lead to lots more email traffic so we use the online forums at [Nabble forums](http://activemq.2283324.n4.nabble.com/) which also work with our [Mailing Lists](mailing-lists.html) so that both stay completely in sync. Use either the mailing lists or online forums, its completely up to you. + +### [ActiveMQ Forums](http://activemq.2283324.n4.nabble.com/) + +* [ActiveMQ User Forum](http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html) +* [ActiveMQ Developer Forum](http://activemq.2283324.n4.nabble.com/ActiveMQ-Dev-f2368404.html) + +### Mailing Lists + +If you prefer to use a mailing list instead then check out our [Mailing Lists](mailing-lists.html). Note that the Forums and [Mailing Lists](mailing-lists.html) are kept in sync so its your choice which you use. + diff --git a/dispatch-policies.md b/dispatch-policies.md new file mode 100644 index 0000000..15d040b --- /dev/null +++ b/dispatch-policies.md @@ -0,0 +1,36 @@ +Apache ActiveMQ ™ -- Dispatch Policies + +[Features](features.html) > [Message Dispatching Features](message-dispatching-features.html) > [Dispatch Policies](dispatch-policies.html) + + +Dispatch Policies +================= + +Dispatch policies for queues +---------------------------- + +Plug-able dispatch policies only apply to topics. For Queues, dispatch is more static, you can choose round robin (the default) or strict order. Before discussing dispatch policies its worth first understanding [the purpose of the prefetch value](what-is-the-prefetch-limit-for.html). + +The out of the box configuration of ActiveMQ is designed for high performance and high throughput messaging where there are lots of messages that need to be dispatched to consumers as quickly as possible. So the default prefetch values are fairly large and the default dispatch policy will try and fill the prefetch buffers as quickly as possible. + +However with messaging there are many use cases and sometimes the default configuration is not ideal to your use case; when you send a small number of messages, they tend to all go to one consumer unless you've lots of messages. If you have a large number of consumers and a relatively high [prefetch value](what-is-the-prefetch-limit-for.html) and you have a small number of messages that each message takes quite a while to process then the default dispatch policy might result in increasing the amount of time it takes to process all the messages (since the load balancing is not fair for small numbers of messages). + +For queues, you can define whether the dispatch will occur in a round-robin fashion (default behaviour) or if one consumer's prefetch buffer will be exhausted before the dispatch process selects the next consumer along (strictOrderDispatch). +The latter behaviour is enabled by setting the "strictOrderDispatch" attribute on the element. E.g.: + + + +Consumer priorities are observed, so if you have several consumers with different [priorities](http://activemq.apache.org/consumer-priority.html), the one with the highest priority will be flooded first until it can take no more, then the next one along, etc. + +From version 5.14.0 - the strictOrderDispatch=true option will ensure strict order for redispatched messages when there is a single consumer.  + +Dispatch policies for Topics +---------------------------- + +There are more options for topics because the dispatch policy is plug-able. Any implementation of org.apache.activemq.broker.region.policy.DispatchPolicy will work. +The default org.apache.activemq.broker.region.policy.SimpleDispatchPolicy does what one would expect and delivers messages to all subscribers. An example of a more advanced implementation is the org.apache.activemq.broker.region.policy.PriorityNetworkDispatchPolicy which will only dispatch to the highest priority network consumer. This is useful in a loop network topology where there is more than route to a consumer. + +Here is an [example of destination policy configuration](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/xbean/activemq-policy.xml). + +xml + diff --git a/distribution-management.md b/distribution-management.md new file mode 100644 index 0000000..7ba7841 --- /dev/null +++ b/distribution-management.md @@ -0,0 +1,78 @@ + ActiveMQ - Project Distribution Management + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * **Distribution Management** +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Overview +-------- + +The following is the distribution management information used by this project. + +### Repository - apache.releases.https + +[https://repository.apache.org/service/local/staging/deploy/maven2](https://repository.apache.org/service/local/staging/deploy/maven2) + +### Snapshot Repository - apache.snapshots.https + +[https://repository.apache.org/content/repositories/snapshots](https://repository.apache.org/content/repositories/snapshots) + +### Site - activemq-website + +scp://people.apache.org/x1/www/activemq.apache.org/maven/5.7.0 + diff --git a/docs.md b/docs.md new file mode 100644 index 0000000..4df6a26 --- /dev/null +++ b/docs.md @@ -0,0 +1,34 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +The documentation is available in several formats, click on the relevant version to view or download. + +Latest User Documentation: +-------------------------- + +* [HTML](./docs/latest/index.html) +* [PDF](./docs/latest/book.pdf) +* [EPUB](./docs/latest/book.epub) +* [MOBI](./docs/latest/book.mobi) + +Hacking Guide +------------- + +* [HTML](./docs/latest/hacking-guide/index.html) +* [PDF](./docs/latest/hacking-guide/book.pdf) + +API +--- + +* [HTML](./docs/javadocs/javadoc-latest/index.html) + +[Previous Versions](previous-docs.html) +--------------------------------------- \ No newline at end of file diff --git a/does-activemq-support-clustering.md b/does-activemq-support-clustering.md new file mode 100644 index 0000000..55eea56 --- /dev/null +++ b/does-activemq-support-clustering.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- Does ActiveMQ support clustering + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [Does ActiveMQ support clustering](does-activemq-support-clustering.html) + + +Yes, though there are various kinds of clustering. See [this page on details](clustering.html) + diff --git a/does-activemq-support-my-sql-database.md b/does-activemq-support-my-sql-database.md new file mode 100644 index 0000000..fd97eca --- /dev/null +++ b/does-activemq-support-my-sql-database.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- Does ActiveMQ support my SQL database + +[Community](community.html) > [FAQ](faq.html) > [Persistence Questions](persistence-questions.html) > [Does ActiveMQ support my SQL database](does-activemq-support-my-sql-database.html) + + +Quite possibly ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png). See the [JDBC Support](jdbc-support.html) page for details of how to configure for your database or how to let us know of a database which does not work. Also see [Persistence](persistence.html) + diff --git a/dot-net.md b/dot-net.md new file mode 100644 index 0000000..83249af --- /dev/null +++ b/dot-net.md @@ -0,0 +1,168 @@ +Apache ActiveMQ ™ -- dot Net + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [dot Net](dot-net.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.7.0/activemq-core/apidocs/) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Unable to render {include} Couldn't find a page to include called: nms + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/download-archives.md b/download-archives.md new file mode 100644 index 0000000..40501f7 --- /dev/null +++ b/download-archives.md @@ -0,0 +1,80 @@ +Apache ActiveMQ ™ -- Download Archives + +[Overview](overview.html) > [Download Archives](download-archives.html) + + +Download archives +----------------- + +You can use the Apache Archives to download all the ActiveMQ releases. + +* [http://archive.apache.org/dist/activemq/](http://archive.apache.org/dist/activemq/) \- ActiveMQ releases +* [http://archive.apache.org/dist/activemq/apache-activemq/](http://archive.apache.org/dist/activemq/apache-activemq/) \- Even older ActiveMQ releases + +Downloading + +The links below contains the release notes for all the ActiveMQ release. However if you want to download the release, you **must** use the download archives, which is the two links above. + +All time Apache ActiveMQ releases notes: + +* [ActiveMQ 1.1 Release](activemq-11-release.html) +* [ActiveMQ 1.2 Release](activemq-12-release.html) +* [ActiveMQ 1.3 Release](activemq-13-release.html) +* [ActiveMQ 1.4 Release](activemq-14-release.html) +* [ActiveMQ 1.5 Release](activemq-15-release.html) +* [ActiveMQ 2.0 Release](activemq-20-release.html) +* [ActiveMQ 2.1 Release](activemq-21-release.html) +* [ActiveMQ 3.0 Release](activemq-30-release.html) +* [ActiveMQ 3.1 Release](activemq-31-release.html) +* [ActiveMQ 3.2.1 Release](activemq-321-release.html) +* [ActiveMQ 3.2.2 Release](activemq-322-release.html) +* [ActiveMQ 3.2 Release](activemq-32-release.html) +* [ActiveMQ 4.0.1 Release](activemq-401-release.html) +* [ActiveMQ 4.0.2 Release](activemq-402-release.html) +* [ActiveMQ 4.0 M4 Release](activemq-40-m4-release.html) +* [ActiveMQ 4.0 RC2 Release](activemq-40-rc2-release.html) +* [ActiveMQ 4.0 Release](activemq-40-release.html) +* [ActiveMQ 4.1.0 Release](activemq-410-release.html) +* [ActiveMQ 4.1.1 Release](activemq-411-release.html) +* [ActiveMQ 4.1.2 Release](activemq-412-release.html) +* [ActiveMQ 5.0.0 Release](activemq-500-release.html) +* [ActiveMQ 5.1.0 Release](activemq-510-release.html) +* [ActiveMQ 5.10.0 Release](activemq-5100-release.html) +* [ActiveMQ 5.10.1 Release](activemq-5101-release.html) +* [ActiveMQ 5.10.2 Release](activemq-5102-release.html) +* [ActiveMQ 5.11.0 Release](activemq-5110-release.html) +* [ActiveMQ 5.11.1 Release](activemq-5111-release.html) +* [ActiveMQ 5.11.2 Release](activemq-5112-release.html) +* [ActiveMQ 5.11.3 Release](activemq-5113-release.html) +* [ActiveMQ 5.12.0 Release](activemq-5120-release.html) +* [ActiveMQ 5.12.1 Release](activemq-5121-release.html) +* [ActiveMQ 5.12.2 Release](activemq-5122-release.html) +* [ActiveMQ 5.13.0 Release](activemq-5130-release.html) +* [ActiveMQ 5.13.1 Release](activemq-5131-release.html) +* [ActiveMQ 5.13.2 Release](activemq-5132-release.html) +* [ActiveMQ 5.13.3 Release](activemq-5133-release.html) +* [ActiveMQ 5.13.4 Release](activemq-5134-release.html) +* [ActiveMQ 5.14.0 Release](activemq-5140-release.html) +* [ActiveMQ 5.14.1 Release](activemq-5141-release.html) +* [ActiveMQ 5.14.2 Release](activemq-5142-release.html) +* [ActiveMQ 5.14.3 Release](activemq-5143-release.html) +* [ActiveMQ 5.14.4 Release](activemq-5144-release.html) +* [ActiveMQ 5.14.5 Release](activemq-5145-release.html) +* [ActiveMQ 5.15.0 Release](activemq-5150-release.html) +* [ActiveMQ 5.2.0 Release](activemq-520-release.html) +* [ActiveMQ 5.3.0 Release](activemq-530-release.html) +* [ActiveMQ 5.3.1 Release](activemq-531-release.html) +* [ActiveMQ 5.3.2 Release](activemq-532-release.html) +* [ActiveMQ 5.4.0 Release](activemq-540-release.html) +* [ActiveMQ 5.4.1 Release](activemq-541-release.html) +* [ActiveMQ 5.4.2 Release](activemq-542-release.html) +* [ActiveMQ 5.4.3 Release](activemq-543-release.html) +* [ActiveMQ 5.5.0 Release](activemq-550-release.html) +* [ActiveMQ 5.5.1 Release](activemq-551-release.html) +* [ActiveMQ 5.6.0 Release](activemq-560-release.html) +* [ActiveMQ 5.7.0 Release](activemq-570-release.html) +* [ActiveMQ 5.8.0 Release](activemq-580-release.html) +* [ActiveMQ 5.9.0 Release](activemq-590-release.html) +* [ActiveMQ 5.9.1 Release](activemq-591-release.html) +* [In Progress](in-progress.html) + diff --git a/download.md b/download.md new file mode 100644 index 0000000..91b7a37 --- /dev/null +++ b/download.md @@ -0,0 +1,25 @@ +Apache ActiveMQ ™ -- Download + +[Overview](overview.html) > [Download](download.html) + + +Latest Releases +--------------- + +The latest stable release is the [ActiveMQ 5.15.2 Release](activemq-5152-release.html) + +Getting past releases +--------------------- + +See the [Download Archives](download-archives.html) for all time releases. + +Releases In Progress +-------------------- + +The following releases are currently in progress + +Maven Repositories +------------------ + +All ActiveMQ releases are available from the [Maven central repository](https://repository.apache.org/content/repositories/releases/org/apache/activemq/). + diff --git a/downloading-activemq-cpp.md b/downloading-activemq-cpp.md new file mode 100644 index 0000000..8d3b918 --- /dev/null +++ b/downloading-activemq-cpp.md @@ -0,0 +1,23 @@ +Apache ActiveMQ ™ -- Downloading ActiveMQ CPP + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [ActiveMQ C++ Clients](activemq-c-clients.html) > [Downloading ActiveMQ CPP](downloading-activemq-cpp.html) + + +ActiveMQ CPP distributions are source-only. To get the source bundle for a particular release, go [here](download.html). Follow the instructions here only if you want the bleeding edge from trunk. + +Web Browsing of SVN +------------------- + +To browse via the web use the ViewVC interface: + +[http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp](http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp) + +Or to browse the source tree directly: + +[https://svn.apache.org/repos/asf/activemq/activemq-cpp/trunk/activemq-cpp](https://svn.apache.org/repos/asf/activemq/activemq-cpp/trunk/activemq-cpp) + +Checking out from SVN  +---------------------- + +svn co https://svn.apache.org/repos/asf/activemq/activemq-cpp/trunk/ + diff --git a/dr.md b/dr.md new file mode 100644 index 0000000..e9ca97f --- /dev/null +++ b/dr.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- DR + +[Community](community.html) > [FAQ](faq.html) > [Terminology](terminology.html) > [DR](dr.html) + + +Disaster Recovery. + +Typically this means having multiple data centres configured such that if there is a major catastrophy and an entire data centre is lost, messages are replicated to another location so the systems can continue running. + diff --git a/durable-queue-memory-management.md b/durable-queue-memory-management.md new file mode 100644 index 0000000..645d4e7 --- /dev/null +++ b/durable-queue-memory-management.md @@ -0,0 +1,42 @@ +Apache ActiveMQ ™ -- Durable Queue Memory Management + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Design Documents](design-documents.html) > [Durable Queue Memory Management](durable-queue-memory-management.html) + + +The current 3.x code can have issues with massive queues with un-acknowledged messages; its complex due to consumption from multiple points in the queue, consumers coming & going, selectors matching only certain points in the queue etc. + +This page outlines design the design proposal. + +TargetArea +---------- + +Maintains TargetLists for each consumer (the messages that have matched one or more consumers's selectors and are gonna be used to try dispatch stuff to the consumer DispatchArea). TargetEntry objects are added to the TargetList as messages arrive from the Queue. + +A TargetEntry can have either a direct Message reference or a CacheReference to an entry in a cache. + +### Eager loading + +Each TargetList has a watermark to indicate the first TargetEntry which is a CacheReference. The idea is that under ideal scenarios, each TargetList has the watermark equal to the high water mark (i.e. that there are enough direct message references in RAM). + +So we can have a background thread increasing the watermark up to the ideal level - which means it starts at the current watermark and directly loads the objects; de-referencing the CacheReference and replacing with direct references. + +### PendingCache + +TargetEntry objects added to the TargetList which are above the high watermark have their Message objects evicted from direct references into the PendingCache. + +The Target eager loader will move objects from this cache to the TargetList when they are available. If they are not in the PendingCache, they are loaded from the QueueArea. + +### QueueArea + +This represents the actual queue messages. There's also a matching HeadQueueCache which is a simple memory bound queue. FIFO so newer stuff is evicted from the end. + +Back + +### Linking the Caches + +The PendingCache and HeadQueueCache are linked together, along with the TargetArea/DispatchArea so that there is a fixed amount of RAM used in all the caches. + +As the PendingCache grows, the HeadQueueCache shrinks. HeadQueueCache is only used for new consumers arriving. On startup this will stick around a while until lots of messages start being delivered to consumers where it'll shrink back to zero if there is sufficient dispatching. + +Under heavy load, the HeadQueueCache will be pretty much empty unless new consumers come along. + diff --git a/ems-build-notes.md b/ems-build-notes.md new file mode 100644 index 0000000..ed33165 --- /dev/null +++ b/ems-build-notes.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- EMS Build Notes + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.EMS](apachenmsems.html) > [EMS Build Notes](ems-build-notes.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/ems-downloads.md b/ems-downloads.md new file mode 100644 index 0000000..44f3f25 --- /dev/null +++ b/ems-downloads.md @@ -0,0 +1,21 @@ +Apache ActiveMQ ™ -- EMS Downloads + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.EMS](apachenmsems.html) > [EMS Downloads](ems-downloads.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Description + +Release Date + +NMS API Rev + +[Apache.NMS EMS v1.1.0](apachenms-ems-v110.html) + +07/12/2009 + +v1.1.0 + + diff --git a/ems-examples.md b/ems-examples.md new file mode 100644 index 0000000..a52820e --- /dev/null +++ b/ems-examples.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- EMS Examples + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.EMS](apachenmsems.html) > [EMS Examples](ems-examples.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/ems-faq.md b/ems-faq.md new file mode 100644 index 0000000..2704fd3 --- /dev/null +++ b/ems-faq.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- EMS FAQ + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.EMS](apachenmsems.html) > [EMS FAQ](ems-faq.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/enable-openssl-support-with-autotools.md b/enable-openssl-support-with-autotools.md new file mode 100644 index 0000000..5a61d19 --- /dev/null +++ b/enable-openssl-support-with-autotools.md @@ -0,0 +1,8 @@ +Apache ActiveMQ ™ -- Enable OpenSSL support with autotools + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [Building FAQs](building-faqs.html) > [OpenSSL Support](openssl-support.html) > [Enable OpenSSL support with autotools](enable-openssl-support-with-autotools.html) + +When you build the ActiveMQ-CPP library using the GNU AutoTools the Configure script will automatically search for OpenSSL on your system and enable support for it in the code if its found. The search might fail if you have installed OpenSSL in a non-standard location in which case you can tell the configure script where to look using the _with-openssl_ option, see below for an example. + +./configure --with-openssl=/opt/special/openssl + diff --git a/encrypted-passwords.md b/encrypted-passwords.md new file mode 100644 index 0000000..eb73226 --- /dev/null +++ b/encrypted-passwords.md @@ -0,0 +1,96 @@ +Apache ActiveMQ ™ -- Encrypted passwords + +[Features](features.html) > [Security](security.html) > [Encrypted passwords](encrypted-passwords.html) + + +As of ActiveMQ 5.4.1 you can encrypt your passwords and safely store them in configuration files. To encrypt the password, you can use the newly added `encrypt` command like: + +$ bin/activemq encrypt --password activemq --input mypassword +... +Encrypted text: eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp + +Where the password you want to encrypt is passed with the `input` argument, while the `password` argument is a secret used by the encryptor. In a similar fashion you can test-out your passwords like: + +$ bin/activemq decrypt --password activemq --input eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp +... +Decrypted text: mypassword + +**Note:** It is recommended that you use only alphanumeric characters for the password. Special characters, such as `$/^&`, are not supported. + +The next step is to add the password to the appropriate configuration file, `$ACTIVEMQ_HOME/conf/credentials-enc.properties` by default. + +activemq.username=system +activemq.password=ENC(mYRkg+4Q4hua1kvpCCI2hg==) +guest.password=ENC(Cf3Jf3tM+UrSOoaKU50od5CuBa8rxjoL) +... +jdbc.password=ENC(eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp) + +Note that we used `ENC()` to wrap our encrypted passwords. You can mix plain and encrypted passwords in your properties files, so encrypted ones must be wrapped this way. + +Finally, you need to instruct your property loader to encrypt variables when it loads properties to the memory. Instead of standard property loader we'll use the special one (see `\$ACTIVEMQ_HOME/conf/activemq-security.xml`) to achieve this. + + + + + + + + + + + + + + + +With this configuration ActiveMQ will try to load your encryptor password from the `ACTIVEMQ_ENCRYPTION_PASSWORD` environment variable and then use it to decrypt passwords from `credential-enc.properties` file. + +Alternative is to use a simple variant and store encryptor password in the xml file, like this + + + + + + +but with that you'll lose the secrecy of the encryptor's secret. You may also consult [http://www.jasypt.org/advancedconfiguration.html](http://www.jasypt.org/advancedconfiguration.html) for more ideas on how to configure Jasypt. + +Finally, we can use properties like we'd normally do + + + + + + + + + +or + + + + + + + + + + +If you want to run the broker with this configuration, you need to do the following: + +* Set environment variable: + + $ export ACTIVEMQ\_ENCRYPTION\_PASSWORD=activemq + +* Start the broker: + + $ bin/activemq start xbean:conf/activemq-security.xml + +* Unset the environment variable: + + $ unset ACTIVEMQ\_ENCRYPTION\_PASSWORD + + +In this way your encryptor secret is never saved on your system and your encrypted passwords are safely stored in the configuration files. + diff --git a/enterprise-integration-patterns.md b/enterprise-integration-patterns.md new file mode 100644 index 0000000..2a80532 --- /dev/null +++ b/enterprise-integration-patterns.md @@ -0,0 +1,55 @@ +Apache ActiveMQ ™ -- Enterprise Integration Patterns + +[Features](features.html) > [Enterprise Integration Patterns](enterprise-integration-patterns.html) + + +Enterprise Integration Patterns +------------------------------- + +Version 5.0 onwards of Apache ActiveMQ comes complete with full support for the [Enterprise Integration Patterns](http://www.enterpriseintegrationpatterns.com/toc.html) (from the excellent book by [Gregor Hohpe](http://www.amazon.com/exec/obidos/search-handle-url/105-9796798-8100401?%5Fencoding=UTF8&search-type=ss&index=books&field-author=Gregor%20Hohpe) and [Bobby Woolf](http://www.amazon.com/exec/obidos/search-handle-url/105-9796798-8100401?%5Fencoding=UTF8&search-type=ss&index=books&field-author=Bobby%20Woolf)) via the [Apache Camel library](http://activemq.apache.org/camel/). + +You can easily add any of the supported [Enterprise Integration Patterns](http://activemq.apache.org/camel/enterprise-integration-patterns.html) into ActiveMQ (either on the JMS client or in the broker process) to support smart routing, transformation and a whole host of other powerful patterns. You can of course just embed [Camel library](http://activemq.apache.org/camel/) directly into your application, such as via [Spring](http://activemq.apache.org/camel/spring.html) as well.. + +This also means you can cleanly integrate all of the [Camel Components](http://activemq.apache.org/camel/components.html) into ActiveMQ so you can easily integrate with [CXF](http://activemq.apache.org/camel/cxf.html), [Files](http://activemq.apache.org/camel/file.html), [JBI](http://activemq.apache.org/camel/jbi.html), [JPA](http://activemq.apache.org/camel/jpa.html), [Mail](http://activemq.apache.org/camel/mail.html), [MINA](http://activemq.apache.org/camel/mina.html), [Quartz](http://activemq.apache.org/camel/quartz.html), [XMPP](http://activemq.apache.org/camel/xmpp.html) and [many other protocols and transports!](http://activemq.apache.org/camel/components.html) + +### Using EIP in the ActiveMQ Broker + +The broker's **activemq.xml** file comes already configured to support Camel; you just need to customize the routing rules. + +#### Writing EIP rules using Java code + +To use [Java code to write EIP routing rules](http://activemq.apache.org/camel/dsl.html), just put your classes on the classpath (such as in activemq/lib/myroutes/foo.jar). Then to get Camel to find your routes you need to edit the activemq.xml so that the **packages** attribute points to the package name (or a parent package name) to look for. + +For example if all your routes are in the package org.acme.cheese; such as org.acme.cheese.whatnot.MyRouter then you could edit the XML to be... + + + org.acme.cheese + + +#### Writing EIP rules using XML + +To use XML its even easier, as you can just embed whatever routing rules inside the element using Camel's [Spring XML format](http://activemq.apache.org/camel/xml-configuration.html). Note that the XML is way more verbose than the [Java DSL](http://activemq.apache.org/camel/dsl.html) but it is a bit simpler to deploy. e.g. for a trivial route... + + + + + + + + +### Using EIP in the JMS client + +You can use [Camel](http://activemq.apache.org/camel/) [Endpoints](http://activemq.apache.org/camel/endpoint.html) directly from your JMS client one of the following JMS destinations, depending on what JMS API you want it to use + +* [CamelDestination](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/camel/CamelDestination.html) +* [CamelQueue](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/camel/CamelQueue.html) +* [CamelTopic](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/camel/CamelTopic.html) + +You can then use this destination like any other JMS destination when sending or receiving messages! This means you can use any of the [large number of Camel components](http://activemq.apache.org/camel/components.html) from your JMS code, by just changing the Destination object! + +### See Also + +* [Enterprise Integration Patterns](http://activemq.apache.org/camel/enterprise-integration-patterns.html) +* [Camel Components](http://activemq.apache.org/camel/components.html) +* [Camel XML Reference](http://activemq.apache.org/camel/xml-reference.html) + diff --git a/errors-from-libstdla-on-solaris-10-using-the-gnu-compiler.md b/errors-from-libstdla-on-solaris-10-using-the-gnu-compiler.md new file mode 100644 index 0000000..a77de42 --- /dev/null +++ b/errors-from-libstdla-on-solaris-10-using-the-gnu-compiler.md @@ -0,0 +1,85 @@ +Apache ActiveMQ ™ -- Errors from libstd++.la on Solaris 10 using the GNU Compiler + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [Building FAQs](building-faqs.html) > [Solaris Platform](solaris-platform.html) > [Errors from libstd++.la on Solaris 10 using the GNU Compiler](errors-from-libstdla-on-solaris-10-using-the-gnu-compiler.html) + +On Solaris 10 the libstdc++.la file is empty which causes the build to fail. In order to fix this you must fill in the libstdc++.la file with the correct information. There are two versions, one for 32 bit and one for 64 bit. The following listings show the correct contents of these files respectively. + +From [Sun Forums](http://forum.java.sun.com/thread.jspa?threadID=5073150) + +/usr/sfw/lib/libstdc++.la + + +\# libstdc++.la - a libtool library file +\# Generated by ltmain.sh - GNU libtool 1.4a-GCC3.0 (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes) +# +\# Please DO NOT delete this file! +\# It is necessary for linking the library. + +\# The name that we can dlopen(3). +dlname='libstdc++.so.6' + +\# Names of this library. +library_names='libstdc++.so.6.0.3 libstdc++.so.6 libstdc++.so' + +\# The name of the static archive. +old_library='libstdc++.a' + +\# Libraries that this one depends upon. +dependency\_libs='-lc -lm -L/usr/sfw/lib -lgcc\_s' + +\# Version information for libstdc++. +current=6 +age=0 +revision=3 + +\# Is this an already installed library? +installed=yes + +\# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +\# Directory that this library needs to be installed in: +libdir='/usr/sfw/lib' + +/usr/sfw/lib/64/libstdc++.la + + +\# libstdc++.la - a libtool library file +\# Generated by ltmain.sh - GNU libtool 1.4a-GCC3.0 (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes) +# +\# Please DO NOT delete this file! +\# It is necessary for linking the library. + +\# The name that we can dlopen(3). +dlname='libstdc++.so.6' + +\# Names of this library. +library_names='libstdc++.so.6.0.3 libstdc++.so.6 libstdc++.so' + +\# The name of the static archive. +old_library='libstdc++.a' + +\# Libraries that this one depends upon. +dependency\_libs='-L/lib/64 -lc -lm -L/usr/sfw/lib/64 -lgcc\_s' + +\# Version information for libstdc++. +current=6 +age=0 +revision=3 + +\# Is this an already installed library? +installed=yes + +\# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +\# Directory that this library needs to be installed in: +libdir='/usr/sfw/lib/64' + +Note that this doesn't seem to get us all the way. For some reason the shared library dependencies can't seem to all be resolved so you must build only static libraries. This can be accomplished by passing the following to the configure script. + + +./configure --enable-shared=no + diff --git a/errors-saying-no-rule-to-make-target.md b/errors-saying-no-rule-to-make-target.md new file mode 100644 index 0000000..7b6eb2b --- /dev/null +++ b/errors-saying-no-rule-to-make-target.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- Errors saying "no rule to make target" + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [Building FAQs](building-faqs.html) > [Solaris Platform](solaris-platform.html) > [Errors saying "no rule to make target"](errors-saying-no-rule-to-make-target.html) + +If you get errors when building on solaris that indicate that there is no rule to make a target file one thing to check is if the file is really in your build tree. If you extracted the source archive with the sun Tar command then you may be missing files. Sun uses an old version of Tar that doesn't work well with the archives that we create using new versions of GNU Tar. If you don't have GNU Tar installed then another work around is to grab the .zip file and use the gunzip command to extract it. + diff --git a/errors.md b/errors.md new file mode 100644 index 0000000..094882a --- /dev/null +++ b/errors.md @@ -0,0 +1,39 @@ +Apache ActiveMQ ™ -- Errors + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) + + +Questions on specific kinds of errors. If you have seen a specific exception then check the [Exceptions](exceptions.html) + +* [Could not find PacketReader for packet type - UNKNOWN PACKET TYPE](could-not-find-packetreader-for-packet-type-unknown-packet-type.html) +* [Exceptions](exceptions.html) + * [certificate_unknown](certificateunknown.html) + * [IOException - could not find class for resource](ioexception-could-not-find-class-for-resource.html) + * [java.io.InterruptedIOException](javaiointerruptedioexception.html) + * [java.io.IOException Failed to create database 'derbydb', see the next exception for details](javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.html) + * [java.lang.NoSuchMethodError](javalangnosuchmethoderror.html) + * [java.lang.NoSuchMethodException org.activemq.ra.ActiveMQResourceAdapter.setUseEmbeddedBroker](javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.html) + * [java.lang.OutOfMemory](javalangoutofmemory.html) + * [javax.jms.JMSException - Wire format negociation timeout - peer did not send his wire format.](javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.html) + * [JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI () needs 2.1 API.](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.html) + * [JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (xxx) needs 2.1 API](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.html) + * [Journal is already opened by this application](journal-is-already-opened-by-this-application.html) + * [NoClassDefFoundError - org.springframework.core.io.Resource](noclassdeffounderror-orgspringframeworkcoreioresource.html) + * [No suitable driver](no-suitable-driver.html) +* [I am having problems with the Spring JmsTemplate](i-am-having-problems-with-the-spring-jmstemplate.html) +* [I am not receiving any messages, what is wrong](i-am-not-receiving-any-messages-what-is-wrong.html) +* [I cannot connect to ActiveMQ from JConsole](i-cannot-connect-to-activemq-from-jconsole.html) +* [I do not receive messages in my second consumer](i-do-not-receive-messages-in-my-second-consumer.html) +* [I get errors building the code whats wrong](i-get-errors-building-the-code-whats-wrong.html) +* [log4j-WARN No appenders could be found for logger](log4j-warn-no-appenders-could-be-found-for-logger.html) +* [Multicast - Watch out for IPV6 vs IPV4 support on your operating system or distribution or network](multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.html) +* [My producer blocks](my-producer-blocks.html) +* [onMessage method of MessageListener is never called](onmessage-method-of-messagelistener-is-never-called.html) +* [Resource Adapter does not seem to pool connections](resource-adapter-does-not-seem-to-pool-connections.html) +* [Slow networks drop large messages](slow-networks-drop-large-messages.html) +* [The Broker will not start](the-broker-will-not-start.html) +* [The vm transport starts a broker before my configured broker starts](the-vm-transport-starts-a-broker-before-my-configured-broker-starts.html) +* [Why do I not get all of the messages I sent](why-do-i-not-get-all-of-the-messages-i-sent.html) +* [Why do I not receive messages on my durable topic subscription](why-do-i-not-receive-messages-on-my-durable-topic-subscription.html) +* [Why do KahaDB log files remain after cleanup](why-do-kahadb-log-files-remain-after-cleanup.html) + diff --git a/example-testing-scenario.md b/example-testing-scenario.md new file mode 100644 index 0000000..4e25ef7 --- /dev/null +++ b/example-testing-scenario.md @@ -0,0 +1,129 @@ +Apache ActiveMQ ™ -- Example Testing Scenario + +[Developers](developers.html) > [Integration Tests](integration-tests.html) > [Example Testing Scenario](example-testing-scenario.html) + + +ActiveMQ Performance Module +--------------------------- + +* [Users Manual](activemq-performance-module-users-manual.html) + +Example Testing Scenario +------------------------ + +This page gives a simple example of the kinds of thing we wanna do. + +Assuming that all the test code is within a single Maven POM for now (e.g. activemq-integration-test version 4.0) which will deal with all the classpath issues. + +We'll try describe the different ways this could work and give each implementation style a name so we can start revving different ways to solve this... + +### Headless build + +In this version there is no 'controller'; each build is considered to be a totally separate build. + +Each build knows what to do; each test case generates an XML file which becomes a named deployment artifact. + +e.g. imagine the following builds (which are really just running Java executables within a POM for classpath) + +Box + +Description + +Command line + +hostB + +Broker + +java org.apache.activemq.broker.console.Main tcp://$hostA:61616 + +hostC + +Consumer + +java org.apache.activemq.test.ConsumerMain --message-count=5000 --queue=true --destination=org.foo.bar tcp://$hostA:61616 + +hostD + +Producer + +java org.apache.activemq.test.ProducerMain --message-count=5000 --queue=true --destination=org.foo.bar tcp://$hostA:61616 + +In the above example - each build has to kinda wait for other things to start up to some time period. e.g. the producer and consumer wanna keep around for say 5 minutes trying to connect to the broker as they can be started in any order. + +Ideally we might wanna run this as 3 maven commands as follows... + +mvn activemq:broker +mvn activemq:perf-producer -Dmessage-count=5000 -Dqueue=true -Ddestination=org.foo.bar -Durl=tcp://$hostA:61616 +mvn activemq:perf-consumer -Dmessage-count=5000 -Dqueue=true -Ddestination=org.foo.bar -Durl=tcp://$hostA:61616 + +### Controller build + +The idea with the controller version is one of the tests (which is spun off first to try help) tries to coordinate among the test nodes. + +e.g. we could spin the controller first... + +Box + +Description + +Command line + +hostA + +Controller + +mvn test + +Then the test case fires off these processes while communicating with them... + +Box + +Description + +Command line + +hostB + +Broker + +java org.apache.activemq.broker.console.Main tcp://$hostA:61616 + +hostC + +Consumer + +java org.apache.activemq.test.ConsumerMain --message-count=5000 --queue=true --destination=org.foo.bar tcp://$hostA:61616 + +hostD + +Producer + +java org.apache.activemq.test.ProducerMain --message-count=5000 --queue=true --destination=org.foo.bar tcp://$hostA:61616 + +### Controller factory build + +Fairly soon we're gonna have tons of builds firing off. We may want a single project to build with a raft of different test suites. Each single distributed integration/system/performance test might have many sub-builds (processes) to run. + +So we might want to run a single JUnit test case which fires off different remote builds/processes. + +e.g. + +public class PerformanceTestSuite { + public void testSmallMessages() { + buildQueue.start("broker", ""); + buildQueue.start("consumer", "--messageCount=1000"); + buildQueue.start("producer", "--messageCount=1000"); + buildQueue.join(5 * MINUTES); + } + + public void testLargeMessages() { + buildQueue.start("broker", ""); + buildQueue.start("consumer", "--messageCount=1000 --messageSize=1M"); + buildQueue.start("producer", "--messageCount=1000 --messageSize=1M"); + buildQueue.join(10 * MINUTES); + } +} + +So these 2 test cases in JUnit in the controller build will each start 3 separate remote builds on the queue and wait for them to complete - or terminate them + diff --git a/example.md b/example.md new file mode 100644 index 0000000..c0e1942 --- /dev/null +++ b/example.md @@ -0,0 +1,426 @@ +Apache ActiveMQ ™ -- Example + +[Index](index.html) > [Example](example.html) + +ActiveMQ-CPP in Action +---------------------- + +In the example below we create two classes **HolloWorldConsumer** and **HelloWorldProducer** each of which runs in its own thread. The Producer sends TextMessage objects via a **MessageProducer** instance to the ActiveMQ broker. The Consumer receives messages asynchronously from the broker on the same Topic or Queue as the Producer looking for a set number of TextMessages to arrive. + +The following example is taken from the source code and shows a basic usage scenario of ActiveMQ-CPP, you can find other examples in the examples folder that ships with the source distribution of ActiveMQ-CPP: + +**main.cpp** + +/\* + \* Licensed to the Apache Software Foundation (ASF) under one or more + \* contributor license agreements. See the NOTICE file distributed with + \* this work for additional information regarding copyright ownership. + \* The ASF licenses this file to You under the Apache License, Version 2.0 + \* (the "License"); you may not use this file except in compliance with + \* the License. You may obtain a copy of the License at + \* + \* http://www.apache.org/licenses/LICENSE-2.0 + \* + \* Unless required by applicable law or agreed to in writing, software + \* distributed under the License is distributed on an "AS IS" BASIS, + \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + \* See the License for the specific language governing permissions and + \* limitations under the License. + */ + +// START SNIPPET: demo + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace activemq::core; +using namespace decaf::util::concurrent; +using namespace decaf::util; +using namespace decaf::lang; +using namespace cms; +using namespace std; + +class HelloWorldProducer : public Runnable { +private: + + Connection* connection; + Session* session; + Destination* destination; + MessageProducer* producer; + int numMessages; + bool useTopic; + bool sessionTransacted; + std::string brokerURI; + +private: + + HelloWorldProducer(const HelloWorldProducer&); + HelloWorldProducer& operator=(const HelloWorldProducer&); + +public: + + HelloWorldProducer(const std::string& brokerURI, int numMessages, bool useTopic = false, bool sessionTransacted = false) : + connection(NULL), + session(NULL), + destination(NULL), + producer(NULL), + numMessages(numMessages), + useTopic(useTopic), + sessionTransacted(sessionTransacted), + brokerURI(brokerURI) { + } + + virtual ~HelloWorldProducer(){ + cleanup(); + } + + void close() { + this->cleanup(); + } + + virtual void run() { + + try { + + // Create a ConnectionFactory + auto_ptr connectionFactory( + ConnectionFactory::createCMSConnectionFactory(brokerURI)); + + // Create a Connection + connection = connectionFactory->createConnection(); + connection->start(); + + // Create a Session + if (this->sessionTransacted) { + session = connection->createSession(Session::SESSION_TRANSACTED); + } else { + session = connection->createSession(Session::AUTO_ACKNOWLEDGE); + } + + // Create the destination (Topic or Queue) + if (useTopic) { + destination = session->createTopic("TEST.FOO"); + } else { + destination = session->createQueue("TEST.FOO"); + } + + // Create a MessageProducer from the Session to the Topic or Queue + producer = session->createProducer(destination); + producer->setDeliveryMode(DeliveryMode::NON_PERSISTENT); + + // Create the Thread Id String + string threadIdStr = Long::toString(Thread::currentThread()->getId()); + + // Create a messages + string text = (string) "Hello world! from thread " + threadIdStr; + + for (int ix = 0; ix < numMessages; ++ix) { + std::auto_ptr message(session->createTextMessage(text)); + message->setIntProperty("Integer", ix); + printf("Sent message #%d from thread %s\\n", ix + 1, threadIdStr.c_str()); + producer->send(message.get()); + } + + } catch (CMSException& e) { + e.printStackTrace(); + } + } + +private: + + void cleanup() { + + if (connection != NULL) { + try { + connection->close(); + } catch (cms::CMSException& ex) { + ex.printStackTrace(); + } + } + + // Destroy resources. + try { + delete destination; + destination = NULL; + delete producer; + producer = NULL; + delete session; + session = NULL; + delete connection; + connection = NULL; + } catch (CMSException& e) { + e.printStackTrace(); + } + } +}; + +class HelloWorldConsumer : public ExceptionListener, + public MessageListener, + public Runnable { + +private: + + CountDownLatch latch; + CountDownLatch doneLatch; + Connection* connection; + Session* session; + Destination* destination; + MessageConsumer* consumer; + long waitMillis; + bool useTopic; + bool sessionTransacted; + std::string brokerURI; + +private: + + HelloWorldConsumer(const HelloWorldConsumer&); + HelloWorldConsumer& operator=(const HelloWorldConsumer&); + +public: + + HelloWorldConsumer(const std::string& brokerURI, int numMessages, bool useTopic = false, bool sessionTransacted = false, int waitMillis = 30000) : + latch(1), + doneLatch(numMessages), + connection(NULL), + session(NULL), + destination(NULL), + consumer(NULL), + waitMillis(waitMillis), + useTopic(useTopic), + sessionTransacted(sessionTransacted), + brokerURI(brokerURI) { + } + + virtual ~HelloWorldConsumer() { + cleanup(); + } + + void close() { + this->cleanup(); + } + + void waitUntilReady() { + latch.await(); + } + + virtual void run() { + + try { + + // Create a ConnectionFactory + auto_ptr connectionFactory( + ConnectionFactory::createCMSConnectionFactory(brokerURI)); + + // Create a Connection + connection = connectionFactory->createConnection(); + connection->start(); + connection->setExceptionListener(this); + + // Create a Session + if (this->sessionTransacted == true) { + session = connection->createSession(Session::SESSION_TRANSACTED); + } else { + session = connection->createSession(Session::AUTO_ACKNOWLEDGE); + } + + // Create the destination (Topic or Queue) + if (useTopic) { + destination = session->createTopic("TEST.FOO"); + } else { + destination = session->createQueue("TEST.FOO"); + } + + // Create a MessageConsumer from the Session to the Topic or Queue + consumer = session->createConsumer(destination); + + consumer->setMessageListener(this); + + std::cout.flush(); + std::cerr.flush(); + + // Indicate we are ready for messages. + latch.countDown(); + + // Wait while asynchronous messages come in. + doneLatch.await(waitMillis); + + } catch (CMSException& e) { + // Indicate we are ready for messages. + latch.countDown(); + e.printStackTrace(); + } + } + + // Called from the consumer since this class is a registered MessageListener. + virtual void onMessage(const Message* message) { + + static int count = 0; + + try { + count++; + const TextMessage* textMessage = dynamic_cast (message); + string text = ""; + + if (textMessage != NULL) { + text = textMessage->getText(); + } else { + text = "NOT A TEXTMESSAGE!"; + } + + printf("Message #%d Received: %s\\n", count, text.c_str()); + + } catch (CMSException& e) { + e.printStackTrace(); + } + + // Commit all messages. + if (this->sessionTransacted) { + session->commit(); + } + + // No matter what, tag the count down latch until done. + doneLatch.countDown(); + } + + // If something bad happens you see it here as this class is also been + // registered as an ExceptionListener with the connection. + virtual void onException(const CMSException& ex AMQCPP_UNUSED) { + printf("CMS Exception occurred. Shutting down client.\\n"); + ex.printStackTrace(); + exit(1); + } + +private: + + void cleanup() { + if (connection != NULL) { + try { + connection->close(); + } catch (cms::CMSException& ex) { + ex.printStackTrace(); + } + } + + // Destroy resources. + try { + delete destination; + destination = NULL; + delete consumer; + consumer = NULL; + delete session; + session = NULL; + delete connection; + connection = NULL; + } catch (CMSException& e) { + e.printStackTrace(); + } + } +}; + +int main(int argc AMQCPP\_UNUSED, char* argv\[\] AMQCPP\_UNUSED) { + + activemq::library::ActiveMQCPP::initializeLibrary(); + { + std::cout << "=====================================================\\n"; + std::cout << "Starting the example:" << std::endl; + std::cout << "-----------------------------------------------------\\n"; + + + // Set the URI to point to the IP Address of your broker. + // add any optional params to the url to enable things like + // tightMarshalling or tcp logging etc. See the CMS web site for + // a full list of configuration options. + // + // http://activemq.apache.org/cms/ + // + // Wire Format Options: + // ========================= + // Use either stomp or openwire, the default ports are different for each + // + // Examples: + // tcp://127.0.0.1:61616 default to openwire + // tcp://127.0.0.1:61613?wireFormat=stomp use stomp instead + // + // SSL: + // ========================= + // To use SSL you need to specify the location of the trusted Root CA or the + // certificate for the broker you want to connect to. Using the Root CA allows + // you to use failover with multiple servers all using certificates signed by + // the trusted root. If using client authentication you also need to specify + // the location of the client Certificate. + // + // System::setProperty( "decaf.net.ssl.keyStore", "/client.pem" ); + // System::setProperty( "decaf.net.ssl.keyStorePassword", "password" ); + // System::setProperty( "decaf.net.ssl.trustStore", "/rootCA.pem" ); + // + // The you just specify the ssl transport in the URI, for example: + // + // ssl://localhost:61617 + // + std::string brokerURI = + "failover:(tcp://localhost:61616)"; + + //============================================================ + // set to true to use topics instead of queues + // Note in the code above that this causes createTopic or + // createQueue to be used in both consumer an producer. + //============================================================ + bool useTopics = true; + bool sessionTransacted = false; + int numMessages = 2000; + + long long startTime = System::currentTimeMillis(); + + HelloWorldProducer producer(brokerURI, numMessages, useTopics); + HelloWorldConsumer consumer(brokerURI, numMessages, useTopics, sessionTransacted); + + // Start the consumer thread. + Thread consumerThread(&consumer); + consumerThread.start(); + + // Wait for the consumer to indicate that its ready to go. + consumer.waitUntilReady(); + + // Start the producer thread. + Thread producerThread(&producer); + producerThread.start(); + + // Wait for the threads to complete. + producerThread.join(); + consumerThread.join(); + + long long endTime = System::currentTimeMillis(); + double totalTime = (double)(endTime - startTime) / 1000.0; + + consumer.close(); + producer.close(); + + std::cout << "Time to completion = " << totalTime << " seconds." << std::endl; + std::cout << "-----------------------------------------------------\\n"; + std::cout << "Finished with the example." << std::endl; + std::cout << "=====================================================\\n"; + + } + activemq::library::ActiveMQCPP::shutdownLibrary(); +} + +// END SNIPPET: demo + diff --git a/examples.md b/examples.md new file mode 100644 index 0000000..049c408 --- /dev/null +++ b/examples.md @@ -0,0 +1,88 @@ +Apache ActiveMQ ™ -- Examples + +[Using ActiveMQ](using-activemq.html) > [Examples](examples.html) + + +Since version **5.12.0**, Apache ActiveMQ comes with the new tool that can be used to produce and consume messages from the broker. + +Prerequisites +------------- + +Before running the examples you should try [running a JMS broker](run-broker.html) on your machine. Follow the [Installation](installation.html) instructions to use a binary distribution of ActiveMQ. To run the broker in a command shell, type: + +bin/activemq console + +This starts up ActiveMQ. + +Running +------- + +From the [command line](unix-shell-script.html) you can run + +${ACTIVEMQ_HOME}/bin/activemq producer +${ACTIVEMQ_HOME}/bin/activemq consumer + +If you have `activemq-all` jar available you can achieve the same with + +java -jar activemq-all-5.x.x.jar producer +java -jar activemq-all-5.x.x.jar consumer + +If you run inside [Karaf](osgi-integration.html), you can run the commands as + +activemq:producer +activemq:consumer + +Options +------- + +For all options on the commands, run them with `--help` parameter. The up to date, options for [producer](https://github.com/apache/activemq/blob/master/activemq-console/src/main/resources/org/apache/activemq/console/command/producer.txt) and [consumer](https://github.com/apache/activemq/blob/master/activemq-console/src/main/resources/org/apache/activemq/console/command/consumer.txt) can be found in the source. + +Examples +-------- + +Here are a couple of examples of more advanced features. + +To send a text message with custom text use + +bin/activemq producer --message "My message" --messageCount 1 + +To send byte message of custom length use + +bin/activemq producer --messageSize 100 --messageCount 1 + +To send a text message with content obtained from an url + +bin/activemq producer --payloadUrl http://activemq.apache.org/schema/core/activemq-core.xsd --messageCount 1 + +To consume in transaction use + +bin/activemq consumer --transacted true + +To use client acknowledgment use + +bin/activemq consumer --ackMode CLIENT_ACKNOWLEDGE + +To use durable topic subscribers use + +bin/activemq consumer --durable true --clientId example --destination topic://TEST + +Old examples +------------ + +In older versions of ActiveMQ, the corresponding examples were located in `examples/` or `examples/openwire/swissarmy/` directories, where you can do the similar tasks with an ant script. + +ant producer +ant consumer + +Other examples +-------------- + +In `examples/` directory (depending on the version) you can find more examples of using the broker with variety of protocols (mqtt, amqp, ...) and clients (Java, Ruby, JavaScript, ...), so it's the good place to start learning. Also, `examples/conf/` directory contains a lot of different configuration examples that you can use as a starting point for your deployment. + +See Also +-------- + +* [Web Samples](web-samples.html) +* [Web Console](web-console.html) +* [JMX](jmx.html) + diff --git a/exceptions.md b/exceptions.md new file mode 100644 index 0000000..0089a1b --- /dev/null +++ b/exceptions.md @@ -0,0 +1,21 @@ +Apache ActiveMQ ™ -- Exceptions + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) + + +Questions Java Exceptions (when you get a nasty stack trace while working with ActiveMQ) + +* [certificate_unknown](certificateunknown.html) +* [IOException - could not find class for resource](ioexception-could-not-find-class-for-resource.html) +* [java.io.InterruptedIOException](javaiointerruptedioexception.html) +* [java.io.IOException Failed to create database 'derbydb', see the next exception for details](javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.html) +* [java.lang.NoSuchMethodError](javalangnosuchmethoderror.html) +* [java.lang.NoSuchMethodException org.activemq.ra.ActiveMQResourceAdapter.setUseEmbeddedBroker](javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.html) +* [java.lang.OutOfMemory](javalangoutofmemory.html) +* [javax.jms.JMSException - Wire format negociation timeout - peer did not send his wire format.](javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.html) +* [JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI () needs 2.1 API.](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.html) +* [JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (xxx) needs 2.1 API](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.html) +* [Journal is already opened by this application](journal-is-already-opened-by-this-application.html) +* [NoClassDefFoundError - org.springframework.core.io.Resource](noclassdeffounderror-orgspringframeworkcoreioresource.html) +* [No suitable driver](no-suitable-driver.html) + diff --git a/exclusive-consumer.md b/exclusive-consumer.md new file mode 100644 index 0000000..62c3e18 --- /dev/null +++ b/exclusive-consumer.md @@ -0,0 +1,28 @@ +Apache ActiveMQ ™ -- Exclusive Consumer + +[Features](features.html) > [Consumer Features](consumer-features.html) > [Exclusive Consumer](exclusive-consumer.html) + + +### Background + +We maintain the order of messages in queues and dispatch them to consumers in order. However if you have multiple JMS Sessions and MessageConsumer instances consuming from the same queue (whether in the same JVM or not), you will loose the guarantee of processing the messages in order; since the messages with be processed concurrently in different threads. + +Sometimes its important to guarantee the order in which messages are processed. e.g. you don't want to process the update to an order until an insert has been done; or to go backwards in time, overwriting an newer update of an order with an older one etc. + +So what folks have to do in J2EE clusters is often to _pin_ one particular JVM in the cluster to have _one_ consumer on the queue to avoid loosing ordering. The problem with this is that if the particular pinned JVM goes down, no one is processing the queue any more, which can be problem. + +### Exclusive Consumer + +We have a new feature in 4.x called Exclusive Consumer or Exclusive Queues which avoids the end user having to _pin_ anything. The broker will pick a single MessageConsumer to get all the messages for a queue to ensure ordering. If that consumer fails, the broker will auto failover and choose another consumer. + +So the effect is a heterogeneous J2EE cluster where each JVM has the same setup and configuration; the broker is choosing one consumer to be the _master_ and send all the messages to it in order until it dies; then you get immediate failover to another consumer. + +For those who've struggled with pinning JMS consumers in J2EE clusters you'll immediately realize how useful this is to making clustered, high available distributed services. + +### Example + +An Exclusive Consumer is created using [Destination Options](destination-options.html) as follows: + +queue = new ActiveMQQueue("TEST.QUEUE?consumer.exclusive=true"); +consumer = session.createConsumer(queue); + diff --git a/extending-guide.md b/extending-guide.md new file mode 100644 index 0000000..606c933 --- /dev/null +++ b/extending-guide.md @@ -0,0 +1,184 @@ + + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +Apollo 1.7.1 Extending Guide +============================ + +* [Overview](#Overview) +* * [Adding your Extensions to the Apollo Class Path](#Adding_your_Extensions_to_the_Apollo_Class_Path) + * [Extension Discovery](#Extension_Discovery) + * [Extending the Data Model](#Extending_the_Data_Model) + * * [Polymorphic Data/Configuraiton objects Objects](#Polymorphic_Data_Configuraiton_objects_Objects) + * [Using a custom `VirtualHost` implementation](#Using_a_custom__code_VirtualHost__code__implementation) + * [Plugging into the Broker Lifecycle](#Plugging_into_the_Broker_Lifecycle) + +Overview +-------- + +Apollo support being extended in several ways. This guide documents all the supported extension points. + +### Adding your Extensions to the Apollo Class Path + +Just create a `.jar` out of out code and add it to the `${apollo.home}/lib` directory. When Apollo restarts it will add the new jar to it's class path. + +### Extension Discovery + +Apollo discovers your extensions by looking for extension resource files in all the jar files in it's classpath. For example, the `apollo-broker` jar file contains the following a resource file `META-INF/services/org.apache.activemq.apollo/protocol-codec-factory.index` It contains the class names of the protocol codec factories that are implemented in the `broker-core` module. It's contents are: + + org.apache.activemq.apollo.broker.protocol.AnyProtocolFactory + org.apache.activemq.apollo.broker.protocol.UdpProtocolFactory + org.apache.activemq.apollo.broker.protocol.RawProtocolFactory + +All three of the the listed classes implement the [`ProtocolFactory`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.protocol.ProtocolFactory) interface. Here's a list of extension points supported by Apollo: + +* Data Model: `META-INF/services/org.apache.activemq.apollo/dto-module.index` → [`org.apache.activemq.apollo.util.DtoModule`](api/apollo-util/index.html#org.apache.activemq.apollo.util.DtoModule) + +* Transports: `META-INF/services/org.apache.activemq.apollo/transport-factory.index` → [`org.apache.activemq.apollo.broker.transport.TransportFactory.Provider`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.transport.TransportFactory$$Provider) + +* Protocols: `META-INF/services/org.apache.activemq.apollo/protocol-factory.index` → [`org.apache.activemq.apollo.broker.protocol.ProtocolFactory`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.protocol.ProtocolFactory) + +* Broker Factories: `META-INF/services/org.apache.activemq.apollo/broker-factory.index` → [`org.apache.activemq.apollo.broker.BrokerFactoryTrait`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.BrokerFactoryTrait) + +* Connectors: `META-INF/services/org.apache.activemq.apollo/connector-factory.index` → [`org.apache.activemq.apollo.broker.ConnectorFactory`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.ConnectorFactory) + +* Virtual Hosts: `META-INF/services/org.apache.activemq.apollo/virtual-host-factory.index` → [`org.apache.activemq.apollo.broker.VirtualHostFactory`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.VirtualHostFactory) + +* Route Listeners: `META-INF/services/org.apache.activemq.apollo/router-listener-factory.index` → [`org.apache.activemq.apollo.broker.RouterListenerFactory`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.RouterListenerFactory) + +* Stores: `META-INF/services/org.apache.activemq.apollo/store-factory.index` → [`org.apache.activemq.apollo.broker.store.StoreFactory`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.store.StoreFactory) + +* Web Admin Components: `META-INF/services/org.apache.activemq.apollo/web-module.index` → `org.apache.activemq.apollo.web.WebModule` + +* Web Servers → `META-INF/services/org.apache.activemq.apollo/web-server-factory.index`→ [`org.apache.activemq.apollo.broker.web.WebServerFactory`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.web.WebServerFactory) + + +### Extending the Data Model + +If you want to extend the Apollo xml configuration model to understand some custom JAXB object you have defined in your own packages, then you need to implement a `Module` class and then create a `META-INF/services/org.apache.activemq.apollo/dto-module.index` resource file in which you list it's class name. + +Example module class: + + + package org.example + import org.apache.activemq.apollo.util.DtoModule + + class Module extends DtoModule { + + def dto_package = "org.apache.activemq.apollo.broker.store.leveldb.dto" + def extension_classes = Array(classOf[LevelDBStoreDTO], classOf[LevelDBStoreStatusDTO]) + + } + + +Example `META-INF/services/org.apache.activemq.apollo/dto-module.index` resource: + + org.example.Module + +#### Polymorphic Data/Configuraiton objects Objects + +The following objects in the Apollo data model can be extended: + +* [`VirtualHostDTO`](api/apollo-dto/org/apache/activemq/apollo/dto/VirtualHostDTO.html) +* [`ConnectorTypeDTO`](api/apollo-dto/org/apache/activemq/apollo/dto/ConnectorTypeDTO.html) +* [`ConnectionStatusDTO`](api/apollo-dto/org/apache/activemq/apollo/dto/ConnectionStatusDTO.html) +* [`ProtocolDTO`](api/apollo-dto/org/apache/activemq/apollo/dto/ProtocolDTO.html) +* [`StoreDTO`](api/apollo-dto/org/apache/activemq/apollo/dto/StoreDTO.html) +* [`StoreStatusDTO`](api/apollo-dto/org/apache/activemq/apollo/dto/StoreStatusDTO.html) + +### Using a custom `VirtualHost` implementation + +Virtual hosts control the lifescycle of destinations and how producers and consumers are connected to those destinations. You can subclass the default virtual host implemenation to override the default behaviour that Apollo provides. + +To create your own VirtualHost extension, you first extend the [`org.apache.activemq.apollo.broker.VirtualHost`](api/apollo-broker/index.html#org.apache.activemq.apollo.broker.VirtualHost) class and override it's implemenation suite your needs. Example: + + package example; + class MyVirtualHost(broker: Broker, id:String) extends VirtualHost(broker, id) { + // ... todo: override + } + +Then, to allow an `apollo.xml` configration file you your extended version of the virtual host you need to extend the [`VirtualHostDTO`](api/apollo-dto/org/apache/activemq/apollo/dto/VirtualHostDTO.html) class to define a new XML emlement for your new virtual host type. + + package example; + @XmlRootElement(name = "my_virtual_host") + @XmlAccessorType(XmlAccessType.FIELD) + class MyVirtualHostDTO extends VirtualHostDTO { + // example config attribute + @XmlAttribute(name="trace") + public Boolean trace; + } + +Since this is extending the data model, we follow the direction in the ['Extending the Data Model'](#Extending_the_Data_Model) section of this guide and add a `Module` class: + + package example; + class Module extends DtoModule { + def dto_package = "example" + def extension_classes = Array(classOf[MyVirtualHostDTO]) + } + +and a `META-INF/services/org.apache.activemq.apollo/dto-module.index` resource file containing: + + example.Module + +Now that we can define an XML element to configure the custom virtual host and create it, lets define a factory class which will be used to create a `MyVirtualHost` when a `` xml element is used in the configuration file: + + package example; + object MyVirtualHostFactory extends VirtualHostFactory { + + def create(broker: Broker, dto: VirtualHostDTO): VirtualHost = dto match { + case dto:MyVirtualHostDTO => + val rc = new MyVirtualHostDTO(broker, dto.id) + rc.config = dto + rc + case _ => null + } + } + +and a `META-INF/services/org.apache.activemq.apollo/virtual-host-factory.index` resource file containing: + + example.MyVirtualHostFactory + +### Plugging into the Broker Lifecycle + +You can implement custom [Service](api/apollo-util/index.html#org.apache.activemq.apollo.util.Service) objects which get started / stopped when the broker starts and stops. Once you have packaged your custom service, and added it to the Apollo class path, you can update the `apollo.xml` to add the service so it gets started when apollo starts: + + + + + +The `id` attribute is a unique service name of your service, and the `kind` attribute is the class name of your service. + +If your service needs a reference to the Broker object which is running in, add the following field definition to your class: + + + var broker:Broker = null + + +The broker instance will be injected into your class instance before it gets started. + +Your service can also get reference to to the configuration element used to define it if it defines the following field. + + + var config: CustomServiceDTO + + +This field will also get injected before getting started. The `CustomServiceDTO.other` field will contain any additional configuration elements defined within service element. For example, if you configured the service as follows: + + + + + google.com + + + + +Then you could access the options DOM element using: + + + val options = config.other.get(1).asInstanceOf[Element] + + +If you had defined JAXB object mappings for the `` class then `config` will hold that object instead of generic DOM `Element`. \ No newline at end of file diff --git a/failover-transport-reference.md b/failover-transport-reference.md new file mode 100644 index 0000000..2c0ea8d --- /dev/null +++ b/failover-transport-reference.md @@ -0,0 +1,253 @@ +Apache ActiveMQ ™ -- Failover Transport Reference + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Failover Transport Reference](failover-transport-reference.html) + + +### The Failover Transport + +The Failover transport layers reconnect logic on top of any of the other transports. The configuration syntax allows you to specify any number of composite URIs. The Failover transport randomly chooses one of the composite URIs and attempts to establish a connection to it. If it does not succeed, or if it subsequently fails, a new connection is established choosing one of the other URIs randomly from the list. + +Configuration Syntax + +`**failover:(uri1,...,uriN)?transportOptions&nestedURIOptions**` + +or + +`**failover:uri1,...,uriN**` + +Example: + +failover:(tcp://localhost:61616,tcp://remotehost:61616)?initialReconnectDelay=100 + +#### Transport Options + +Option Name + +Default Value + +Description + +`backup` + +`false` + +Initialize and hold a second transport connection - to enable fast failover. + +`initialReconnectDelay` + +`10` + +The delay (in ms) before the _first_ reconnect attempt. + +`maxCacheSize` + +`131072` + +Size in bytes for the cache of tracked messages. + +Applicable only if **`trackMessages`** is **`true`**. + +`maxReconnectAttempts` + +`-1 | 0` + +**From ActiveMQ 5.6**: default is **`-1`**, retry forever. **`0`** means disables re-connection, e.g: just try to connect once. +**Before ActiveMQ 5.6**: default is **`0`**, retry forever. +**All ActiveMQ versions**: a value **`>0`** denotes the maximum number of reconnect attempts before an error is sent back to the client. + +`maxReconnectDelay` + +`30000` + +The maximum delay (in ms) between the _second and subsequent_ reconnect attempts. + +`nested.*` + +`null` + +**From ActiveMQ 5.9:** common URI options that will be applied to each URI in the list**.** + +`randomize` + +`true` + +If **`true`**, choose a URI at random from the list to use for reconnect. + +`reconnectDelayExponent` + +`2.0` + +The exponent used during exponential back-off attempts. + +`reconnectSupported` + +`true` + +Determines whether the client should respond to broker **`ConnectionControl`** events with a reconnect (see: **`rebalanceClusterClients`).** + +`startupMaxReconnectAttempts` + +`-1` + +A value of **`-1`** denotes that the number of connection attempts at startup should be unlimited. + +A value of  **`>=0`** denotes the number of reconnect attempts at startup that will be made after which an error is sent back to the client when the client makes a subsequent reconnect attempt. + +**Note**: once successfully connected the `**maxReconnectAttempts**` option prevails. + +`timeout` + +`-1` + +**From ActiveMQ 5.3**: set the timeout on send operations (in ms) without interruption of re-connection process.  + +`trackMessages` + +`false` + +Keep a cache of in-flight messages that will flushed to a broker on reconnect. + +`updateURIsSupported` + +`true` + +**From** **ActiveMQ 5.4:** determines whether the client should accept updates from the broker to its list of known URIs. + +`updateURIsURL` + +`null` + +**From ActiveMQ 5.4:** a URL (or path to a local file) to a text file containing a comma separated list of URIs to use for reconnect in the case of failure. + +`useExponentialBackOff` + +`true` + +If **`true`** an exponential back-off is used between reconnect attempts. + +`warnAfterReconnectAttempts` + +`10` + +**From ActiveMQ 5.10:** a value **`>0`** specifies the number of reconnect attempts before a warning is logged. A logged warning indicates that there is no current connection but re-connection is being attempted. + +A value of **`<=0`** disables the logging of warnings about reconnect attempts.  + +#### Using Randomize + +The Failover transport chooses a URI at random by default. This effectively load-balances clients over multiple brokers. However, to have a client connect to a primary first and only connect to a secondary backup broker when the primary is unavailable, set **`randomize=false`**. + +Example: + +failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false + +##### Notes + +Under the Failover transport send operations will, by default, block indefinitely when the broker becomes unavailable. There are two options available for handling this scenario. First, either set a [TransportListener](http://activemq.apache.org/maven/apidocs/org/apache/activemq/transport/TransportListener.html) directly on the [ActiveMQConnectionFactory](http://activemq.apache.org/maven/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html), so that it is in place before any request that may require a network hop or second, set the **`timeout`** option. The **`timeout`** option causes the current send operation to fail after the specified timeout. + +Example: + +failover:(tcp://primary:61616)?timeout=3000 + +In this example if the connection isn't established the send operation will timeout after 3 seconds. It is important to note that the connection _is not killed_ when a timeout occurs. It is possible, therefore, to resend the affected message(s) later using the _same_ connection once a broker becomes available. + +##### Transactions + +The Failover transport tracks transactions by default. In-flight transactions are replayed upon re-connection. For simple scenarios this works as expected. However, there is an assumption regarding acknowledged (or consumer) transactions in that the previously received messages will automatically be replayed upon re-connection. This, however, is not always true when there are many connections and consumers, as re-delivery order is not guaranteed as stale outstanding acknowledgements can interfere with newly delivered messages. This can lead to unacknowledged messages. + +**From ActiveMQ 5.3.1**: re-delivery order **_is_** tracked and a transaction will fail to commit if outstanding messages are not redelivered after failover. A **`javax.jms.``TransactionRolledBackException`** is thrown if the commit fails. In doubt transactions will result in a rollback such that they can be replayed by the application. In doubt transactions occur when failover happens when a commit message is in-flight. It is not possible to know the exact point of failure. Did failure happen because the transaction commit message was not delivered or was the commit reply lost? In either case, it becomes necessary to rollback the transaction so that the application can get an indication of the failure and deal with any potential problem. + +##### Broker-side Options for Failover + +**From ActiveMQ 5.4**: the **`TransportConnector`** has options available so that the broker can update clients automatically with information regarding the presence of new brokers that are available (or are no longer available) for failover. + +The options are: + +Option Name + +Default Value + +Description + +`updateClusterClients` + +`false` + +If **`true`**, pass information to connected clients about changes in the topology of the broker cluster. + +`rebalanceClusterClients` + +`false` + +If **`true`**, connected clients will be asked to re-balance across a cluster of brokers when a new broker joins the network of brokers (note: **`priorityBackup=true`** can override). + +`updateClusterClientsOnRemove` + +`false` + +If **`true`**, will update clients when a cluster is removed from the network. Having this as separate option enables clients to be updated when new brokers join, but _not_ when brokers leave. + +`updateClusterFilter` + +`null` + +Comma separated list of regular expression filters used to match broker names of brokers to designate as being part of the failover cluster for the clients. + +Example: + + + ... + + + + ... + + +When **`updateClusterClients=true`** clients need only be configured with the details of one broker in a cluster in order to connect. + +Example: + +failover:(tcp://primary:61616) + +When new brokers join the cluster the client is automatically informed of the new broker's URI. The new URI is then available for failover when one of the other known brokers becomes unavailable. + +Additional Information + +See the following blog entry about using the cluster client updates and re-balancing features titled [New Features in ActiveMQ 5.4: Automatic Cluster Update and Rebalance](http://bsnyderblog.blogspot.com/2010/10/new-features-in-activemq-54-automatic.html). + +##### Priority Backup + +**From ActiveMQ 5.6**: if brokers are available in both local and remote networks, it's possible to specify a preference for local brokers over remote brokers using the **`priorityBackup`** and **`priorityURIs`** options. + +Consider the following URL: + +failover:(tcp://local:61616,tcp://remote:61616)?randomize=false&priorityBackup=true + +Given this URL a client will try to connect and stay connected to the **`local`** broker. If **`local`** broker fails, it will of course fail over to **`remote`**. However, as **`priorityBackup`** parameter is used, the client will constantly try to reconnect to **`local`**. Once the client can do so, the client will re-connect to it without any need for manual intervention. + +By default, only the first URI in the list is considered prioritized (**`local`**). In most cases this will suffice. However, in some cases it may be necessary to have multiple "local" URIs. The **`priorityURIs`** option can be used to specify which URIs are considered prioritized. + +Example: + +failover:(tcp://local1:61616,tcp://local2:61616,tcp://remote:61616)?randomize=false&priorityBackup=true&priorityURIs=tcp://local1:61616,tcp://local2:61616 + +In this case the client will prioritize either **`local1`** or **`local2`** brokers and (re-)connect to them if they are available. + +##### Configuring Nested URI Options. + +**From ActiveMQ 5.9**: common URI options can be configured by appending them to the query string of the failover URI where each common URI option has the prefix: **`nested.`**  + +Example - instead of doing this: + +failover:(tcp://broker1:61616?wireFormat.maxInactivityDuration=1000,tcp://broker2:61616?wireFormat.maxInactivityDuration=1000,tcp://broker3:61616?wireFormat.maxInactivityDuration=1000) + +do this: + +failover:(tcp://broker1:61616,tcp://broker2:61616,tcp://broker3:61616)?nested.wireFormat.maxInactivityDuration=1000 + +Any option that can applied to the query string of an individual URI is a candidate for use with the **`nested`** option. + +Option Precedence + +If the same option is specified as both an individual URI option _and_ as a nested option, the nested option definition will take precedence. + diff --git a/fanout-transport-reference.md b/fanout-transport-reference.md new file mode 100644 index 0000000..02255ae --- /dev/null +++ b/fanout-transport-reference.md @@ -0,0 +1,91 @@ +Apache ActiveMQ ™ -- Fanout Transport Reference + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Fanout Transport Reference](fanout-transport-reference.html) + + +### The Fanout Transport + +The Fanout transport layers reconnect and replication logic on top of any of the other transports. It utilizes the [Discovery](discovery-transport-reference.html) transport to discover brokers and replicates commands to those brokers. + +#### Configuration Syntax + +**fanout:(discoveryURI)?transportOptions** +or +**fanout:discoveryURI** + +##### Transport Options + +Option Name + +Default Value + +Description + +initialReconnectDelay + +10 + +How long to wait before the first reconnect attempt + +maxReconnectDelay + +30000 + +The maximum amount of time we ever wait between reconnect attempts + +useExponentialBackOff + +true + +Should an exponential backoff be used btween reconnect attempts + +backOffMultiplier + +2 + +The exponent used in the exponential backoff attempts + +maxReconnectAttempts + +0 + +If not 0, then this is the maximum number of reconnect attempts before an error is sent back to the client + +fanOutQueues + +false + +If set to 'true', commands are replicated to queues as well as topics + +minAckCount + +2 + +The minimum number of brokers to which connections must be established + +The 'fanOutQueues' option is specific to the fanout transport. By default, the fanout does not replicate commands to queues; only topics. Therefore, if you'd like to fanout a message send command to multiple queues on multiple brokers, you'll have to set this option to 'true'. + +By default, a client's fanout transport waits for connections to be established to 2 brokers, or the number of static TCP URIs configured (if more than 2). Until this number of connections is established, the client's call to Connection.createSession() does not return. For example, a producer that uses the fanout connector listed below will wait until 2 brokers are running, and connections are established to those two brokers. + +fanout:(multicast://default) + +Another example would be a producer using the following fanout connector. + +fanout:(static:(tcp://localhost:61629,tcp://localhost:61639,tcp://localhost:61649)) + +In this case, three broker connections are needed. However, this required number of connections can be overridden by using the minAckCount transport option. For example, this fanout connector allows the producer to run after connecting to just one broker. + +fanout:(multicast://default)?minAckCount=1 + +Warning + +It is not recommended that you use the fanout URI for consumers. Also, if a producer fans out across multiple brokers, who happen to be inter-connected, then there is a very high likelihood that a consumer on one of those brokers will get duplicate messages. + +##### Example URI + +fanout:(static:(tcp://localhost:61616,tcp://remotehost:61616))?initialReconnectDelay=100 + +Applying parameters to discovered transports + +Because the Discovery transport is utilized for broker discovery, transport parameters are applied to discovered brokers. See [Discovery Transport Reference](discovery-transport-reference.html). + diff --git a/faq.md b/faq.md new file mode 100644 index 0000000..27f5e13 --- /dev/null +++ b/faq.md @@ -0,0 +1,219 @@ +Apache ActiveMQ ™ -- FAQ + +[Community](community.html) > [FAQ](faq.html) + + +FAQ +--- + +Here are a list of commonly asked questions and answers. If you have any questions which are not on this list, please talk to us on the [forums](discussion-forums.html). + +We [welcome contributions](contributing.html) and this entire website is a [wiki that you can edit](how-does-the-website-work.html) so please join in and help us make the documentation better! + +### [General](general.html) + +General questions about ActiveMQ + +* [Can I get commercial support](can-i-get-commercial-support.html) +* [How can I get help](how-can-i-get-help.html) +* [How can I get the source code from subversion](how-can-i-get-the-source-code-from-subversion.html) +* [How does ActiveMQ compare to AMQP](how-does-activemq-compare-to-amqp.html) +* [How does ActiveMQ compare to Artemis](how-does-activemq-compare-to-artemis.html) +* [How does ActiveMQ compare to Fuse Message Broker](how-does-activemq-compare-to-fuse-message-broker.html) +* [How does ActiveMQ compare to JBossMQ](how-does-activemq-compare-to-jbossmq.html) +* [How does ActiveMQ compare to Mantaray](how-does-activemq-compare-to-mantaray.html) +* [How does ActiveMQ compare to Mule](how-does-activemq-compare-to-mule.html) +* [How does ActiveMQ compare to Spread Toolkit](how-does-activemq-compare-to-spread-toolkit.html) +* [How does OpenWire compare to Stomp](how-does-openwire-compare-to-stomp.html) +* [How does the website work](how-does-the-website-work.html) +* [How do I avoid Maven downloading latest jars](how-do-i-avoid-maven-downloading-latest-jars.html) +* [How do I build but disable the unit tests](how-do-i-build-but-disable-the-unit-tests.html) +* [How do I compile from the source](how-do-i-compile-from-the-source.html) +* [How do I edit the website](how-do-i-edit-the-website.html) +* [How fast is ActiveMQ](how-fast-is-activemq.html) +* [Should I run ActiveMQ on Windows in a directory with spaces](should-i-run-activemq-on-windows-in-a-directory-with-spaces.html) +* [What is ActiveMQ](what-is-activemq.html) +* [What is the license](what-is-the-license.html) +* [What jars do I need](what-jars-do-i-need.html) +* [What open source integration solution works best with ActiveMQ](what-open-source-integration-solution-works-best-with-activemq.html) +* [What platforms does ActiveMQ support](what-platforms-does-activemq-support.html) +* [What version should I use](what-version-should-i-use.html) + +### [JMS](jms.html) + +Questions on using the JMS API and [MOM](mom.html) in general + +* [Can I modify messages on a queue](can-i-modify-messages-on-a-queue.html) +* [Can I send and receive messages concurrently on one JMS Connection](can-i-send-and-receive-messages-concurrently-on-one-jms-connection.html) +* [Can you browse a topic](can-you-browse-a-topic.html) +* [How do durable queues and topics work](how-do-durable-queues-and-topics-work.html) +* [How does a Queue compare to a Topic](how-does-a-queue-compare-to-a-topic.html) +* [How does ConnectionFactory relate to the Broker](how-does-connectionfactory-relate-to-the-broker.html) +* [How does JMS compare with email](how-does-jms-compare-with-email.html) +* [How do I consume a specific message](how-do-i-consume-a-specific-message.html) +* [How do I get started with JMS](how-do-i-get-started-with-jms.html) +* [How do I make messages durable](how-do-i-make-messages-durable.html) +* [How do I send messages to different Destinations from a single MessageProducer](how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.html) +* [How do I use JMS efficiently](how-do-i-use-jms-efficiently.html) +* [How should I implement request response with JMS](how-should-i-implement-request-response-with-jms.html) +* [How To Unit Test JMS Code](how-to-unit-test-jms-code.html) +* [Multiple consumers on a queue](multiple-consumers-on-a-queue.html) +* [Should I use transactions](should-i-use-transactions.html) +* [Should I use XA](should-i-use-xa.html) +* [What are administered objects](what-are-administered-objects.html) + +### [Using Apache ActiveMQ](using-apache-activemq.html) + +Questions on using Apache ActiveMQ + +* [ActiveMQ Command Line Tools Reference](activemq-command-line-tools-reference.html) +* [Are destinations case sensitive](are-destinations-case-sensitive.html) +* [Can I send really large files over ActiveMQ](can-i-send-really-large-files-over-activemq.html) +* [Can I use ActiveMQ 5.x or later on Java 1.4](can-i-use-activemq-5x-or-later-on-java-14.html) +* [Can two brokers share the same database](can-two-brokers-share-the-same-database.html) +* [Does ActiveMQ support clustering](does-activemq-support-clustering.html) +* [How can I avoid serialization of Objects in ObjectMessage](how-can-i-avoid-serialization-of-objects-in-objectmessage.html) +* [How can I get a list of the topics and queues in a broker](how-can-i-get-a-list-of-the-topics-and-queues-in-a-broker.html) +* [How can I make ActiveMQ faster](how-can-i-make-activemq-faster.html) +* [How can I monitor ActiveMQ](how-can-i-monitor-activemq.html) +* [How can I monitor the connection with the broker](how-can-i-monitor-the-connection-with-the-broker.html) +* [How can I see what destinations are used](how-can-i-see-what-destinations-are-used.html) +* [How can I support auto reconnection](how-can-i-support-auto-reconnection.html) +* [How can I support priority queues](how-can-i-support-priority-queues.html) +* [How can I use different network protocols](how-can-i-use-different-network-protocols.html) +* [How do distributed queues work](how-do-distributed-queues-work.html) +* [How do I access ActiveMQ from C](how-do-i-access-activemq-from-c.html) +* [How do I access ActiveMQ from CSharp or dotNet](how-do-i-access-activemq-from-csharp-or-dotnet.html) +* [How do I access ActiveMQ from Ruby, Perl, Python, PHP](how-do-i-access-activemq-from-ruby-perl-python-php.html) +* [How do I bridge different JMS providers](how-do-i-bridge-different-jms-providers.html) +* [How do I change dispatch policy](how-do-i-change-dispatch-policy.html) +* [How do I change the logging](how-do-i-change-the-logging.html) +* [How do I connect to one of a number of message brokers](how-do-i-connect-to-one-of-a-number-of-message-brokers.html) +* [How do I create new destinations](how-do-i-create-new-destinations.html) +* [How do I delete a destination](how-do-i-delete-a-destination.html) +* [How do I disable logging](how-do-i-disable-logging.html) +* [How do I embed a Broker inside a Connection](how-do-i-embed-a-broker-inside-a-connection.html) +* [How do I enable asynchronous sending](how-do-i-enable-asynchronous-sending.html) +* [How do I enable debug logging](how-do-i-enable-debug-logging.html) +* [How do I find the Size of a Queue](how-do-i-find-the-size-of-a-queue.html) +* [How do I preserve order of messages](how-do-i-preserve-order-of-messages.html) +* [How do I purge a queue](how-do-i-purge-a-queue.html) +* [How do I restart embedded broker](how-do-i-restart-embedded-broker.html) +* [How do I restrict connections from creating new queues or topics](how-do-i-restrict-connections-from-creating-new-queues-or-topics.html) +* [How do I run a broker](how-do-i-run-a-broker.html) +* [How do I set the message expiration](how-do-i-set-the-message-expiration.html) +* [How do I turn off creating an embedded ActiveMQ broker when using the VM transport](how-do-i-turn-off-creating-an-embedded-activemq-broker-when-using-the-vm-transport.html) +* [How do I unack the message with Stomp](how-do-i-unack-the-message-with-stomp.html) +* [How do I use ActiveMQ using in JVM messaging](how-do-i-use-activemq-using-in-jvm-messaging.html) +* [How do I use durable subscribers in a network of brokers](how-do-i-use-durable-subscribers-in-a-network-of-brokers.html) +* [How do I use Ivy with ActiveMQ](how-do-i-use-ivy-with-activemq.html) +* [How do I use log4j JMS appender with ActiveMQ](how-do-i-use-log4j-jms-appender-with-activemq.html) +* [How do I use SSL](how-do-i-use-ssl.html) +* [How do Message Groups compare to Selectors](how-do-message-groups-compare-to-selectors.html) +* [How do multiple transports work](how-do-multiple-transports-work.html) +* [How Do Transactions Work](how-do-transactions-work.html) +* [How lightweight is sending a message](how-lightweight-is-sending-a-message.html) +* [How should I package applications using Camel and ActiveMQ](how-should-i-package-applications-using-camel-and-activemq.html) +* [How should I use the VM transport](how-should-i-use-the-vm-transport.html) +* [How to deal with large number of threads in clients](how-to-deal-with-large-number-of-threads-in-clients.html) +* [How to disable auto destination creation](how-to-disable-auto-destination-creation.html) +* [I see NC_ client-ids, what does that mean](i-see-nc-client-ids-what-does-that-mean.html) +* [Should I deploy Enterprise Integration Patterns in the broker or another application](should-i-deploy-enterprise-integration-patterns-in-the-broker-or-another-application.html) +* [Should I deploy the broker inside my JVM or AppServer](should-i-deploy-the-broker-inside-my-jvm-or-appserver.html) +* [What are those topics ActiveMQ.Advisory](what-are-those-topics-activemqadvisory.html) +* [What happens with a fast producer and slow consumer](what-happens-with-a-fast-producer-and-slow-consumer.html) +* [What is the difference between a Virtual Topic and a Composite Destination](what-is-the-difference-between-a-virtual-topic-and-a-composite-destination.html) +* [What is the difference between discovery, multicast and zeroconf](what-is-the-difference-between-discovery-multicast-and-zeroconf.html) +* [What is the Prefetch Limit For?](what-is-the-prefetch-limit-for.html) +* [While posting large binary file to activeMQ, is there a way to measure its progress](while-posting-large-binary-file-to-activemq-is-there-a-way-to-measure-its-progress.html) + +### [Configuration](configuration.html) + +Questions on configuring ActiveMQ's JMS client or the Message Broker + +* [How can I enable detailed logging](how-can-i-enable-detailed-logging.html) +* [How does XBean compare to Spring 2](how-does-xbean-compare-to-spring-2.html) +* [How do I configure 10s of 1000s of Queues in a single broker](how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker.html) +* [How do I configure ActiveMQ to hold 100s of millions of Queue Messages](how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages.html) +* [How do I configure ActiveMQ to use AIO server transport](how-do-i-configure-activemq-to-use-aio-server-transport.html) +* [How do I configure automatic reconnection](how-do-i-configure-automatic-reconnection.html) +* [How do I configure distributed queues or topics](how-do-i-configure-distributed-queues-or-topics.html) +* [How do I configure the queues I want](how-do-i-configure-the-queues-i-want.html) +* [How do I define a local address and local port for TCP or SSL](how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl.html) +* [How do I disable persistence](how-do-i-disable-persistence.html) +* [How do I run ActiveMQ under the Kaffe JVM](how-do-i-run-activemq-under-the-kaffe-jvm.html) +* [How to configure a new database](how-to-configure-a-new-database.html) +* [How to deploy activemq-ra-version.rar to weblogic](how-to-deploy-activemq-ra-versionrar-to-weblogic.html) +* [How to disable multicast discovery](how-to-disable-multicast-discovery.html) + +### [Persistence Questions](persistence-questions.html) + +Questions relating to long term persistence of messages. + +* [Are messages read directly from the journal](are-messages-read-directly-from-the-journal.html) +* [Does ActiveMQ support my SQL database](does-activemq-support-my-sql-database.html) +* [How does journaling work with multiple brokers](how-does-journaling-work-with-multiple-brokers.html) +* [How does the journal work](how-does-the-journal-work.html) +* [How do I back-up KahaDB](how-do-i-back-up-kahadb.html) +* [How do I change the message store directory for an embedded broker](how-do-i-change-the-message-store-directory-for-an-embedded-broker.html) +* [Is there a specified size of the journal](is-there-a-specified-size-of-the-journal.html) +* [What happens when the journal size is exceeded](what-happens-when-the-journal-size-is-exceeded.html) +* [What is the difference between persistent and non-persistent delivery](what-is-the-difference-between-persistent-and-non-persistent-delivery.html) + +### [Errors](errors.html) + +Questions on specific kinds of errors. If you have seen a specific exception then check the [Exceptions](exceptions.html) + +* [Could not find PacketReader for packet type - UNKNOWN PACKET TYPE](could-not-find-packetreader-for-packet-type-unknown-packet-type.html) +* [Exceptions](exceptions.html) + * [certificate_unknown](certificateunknown.html) + * [IOException - could not find class for resource](ioexception-could-not-find-class-for-resource.html) + * [java.io.InterruptedIOException](javaiointerruptedioexception.html) + * [java.io.IOException Failed to create database 'derbydb', see the next exception for details](javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.html) + * [java.lang.NoSuchMethodError](javalangnosuchmethoderror.html) + * [java.lang.NoSuchMethodException org.activemq.ra.ActiveMQResourceAdapter.setUseEmbeddedBroker](javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.html) + * [java.lang.OutOfMemory](javalangoutofmemory.html) + * [javax.jms.JMSException - Wire format negociation timeout - peer did not send his wire format.](javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.html) + * [JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI () needs 2.1 API.](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.html) + * [JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (xxx) needs 2.1 API](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.html) + * [Journal is already opened by this application](journal-is-already-opened-by-this-application.html) + * [NoClassDefFoundError - org.springframework.core.io.Resource](noclassdeffounderror-orgspringframeworkcoreioresource.html) + * [No suitable driver](no-suitable-driver.html) +* [I am having problems with the Spring JmsTemplate](i-am-having-problems-with-the-spring-jmstemplate.html) +* [I am not receiving any messages, what is wrong](i-am-not-receiving-any-messages-what-is-wrong.html) +* [I cannot connect to ActiveMQ from JConsole](i-cannot-connect-to-activemq-from-jconsole.html) +* [I do not receive messages in my second consumer](i-do-not-receive-messages-in-my-second-consumer.html) +* [I get errors building the code whats wrong](i-get-errors-building-the-code-whats-wrong.html) +* [log4j-WARN No appenders could be found for logger](log4j-warn-no-appenders-could-be-found-for-logger.html) +* [Multicast - Watch out for IPV6 vs IPV4 support on your operating system or distribution or network](multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.html) +* [My producer blocks](my-producer-blocks.html) +* [onMessage method of MessageListener is never called](onmessage-method-of-messagelistener-is-never-called.html) +* [Resource Adapter does not seem to pool connections](resource-adapter-does-not-seem-to-pool-connections.html) +* [Slow networks drop large messages](slow-networks-drop-large-messages.html) +* [The Broker will not start](the-broker-will-not-start.html) +* [The vm transport starts a broker before my configured broker starts](the-vm-transport-starts-a-broker-before-my-configured-broker-starts.html) +* [Why do I not get all of the messages I sent](why-do-i-not-get-all-of-the-messages-i-sent.html) +* [Why do I not receive messages on my durable topic subscription](why-do-i-not-receive-messages-on-my-durable-topic-subscription.html) +* [Why do KahaDB log files remain after cleanup](why-do-kahadb-log-files-remain-after-cleanup.html) + +### [Developing ActiveMQ](developing-activemq.html) + +Questions for developers wishing to extend or enhance Apache ActiveMQ + +* [How can I add a new type of transport](how-can-i-add-a-new-type-of-transport.html) +* [How can I contribute](how-can-i-contribute.html) +* [How do I add my own plugins](how-do-i-add-my-own-plugins.html) +* [How do I debug ActiveMQ from my IDE](how-do-i-debug-activemq-from-my-ide.html) + +### [Terminology](terminology.html) + +A list of the various messaging related terms and acronyms. + +* [DR](dr.html) +* [HA](ha.html) +* [Latency](latency.html) +* [MOM](mom.html) +* [QoS](qos.html) +* [SEDA](seda.html) +* [Throughput](throughput.html) + diff --git a/features-overview.md b/features-overview.md new file mode 100644 index 0000000..aa4bf08 --- /dev/null +++ b/features-overview.md @@ -0,0 +1,24 @@ +Apache ActiveMQ ™ -- Features Overview + +[Features](features.html) > [Features Overview](features-overview.html) + + +* Supports a variety of [Cross Language Clients and Protocols](cross-language-clients.html) from Java, C, C++, C#, Ruby, Perl, Python, PHP + * [OpenWire](openwire.html) for high performance clients in Java, C, C++, C# + * [Stomp](stomp.html) support so that clients can be written easily in C, Ruby, Perl, Python, PHP, ActionScript/Flash, Smalltalk to talk to ActiveMQ as well as any other popular Message Broker + * [AMQP](amqp.html) v1.0 support + * [MQTT](mqtt.html) v3.1 support allowing for connections in an IoT environment. +* full support for the [Enterprise Integration Patterns](enterprise-integration-patterns.html) both in the JMS client and the Message Broker +* Supports many [advanced features](features.html) such as [Message Groups](message-groups.html), [Virtual Destinations](virtual-destinations.html), [Wildcards](wildcards.html) and [Composite Destinations](composite-destinations.html) +* Fully supports JMS 1.1 and J2EE 1.4 with support for transient, persistent, transactional and XA messaging +* [Spring Support](spring-support.html) so that ActiveMQ can be easily embedded into Spring applications and configured using Spring's XML configuration mechanism +* Tested inside popular J2EE servers such as [TomEE](http://tomee.apache.org/), [Geronimo](http://geronimo.apache.org/), JBoss, GlassFish and WebLogic + * Includes [JCA 1.5 resource adaptors](resource-adapter.html) for inbound & outbound messaging so that ActiveMQ should auto-deploy in any J2EE 1.4 compliant server +* Supports pluggable [transport protocols](uri-protocols.html) such as [in-VM](how-do-i-use-activemq-using-in-jvm-messaging.html), TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports +* Supports very fast [persistence](persistence.html) using JDBC along with a high performance journal +* Designed for high performance clustering, client-server, peer based communication +* [REST](rest.html) API to provide technology agnostic and language neutral web based API to messaging +* [Ajax](ajax.html) to support web streaming support to web browsers using pure DHTML, allowing web browsers to be part of the messaging fabric +* [CXF and Axis Support](axis-and-cxf-support.html) so that ActiveMQ can be easily dropped into either of these web service stacks to provide reliable messaging +* Can be used as an in memory JMS provider, ideal for [unit testing JMS](how-to-unit-test-jms-code.html) + diff --git a/features.md b/features.md new file mode 100644 index 0000000..7d7c0f4 --- /dev/null +++ b/features.md @@ -0,0 +1,126 @@ +Apache ActiveMQ ™ -- Features + +[Features](features.html) + + +Apache ActiveMQ Features +------------------------ + +Apache ActiveMQ is packed with features; to get an idea you might want to look at the [Features Overview](features-overview.html) otherwise here is the list of all of the main features... + +* [Active Groups](active-groups.html) +* [ActiveMQ Real Time](activemq-real-time.html) + * [Broadcasting](broadcasting.html) + * [Group Membership](group-membership.html) + * [Life Cycle](life-cycle.html) + * [The ActiveBlaze Message type](the-activeblaze-message-type.html) +* [Broker Camel Component](broker-camel-component.html) +* [Clustering](clustering.html) + * [MasterSlave](masterslave.html) + * [JDBC Master Slave](jdbc-master-slave.html) + * [KahaDB Replication (Experimental)](kahadb-replication-experimental.html) + * [Pure Master Slave](pure-master-slave.html) + * [Shared File System Master Slave](shared-file-system-master-slave.html) + * [Networks of Brokers](networks-of-brokers.html) + * [Replicated Message Store](replicated-message-store.html) +* [Command Agent](command-agent.html) +* [Consumer Features](consumer-features.html) + * [Consumer Dispatch Async](consumer-dispatch-async.html) + * [Consumer Priority](consumer-priority.html) + * [Exclusive Consumer](exclusive-consumer.html) + * [Manage Durable Subscribers](manage-durable-subscribers.html) + * [Message Groups](message-groups.html) + * [Redelivery Policy](redelivery-policy.html) + * [Retroactive Consumer](retroactive-consumer.html) + * [Selectors](selectors.html) + * [Slow Consumer Handling](slow-consumer-handling.html) + * [Subscription Recovery Policy](subscription-recovery-policy.html) +* [Destination Features](destination-features.html) + * [Composite Destinations](composite-destinations.html) + * [Configure Startup Destinations](configure-startup-destinations.html) + * [Delete Inactive Destinations](delete-inactive-destinations.html) + * [Destination Options](destination-options.html) + * [Mirrored Queues](mirrored-queues.html) + * [Per Destination Policies](per-destination-policies.html) + * [Virtual Destinations](virtual-destinations.html) + * [Wildcards](wildcards.html) +* [Discovery](discovery.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) +* [Features Overview](features-overview.html) +* [Horizontal Scaling](horizontal-scaling.html) + * [Scaling Queues](scaling-queues.html) +* [Interceptors](interceptors.html) + * [Destinations Plugin](destinations-plugin.html) + * [Logging Interceptor](logging-interceptor.html) + * [StatisticsPlugin](statisticsplugin.html) + * [TimeStampPlugin](timestampplugin.html) +* [JMSXUserID](jmsxuserid.html) +* [JMX](jmx.html) + * [JMX Support](jmx-support.html) +* [Logging a warning if you forget to start a Connection](logging-a-warning-if-you-forget-to-start-a-connection.html) +* [MDC Logging](mdc-logging.html) +* [Message Dispatching Features](message-dispatching-features.html) + * [Async Sends](async-sends.html) + * [Dispatch Policies](dispatch-policies.html) + * [Message Cursors](message-cursors.html) + * [Optimized Acknowledgement](optimized-acknowledgement.html) + * [Producer Flow Control](producer-flow-control.html) + * [Total Ordering](total-ordering.html) +* [Message Features](message-features.html) + * [ActiveMQ Message Properties](activemq-message-properties.html) + * [Advisory Message](advisory-message.html) + * [Blob Messages](blob-messages.html) + * [Delay and Schedule Message Delivery](delay-and-schedule-message-delivery.html) + * [JMS Streams](jms-streams.html) + * [Message Transformation](message-transformation.html) + * [ObjectMessage](objectmessage.html) + * [Structured Message Properties and MapMessages](structured-message-properties-and-mapmessages.html) +* [New Features](new-features.html) + * [Changes in 4.0](changes-in-40.html) + * [New Features in 4.1](new-features-in-41.html) + * [New Features in 5.0](new-features-in-50.html) + * [New Features in 5.1](new-features-in-51.html) + * [New Features in 5.2](new-features-in-52.html) + * [New Features in 5.3](new-features-in-53.html) + * [New Features in 5.4](new-features-in-54.html) + * [New Features in 5.5](new-features-in-55.html) + * [New Features in 5.6](new-features-in-56.html) + * [New Features in 5.7](new-features-in-57.html) + * [New Features in 5.8](new-features-in-58.html) + * [New Features in 5.9](new-features-in-59.html) + * [Runtime Configuration](runtime-configuration.html) + * [New Features in 5.11](new-features-in-511.html) + * [New Features in 5.13](new-features-in-513.html) + * [New Features in 6.0](new-features-in-60.html) +* [Performance](performance.html) + * [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) + * [sample report](sample-report.html) + * [Load Testing with Camel](load-testing-with-camel.html) + * [Performance report](performance-report.html) +* [Persistence](persistence.html) + * [AMQ Message Store](amq-message-store.html) + * [Configurable IOException Handling](configurable-ioexception-handling.html) + * [JDBC Support](jdbc-support.html) + * [SQLServer](sqlserver.html) + * [Sybase](sybase.html) + * [KahaDB](kahadb.html) + * [Kaha Persistence](kaha-persistence.html) + * [LevelDB Store](leveldb-store.html) + * [Periodically checking disk limits](periodically-checking-disk-limits.html) + * [Pluggable storage lockers](pluggable-storage-lockers.html) + * [Replicated LevelDB Store](replicated-leveldb-store.html) +* [Scaling the Depth of a Queue](scaling-the-depth-of-a-queue.html) +* [Security](security.html) + * [Audit Logging](audit-logging.html) + * [Cached LDAP Authorization Module](cached-ldap-authorization-module.html) + * [Encrypted passwords](encrypted-passwords.html) + * [Shiro](shiro.html) +* [The Proxy Connector](the-proxy-connector.html) +* [Unix](unix.html) + * [Unix Service](unix-service.html) + * [Unix Shell Script](unix-shell-script.html) +* [URI Protocols](uri-protocols.html) + * [VM Protocol](vm-protocol.html) +* [Visualisation](visualisation.html) + * [Visualisation Wish List](visualisation-wish-list.html) + diff --git a/general-build-issues.md b/general-build-issues.md new file mode 100644 index 0000000..53e1058 --- /dev/null +++ b/general-build-issues.md @@ -0,0 +1,8 @@ +Apache ActiveMQ ™ -- General Build Issues + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [Building FAQs](building-faqs.html) > [General Build Issues](general-build-issues.html) + +###### Error during configure: "error: libpthread not found!" + +Getting an error about libpthread not found even though its installed, in many cases indicates that the tool chain required to build the library isn't fully installed.  One good place to start checking is to ensure that both 'gcc' and 'g+' are installed as the M4 configure macros that check for pthread related features uses 'g+'.   + diff --git a/general.md b/general.md new file mode 100644 index 0000000..b3df772 --- /dev/null +++ b/general.md @@ -0,0 +1,32 @@ +Apache ActiveMQ ™ -- General + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) + + +General questions about ActiveMQ + +* [Can I get commercial support](can-i-get-commercial-support.html) +* [How can I get help](how-can-i-get-help.html) +* [How can I get the source code from subversion](how-can-i-get-the-source-code-from-subversion.html) +* [How does ActiveMQ compare to AMQP](how-does-activemq-compare-to-amqp.html) +* [How does ActiveMQ compare to Artemis](how-does-activemq-compare-to-artemis.html) +* [How does ActiveMQ compare to Fuse Message Broker](how-does-activemq-compare-to-fuse-message-broker.html) +* [How does ActiveMQ compare to JBossMQ](how-does-activemq-compare-to-jbossmq.html) +* [How does ActiveMQ compare to Mantaray](how-does-activemq-compare-to-mantaray.html) +* [How does ActiveMQ compare to Mule](how-does-activemq-compare-to-mule.html) +* [How does ActiveMQ compare to Spread Toolkit](how-does-activemq-compare-to-spread-toolkit.html) +* [How does OpenWire compare to Stomp](how-does-openwire-compare-to-stomp.html) +* [How does the website work](how-does-the-website-work.html) +* [How do I avoid Maven downloading latest jars](how-do-i-avoid-maven-downloading-latest-jars.html) +* [How do I build but disable the unit tests](how-do-i-build-but-disable-the-unit-tests.html) +* [How do I compile from the source](how-do-i-compile-from-the-source.html) +* [How do I edit the website](how-do-i-edit-the-website.html) +* [How fast is ActiveMQ](how-fast-is-activemq.html) +* [Should I run ActiveMQ on Windows in a directory with spaces](should-i-run-activemq-on-windows-in-a-directory-with-spaces.html) +* [What is ActiveMQ](what-is-activemq.html) +* [What is the license](what-is-the-license.html) +* [What jars do I need](what-jars-do-i-need.html) +* [What open source integration solution works best with ActiveMQ](what-open-source-integration-solution-works-best-with-activemq.html) +* [What platforms does ActiveMQ support](what-platforms-does-activemq-support.html) +* [What version should I use](what-version-should-i-use.html) + diff --git a/geronimo.md b/geronimo.md new file mode 100644 index 0000000..9a87420 --- /dev/null +++ b/geronimo.md @@ -0,0 +1,198 @@ +Apache ActiveMQ ™ -- Geronimo + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Geronimo](geronimo.html) + + +ActiveMQ is the default JMS provider in [Apache Geronimo](http://geronimo.apache.org). + +ActiveMQ can be used both as JMS Client and a JMS Broker. This short +article explains how to use it on a standalone client to access the +topics/queues setup on a remote Geronimo/ActiveMQ broker. + +1) Setup the queues and topics on the ActiveMQ Broker +If you're using a standalone ActiveMQ broker, then following the instructions on +ActiveMQ's website should be enough to setup everything. +However, if your ActiveMQ's instance is embedded inside the J2EE Geronimo +Application Server, creating Queues and Topics is about deploying Resource +Adapters to your Geronimo server. +The following deployment descriptor can be used to deploy two topics and a +ConnectionFactory: weatherTopic and weatherRequestsTopic + + + + + + ActiveMQ RA + tcp://localhost:61616 + geronimo + geronimo + + DefaultWorkManager + + + + + +javax.jms.ConnectionFactory + + ConnectionFactory + +javax.jms.QueueConnectionFactory + +javax.jms.TopicConnectionFactory + + + + + + 10 + +5000 + + + + ConnectionFactory + + + + + + + javax.jms.Topic + +org.codehaus.activemq.message.ActiveMQTopic + + weatherTopic + weatherTopic + + + + javax.jms.Topic + +org.codehaus.activemq.message.ActiveMQTopic + + +weatherRequestsTopic + weatherRequestsTopic + + + + + +Then deploy it using Geronimo's deploy tool : + +D:\\geronimo>java -jar bin\\deployer.jar deploy d:\\projects\\weather\\src\\resources\ +geronimo-activemq.xml repository\\activemq\\rars\\activemq-ra-3.1-SNAPSHOT.rar +Username: system +Password: manager +Deployed weather/Topics + +The geronimo.log file should now refer to these newly deployed Topics. + +2) Now that the queues are available server-side, what we want is access them +thanks to a standalone Client. +Usually, the process is the following one : + +* Contact the J2EE naming server (port 1099, RMI) to get an JNDI InitialContext. +* The J2EE server automatically exposes the ConnectionFactory and the Topics + through JNDI, so the InitialContext allows you to retrieve both the + ConnectionFactory and the Topics +* Once you have your Topics, you just use them.. + +However, ActiveMQ's JNDI Implementation does NOT talk to the naming server. It's +a stripped down version of a JNDI client that just allows to get Topics and +Queues directly from a JMS instance. +So, instead of supplying the naming server address, you have to supply the JMS +server address. +Most JNDI implementations use the java.naming.provider.url property to specify +the naming server's address. ActiveMQ uses the brokerURL one. Using the +java.naming.provider.url one instead will result in ActiveMQ trying to load the +whole Broker. + +3) So, now we have explained the process, let's detail the Spring way of doing +things : + +* Create a bootstrap.properties file that's available in your classpath + jms.connectionFactoryName=ConnectionFactory + jms.jndiProviderUrl=tcp://localhost:61616 + jms.jndiContextFactory=org.activemq.jndi.ActiveMQInitialContextFactory + +jms.weatherTopic=weatherTopic +jms.weatherRequestsTopic=weatherRequestsTopic + +* Now, in your Spring description file, declare the bean that will read + the properties from the bootstrap.properties file + + + classpath:/bootstrap.properties + + + +* Create a JNDI template (A Spring-specific wrapper around the JNDI InitialContext + + + + + ${jms.jndiContextFactory} + + + + + ${jms.jndiProviderUrl} + + ${jms.weatherTopic} + ${jms.weatherRequestsTopic} + + + + + +* Retrieve the ConnectionFactory from the JNDI context + + + + + + + ${jms.connectionFactoryName} + + + +I'm not 100% sure, but I think that you can put any Factory Name, it will just +work. (In a scenario where the JNDI context actually contacts a naming server, +it should match the name of the deployed ConnectionFactory) + +* Get the Topics instances from the JNDI Context + + + + + + + ${jms.weatherTopic} + + + + + + + + ${jms.weatherRequestsTopic} + + + +* Now, you can reuse these Topics beans the way you want. + diff --git a/getting-started-3x.md b/getting-started-3x.md new file mode 100644 index 0000000..63e4b80 --- /dev/null +++ b/getting-started-3x.md @@ -0,0 +1,441 @@ +Apache ActiveMQ ™ -- Getting Started 3.x + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [Previous Versions](previous-versions.html) > [Getting Started 3.x](getting-started-3x.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Introduction +------------ + +This document describes how to install and configure ActiveMQ 3.x for both Unix and Windows' platforms. + +Document Organization +--------------------- + +The Getting Started Guide for ActiveMQ 3.x document contains the following sections: + +* [Introduction](#GettingStarted3.x-Introduction) +* [Document Organization](#GettingStarted3.x-DocumentOrganization) +* [Pre-Installation Requirements](#GettingStarted3.x-PreInstallationRequirements) +* [Installation Procedure for Windows](#GettingStarted3.x-InstallationProcedureforWindows) + * [Windows Binary Installation](#GettingStarted3.x-WindowsBinaryInstallation) + * [Windows Source Installation](#GettingStarted3.x-WindowsSourceInstallation) + * [Windows Developers' Release](#GettingStarted3.x-WindowsDevelopers%27Release) +* [Installation Procedure for Unix](#GettingStarted3.x-InstallationProcedureforUnix) + * [Unix Binary Installation](#GettingStarted3.x-UnixBinaryInstallation) + * [Unix Source Installation](#GettingStarted3.x-UnixSourceInstallation) + * [Unix Developers' Release](#GettingStarted3.x-UnixDevelopers%27Release) +* [Starting ActiveMQ](#GettingStarted3.x-StartingActiveMQ) +* [Testing the Installation](#GettingStarted3.x-TestingtheInstallation) +* [Stopping ActiveMQ](#GettingStarted3.x-StoppingActiveMQ) +* [Configuring ActiveMQ](#GettingStarted3.x-ConfiguringActiveMQ) + +Pre-Installation Requirements +----------------------------- + +**Hardware:** + +* 33 MB of free disk space for the ActiveMQ 3.x binary distribution. +* 18 MB of free disk space for the ActiveMQ 3.x source or developer's distributions. + +**Operating Systems:** + +* Windows: Windows XP SP2, Windows 2000. +* Unix: Ubuntu Linux, Powerdog Linux, MacOS, AIX, HP-UX, Solaris, or any Unix platform that supports Java. + +**Environment:** + +* Java Developer Kit (JDK) 1.4.x or greater for deployment and 1.5.x (Java 5) for compiling/building. +* The JAVA_HOME environment variable must be set to the directory where the JDK is installed, e.g., c:\\Program Files\\jsdk.1.4.2-09. +* Maven 1.0.2 or greater (required when installing source or developer's releases). +* [JARs](http://cvs.apache.org/repository/geronimo-spec/jars/) that will be used must be added to the classpath. + +Installation Procedure for Windows +---------------------------------- + +This section of the Getting Started Guide explains how to install binary and source distributions of ActiveMQ on a Windows system. + +#### Windows Binary Installation + +This procedure explains how to download and install the binary distribution on a Windows system. + +1. From a browser, navigate to [www.ActiveMQ.org](http://www.ActiveMQ.org). +2. Click the [Download](#GettingStarted3.x-Download) link in the navigation pane (the left pane). +3. Click the [ActiveMQ 3.x Release](#GettingStarted3.x-ActiveMQ3.xRelease) link under the "Latest Releases" section. This brings up a new page. +4. Under the [Download Here](#GettingStarted3.x-DownloadHere) section, select the desired distribution (you may have to scroll down to see the "Download Here" section). + For a binary distribution, the filename will be similar to: activemq-x.x.x.zip. +5. Extract the files from the ZIP file into a directory of your choice. +6. Proceed to the [Starting ActiveMQ](#GettingStarted3.x-StartingActiveMQ) section of this document. +7. Following start-up, go to the [Testing the Installation](#GettingStarted3.x-TestingtheInstallation) section of this document. + +#### Windows Source Installation + +This procedure explains how to download and install the source distribution on a Windows system. + +**NOTE:** ActiveMQ can be run on a Java 1.4.x system, however, Java 1.5 is required to compile/build ActiveMQ. + +1. From a browser, navigate to [www.ActiveMQ.org](http://www.ActiveMQ.org). +2. Click the [Download](#GettingStarted3.x-Download) link in the navigation pane (the left pane). +3. Click the [ActiveMQ 3.x Release](#GettingStarted3.x-ActiveMQ3.xRelease) link under the "Latest Releases" section. This brings up another page. +4. Under the [Download Here](#GettingStarted3.x-DownloadHere) section, select the desired distribution (if necessary, scroll down to see the "Download Here" section). + For a source distribution, the filename will be similar to: activemq-x.x-src.zip. +5. Extract ActiveMQ from the ZIP file into a directory of your choice. +6. Build ActiveMQ using Maven 1.0.2 or greater and Java 1.5. + + + +7. If you prefer to use an IDE, then you can auto-generate the IDE's project file using maven plugins: + + + + Feel free to use any other applicable IDE. Please refer to the [plugin reference](http://maven.apache.org/reference/plugins/plugins.html) for more details. + +8. Start ActiveMQ from the target directory, for example: + + + + **NOTE:** Working directories get created relative to the current directory. To create the working directories in the proper place, ActiveMQ must be launched from its home/installation directory. + +9. Proceed to the [Testing the Installation](#GettingStarted3.x-TestingtheInstallation) section. + +**NOTE:** Working directories get created relative to the current directory. To create the working directories in the proper place, ActiveMQ must be launched from its home/installation directory. + +![](https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif) + +**Warning** +If you are building ActiveMQ 3.x under Windows using Cygwin there is a path name length limitation. If the path name length is exceeded, you may see build errors. To correct this, move the ActiveMQ source directory higher in the file system tree, e.g., /cygdrive/c/d/sm. + +#### Windows Developer's Release + +This procedure explains how to download and install the latest developer's snapshot. + +**NOTE:** ActiveMQ can be run on a Java 1.4.x system, however, Java 1.5 is required to compile/build ActiveMQ. + +1. From a browser, navigate to [www.ActiveMQ.org](http://www.ActiveMQ.org). +2. Click the [Download](#GettingStarted3.x-Download) link in the navigation pane (the left pane). +3. Click the [Current development SNAPSHOT release](#GettingStarted3.x-CurrentdevelopmentSNAPSHOTrelease) link. +4. Select the version of ActiveMQ to download (if necessary, scroll down to see the ActiveMQ snapshots). +5. Extract the files from the ZIP file into a directory of your choice. +6. If a binary snapshot was downloaded, proceed to the [Starting ActiveMQ](#GettingStarted3.x-StartingActiveMQ) section of this document. + If a source snapshot was downloaded, perform step 6 and step 7 of the [Windows Source Installation](#GettingStarted3.x-WindowsSourceInstallation) procedure. +7. Following start-up, proceed to the [Testing the Installation](#GettingStarted3.x-TestingtheInstallation) section. + +Installation Procedure for Unix +------------------------------- + +#### Unix Binary Installation + +This procedure explains how to download and install the binary distribution on a Unix system. + +1. Download the activemq gzip file to the Unix machine, using either a browser or a tool, i.e., wget, scp, ftp, etc. + + + +2. Extract the files from the gzip file into a directory of your choice. For example: + + + +3. If the ActiveMQ start-up script is not executable, change its permisssions. The ActiveMQ script is located in the bin directory. For example: + + + +4. Proceed to the [Starting ActiveMQ](#GettingStarted3.x-StartingActiveMQ) section of this document. +5. Following start-up, go to the [Testing the Installation](#GettingStarted3.x-TestingtheInstallation) section. + +#### Unix Source Installation + +This procedure explains how to download and install the source distribution on a Unix system. This procedure assumes the Unix machine has a browser. Please see the previous [Unix Binary Installation](#GettingStarted3.x-UnixBinaryInstallation) section for details on how to install ActiveMQ without a browser. + +**NOTE:** ActiveMQ can be run on a Java 1.4.x system, however, Java 1.5 is required to compile/build ActiveMQ. + +1. From a browser, navigate to [www.ActiveMQ.org](http://www.ActiveMQ.org). +2. Click the [Download](#GettingStarted3.x-Download) link in the navigation pane (the left pane). +3. Click the [ActiveMQ 3.x Release](#GettingStarted3.x-ActiveMQ3.xRelease) link under the "Latest Releases" section. This brings up a new page. +4. Under the [Download Here](#GettingStarted3.x-DownloadHere) section, select the desired distribution (if necessary, scroll down to see the "Download Here" section). + For a source distribution, the filename will be similar to: activemq-x.x-src.tar.gz. +5. Extract the files from the ZIP file into a directory of your choice. For example: + + + +6. Build ActiveMQ using Maven 1.0.2 or greater and Java 5: + + + +7. If you prefer to use an IDE then you can auto-generate the IDE's project file using maven plugins: + + + + Feel free to use any other applicable IDE. Please refer to the [plugin reference](http://maven.apache.org/reference/plugins/plugins.html) for more details. + **NOTE:** Working directories get created relative to the current directory. To create working directories in the proper place, ActiveMQ must be launched from its home/installation directory. + +8. Proceed to the [Starting ActiveMQ](#GettingStarted3.x-StartingActiveMQ) section of this document. +9. Proceed to [Testing the Installation](#GettingStarted3.x-TestingtheInstallation) section. + +#### Unix Developer's Release + +This procedure explains how to download and install the latest developer's snapshot. + +**NOTE:** ActiveMQ can be run on a Java 1.4.x system, however, Java 5 is required to compile/build ActiveMQ. + +1. From a browser, navigate to [www.ActiveMQ.org](http://www.ActiveMQ.org). +2. Click the [Download](#GettingStarted3.x-Download) link in the navigation pane (the left pane). +3. Click the [Current development SNAPSHOT release](#GettingStarted3.x-CurrentdevelopmentSNAPSHOTrelease) link. +4. Select the version of ActiveMQ to download (you may have to scroll down to see the ActiveMQ snapshots). The filename will be similar to: activemq-x.x.x-tar.gz or activemq-x.x.x-src.tar.gz. +5. Extract the files from the gzip file into a directory of your choice. For example: + + + +6. If a binary snapshot was downloaded, to make it executable, the ActiveMQ script may need its permissions changed: + + + + #For a binary snapshot, proceed to the [Starting ActiveMQ](#GettingStarted3.x-StartingActiveMQ) section of this document. + #If a source snapshot was downloaded perform steps 6 - 8 of the [Unix Source Installation](#GettingStarted3.x-UnixSourceInstallation) procedure. + +7. Proceed to the [Testing the Installation](#GettingStarted3.x-TestingtheInstallation) section. + +Starting ActiveMQ +----------------- + +#### On Windows: + +From a console window, change to the installation directory and run ActiveMQ: + + + +where activemq\_install\_dir is the directory in which ActiveMQ was installed, e.g., c:\\Program Files\\ActiveMQ-3.x. +Then type: + + + +**NOTE:** Working directories get created relative to the current directory. To create working directories in the proper place, ActiveMQ must be launched from its home/installation directory. + +#### On Unix: + +From a command shell, change to the installation directory and run ActiveMQ: + + + +where activemq\_install\_dir is the directory in which ActiveMQ was installed, e.g., /usr/local/activemq-3.x. +Then type: + + + +**NOTE:** Working directories get created relative to the current directory. To create working directories in the proper place, ActiveMQ must be launched from its home/installation directory. + +![](https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif) + +**Warning** +Do NOT close the console or shell in which ActiveMQ was started, as that will terminate ActiveMQ (unless ActiveMQ was started with nohup). + + + +Testing the Installation +------------------------ + +If ActiveMQ is up and running without problems, the Window's console window or the Unix command shell will display information similar to the following log line: + + + + +ActiveMQ's default port is 61616. From another window run netstat and search for port 61616. + +From a Windows console, type: + + + +**OR** + +From a Unix command shell, type: + + + +Stopping ActiveMQ +----------------- + +For both Windows and Unix installations, terminate ActiveMQ by typing "CTRL-C" in the console or command shell in which it is running. + +If ActiveMQ was started in the background on Unix, the process can be killed, with the following: + + + +Configuring ActiveMQ +-------------------- + +The ActiveMQ broker should now run. You can configure the broker by specifying an [Xml Configuration](xml-configuration.html "Xml Configuration") file as a parameter to the _activemq_ command. + +See the [Initial Configuration](initial-configuration.html "Initial Configuration") for details of which jars you need to add to your classpath to start using ActiveMQ in your Java code + +If you want to use JNDI to connect to your JMS provider then please view the [JNDI Support](jndi-support.html "JNDI Support"). If you are a Spring user you should read about [Spring Support](spring-support.html "Spring Support") + +After the installation, ActiveMQ is running with a basic configuration. For details on configuring options, please see refer to the [Configuration](configuration.html "Configuration") section. + +Additional Resources +-------------------- + +If you are new to using ActiveMQ, running the [Examples](examples.html "Examples") is a good next step to learn more about ActiveMQ. + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/getting-started.md b/getting-started.md new file mode 100644 index 0000000..0a685e0 --- /dev/null +++ b/getting-started.md @@ -0,0 +1,355 @@ +Apache ActiveMQ ™ -- Getting Started + +[Using ActiveMQ](using-activemq.html) > [Getting Started](getting-started.html) + + +Introduction +------------ + +This document describes how to install and configure ActiveMQ 4.x/5.x for both Unix and Windows' platforms. + +Document Organization +--------------------- + +The Getting Started Guide for ActiveMQ 4.x document contains the following sections: + +/**/ + +* [Introduction](#GettingStarted-Introduction) +* [Document Organization](#GettingStarted-DocumentOrganization) +* [Pre-Installation Requirements](#GettingStarted-Pre-InstallationRequirements) +* [Installation Procedure for Windows](#GettingStarted-InstallationProcedureforWindows) + * [Windows Binary Installation](#GettingStarted-WindowsBinaryInstallation) + * [Windows Source Installation](#GettingStarted-WindowsSourceInstallation) + * [Windows Developer's Release](#GettingStarted-WindowsDeveloper'sRelease) +* [Installation Procedure for Unix](#GettingStarted-InstallationProcedureforUnix) + * [Unix Binary Installation](#GettingStarted-UnixBinaryInstallationUnixBinaryInstallation) + * [Using Homebrew installer on OSX](#GettingStarted-UsingHomebrewinstalleronOSX) + * [Unix Source Installation](#GettingStarted-UnixSourceInstallation) + * [Unix Developer's Release](#GettingStarted-UnixDeveloper'sRelease) +* [Starting ActiveMQ](#GettingStarted-StartingActiveMQStartingActiveMQ) + + * [On Windows:](#GettingStarted-OnWindows:) + * [On Unix:](#GettingStarted-OnUnix:) + + * [More help](#GettingStarted-Morehelp) +* [Testing the Installation](#GettingStarted-TestingtheInstallationTestingtheInstallation) + * [Using the administrative interface](#GettingStarted-Usingtheadministrativeinterface) + * [Logfile and console output](#GettingStarted-Logfileandconsoleoutput) + * [Listen port](#GettingStarted-Listenport) +* [Monitoring ActiveMQ](#GettingStarted-MonitoringActiveMQ) +* [Stopping ActiveMQ](#GettingStarted-StoppingActiveMQ) +* [Configuring ActiveMQ](#GettingStarted-ConfiguringActiveMQ) +* [Additional Resources](#GettingStarted-AdditionalResources) + +Pre-Installation Requirements +----------------------------- + +**Hardware:** + +* ~ 60 MB of free disk space for the ActiveMQ 5.x binary distribution. + (you need additional disk space for storing persistent messages to disk) +* ~ 300 MB of free disk space for the ActiveMQ 5.x source or developer's distributions. + +**Operating Systems:** + +* Windows: Windows XP SP2, Windows 2000, Windows Vista, Windows 7. +* Unix: Ubuntu Linux, Powerdog Linux, MacOS, AIX, HP-UX, Solaris, or any Unix platform that supports Java. + +**Environment:** + +* [Java Runtime Environment (JRE)](http://www.oracle.com/technetwork/java/javase/downloads/index.html)  **JRE 1.7** (1.6 for version <=5.10.0) + (a JDK is required if you plan to recompile source code) +* The JAVA_HOME environment variable must be set to the directory where the JRE is installed + (Unix: the binary "java" has to be resolvable by the PATH variable; execute "which java" to verify) +* [Maven](http://maven.apache.org/) 3.0.0 build system + (only if you plan to recompile source code) +* [JARs](http://cvs.apache.org/repository/geronimo-spec/jars/) that will be used must be added to the classpath. + (only if you plan to recompile source code) + +Installation Procedure for Windows +---------------------------------- + +This section of the Getting Started Guide explains how to install binary and source distributions of ActiveMQ on a Windows system. + +#### Windows Binary Installation + +This procedure explains how to download and install the binary distribution on a Windows system. + +1. Download the latest release + (see [Download](download.html) -\> "The latest stable release" -> "apache-activemq-x.x.x-bin.zip") +2. Extract the files from the ZIP file into a directory of your choice. +3. Proceed to the [#Starting ActiveMQ](getting-started.html) section of this document. +4. Following start-up, go to the [#Testing the Installation](getting-started.html) section of this document. + +#### Windows Source Installation + +This procedure explains how to download and install the source distribution on a Windows system. + +1. Download the latest release + (see [Download](download.html) -\> "The latest stable release" -> "apache-activemq-x.x.x-source-release.zip") +2. Extract ActiveMQ from the ZIP file into a directory of your choice. +3. + The recommended method of building ActiveMQ is the following: + + REM add "-Dmaven.test.skip=true" if tests are failing on your system (should not happen) + mvn clean install + + where \[activemq\_install\_dir\] is the directory in which ActiveMQ was installed. + +4. If you prefer to use an IDE, then you can auto-generate the IDE's project file using maven plugins: + + mvn eclipse:eclipse + + or + + mvn idea:idea + + Feel free to use any other applicable IDE. Please refer to the [plugin reference](http://maven.apache.org/reference/plugins/plugins.html) for more details. + + +1. Start ActiveMQ from the target directory, for example: + + cd \[activemq\_install\_dir\]\\assembly\\target + unzip activemq-x.x-SNAPSHOT.zip + cd activemq-x.x-SNAPSHOT + bin\\activemq + + **NOTE:** Working directories get created relative to the current directory. To create the working directories in the proper place, ActiveMQ must be launched from its home/installation directory. + +2. Proceed to the [#Testing the Installation](getting-started.html) section. + + Warning + + If you are building ActiveMQ 4.x under Windows using Cygwin there is a path name length limitation. If the path name length is exceeded, you may see build errors. To correct this, move the ActiveMQ source directory higher in the file system tree, e.g., /cygdrive/c/d/sm. + + +#### Windows Developer's Release + +This procedure explains how to download and install the latest developer's snapshot. + +1. Open the release archive: [https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/apache-activemq/](https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/apache-activemq/) + (open one of the SNAPSHOT directories) +2. Select the version of ActiveMQ to download (if necessary, scroll down to see the ActiveMQ snapshots). +3. Extract the files from the ZIP file into a directory of your choice. +4. If a binary snapshot was downloaded, proceed to the [#Starting ActiveMQ](getting-started.html) section of this document. + If a source snapshot was downloaded, perform step 6 and step 7 of the [#Windows Source Installation](getting-started.html) procedure. +5. Following start-up, proceed to the [#Testing the Installation](getting-started.html) section. + +Installation Procedure for Unix +------------------------------- + +#### Unix Binary Installation + +This procedure explains how to download and install the binary distribution on a Unix system. +**NOTE:** There are several alternative ways to perform this type of installation. + +1. Download the activemq zipped tarball file to the Unix machine, using either a browser or a tool, i.e., wget, scp, ftp, etc. for example: + (see [Download](download.html) -\> "The latest stable release") + + wget http://activemq.apache.org/path/tofile/apache-activemq-x.x.x-bin.tar.gz + +2. Extract the files from the zipped tarball into a directory of your choice. For example: + + cd \[activemq\_install\_dir\] + tar zxvf activemq-x.x.x-bin.tar.gz + +3. Proceed to the [#Starting ActiveMQ](getting-started.html) section of this document. + +4. Following start-up, go to the [#Testing the Installation](getting-started.html) section. + +#### Using Homebrew installer on OSX + +If you use OSX as your platform, you can use [Homebrew](http://mxcl.github.com/homebrew/) package manager to easily install Apache ActiveMQ. + +1. After installing Homebrew package manager successfully, just run + + $ brew install apache-activemq + + You can expect the following output: + + ==\> Downloading http://www.gossipcheck.com/mirrors/apache/activemq/apache-activemq/x.x.x/apache-activemq-x.x.x-bin.tar.gz + ######################################################################## 100.0% + ==\> Caveats + Software was installed to: + /usr/local/Cellar/apache-activemq/x.x.x/libexec + ==\> Summary + /usr/local/Cellar/apache-activemq/x.x.x: 406 files, 35M, built in 2 seconds + + +ActiveMQ will be installed in `/usr/local/Cellar/apache-activemq/x.x.x/` directory (where `x.x.x` denotes the actual version being installed). + +Now you can proceed to [#Starting ActiveMQ](getting-started.html) and [#Testing the Installation](getting-started.html) sections. + +#### Unix Source Installation + +This procedure explains how to download and install the source distribution on a Unix system. This procedure assumes the Unix machine has a browser. Please see the previous [#Unix Binary Installation](getting-started.html) section for details on how to install ActiveMQ without a browser. + +1. Download the latest source release + (see [Download](download.html) -\> "The latest stable release" -> "activemq-parent-x.x.x-source-release.zip") +2. Extract the files from the ZIP file into a directory of your choice. For example: + + tar zxvf activemq.x.x-src.tar.gz + +3. Build ActiveMQ using Maven: + The preferred method of building ActiveMQ is the following: + + cd \[activemq\_install\_dir\] + mvn clean install # add "-Dmaven.test.skip=true" if tests are failing on your system (should not happen) + + If Maven crashes with a java.lang.OutOfMemoryError, you you need to do this first (assuming a Bourne-like shell): + + export MAVEN_OPTS="-Xmx512M" + + If you prefer to use an IDE then you can auto-generate the IDE's project file using maven plugins: + + mvn eclipse:eclipse + + or + + mvn idea:idea + + Feel free to use any other applicable IDE. Please refer to the [plugin reference](http://maven.apache.org/reference/plugins/plugins.html) for more details. + **NOTE:** Working directories get created relative to the current directory. To create working directories in the proper place, ActiveMQ must be launched from its home/installation directory. + +4. Proceed to the [#Starting ActiveMQ](getting-started.html) section of this document. +5. Proceed to [#Testing the Installation](getting-started.html) section. + +#### Unix Developer's Release + +This procedure explains how to download and install the latest developer's snapshot. + +1. Open the release archive: [https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/apache-activemq/](https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/apache-activemq/) + (open one of the SNAPSHOT directories) +2. Select the version of ActiveMQ to download (you may have to scroll down to see the ActiveMQ snapshots). + The filename will be similar to: `activemq-x.x.x-tar.gz`. +3. Extract the files from the gzip file into a directory of your choice. For example: + For a binary developer's snapshot: + + tar zxvf activemq-x.x.x.tar.gz + + For a source developer's snapshot: + + tar zxvf activemq-x.x.x-src.tar.gz + +4. If a binary snapshot was downloaded, to make it executable, the `ActiveMQ` script may need its permissions changed: + + cd \[activemq\_install\_dir\]/bin + chmod 755 activemq + +5. For a binary snapshot, proceed to the [#Starting ActiveMQ](getting-started.html) section of this document. +6. If a source snapshot was downloaded perform steps 6 - 8 of the [#Unix Source Installation](getting-started.html) procedure. +7. Proceed to the [#Testing the Installation](getting-started.html) section. + +Starting ActiveMQ +----------------- + +There now follows instructions on how to [run the ActiveMQ Message Broker](run-broker.html). + +#### On Windows: + +From a console window, change to the installation directory and run `ActiveMQ`: + +cd \[activemq\_install\_dir\] + +where `activemq_install_dir` is the directory in which ActiveMQ was installed, e.g., `c:\Program Files\ActiveMQ-5.x`. +Then type: + +bin\\activemq start + +**NOTE:** Working directories get created relative to the current directory. To create working directories in the proper place, ActiveMQ must be launched from its home/installation directory. + +#### On Unix: + +From a command shell, change to the installation directory and run `ActiveMQ` as a **foregroud** process: + +cd \[activemq\_install\_dir\]/bin +./activemq console + +From a command shell, change to the installation directory and run `ActiveMQ` as a **daemon** process: + +cd \[activemq\_install\_dir\]/bin +./activemq start + +### More help + +For other ways of running the broker see [Here](run-broker.html). For example you can run an [embedded broker](how-do-i-embed-a-broker-inside-a-connection.html) inside your JMS Connection to avoid starting a separate process. + +Testing the Installation +------------------------ + +### Using the administrative interface + +* Open the administrative interface +* * URL: [http://127.0.0.1:8161/admin/](http://127.0.0.1:8161/admin/) + * Login: admin + * Passwort: admin +* Navigate to "Queues" +* Add a queue name and click create +* Send test message by klicking on "Send to" + +### Logfile and console output + +If ActiveMQ is up and running without problems, the Window's console window or the Unix command shell will display information similar to the following log line: +(see stdout output or "\[activemq\_install\_dir\]/data/activemq.log") + +Apache ActiveMQ 5.11.1 (localhost, ID:ntbk11111-50816-1428933306116-0:1) started | org.apache.activemq.broker.BrokerService | main + +### Listen port + +ActiveMQ's default port is 61616. From another window run netstat and search for port 61616. + +From a Windows console, type: + +netstat -an|find "61616" + +**OR** + +From a Unix command shell, type: + +netstat -nl|grep 61616 + +Monitoring ActiveMQ +------------------- + +You can monitor ActiveMQ using the [Web Console](web-console.html) by pointing your browser at + +[http://localhost:8161/admin](http://localhost:8161/admin) + +From ActiveMQ 5.8 onwards the web apps is secured out of the box. +The default username and password is admin/admin. You can configure this in the conf/jetty-real.properties file. + +Or you can use the [JMX](jmx.html) support to view the running state of ActiveMQ. + +For more information see the file `docs/WebConsole-README.txt` in the distribution. + +Stopping ActiveMQ +----------------- + +For both Windows and Unix installations, terminate ActiveMQ by typing "CTRL-C" in the console or command shell in which it is running. + +If ActiveMQ was started in the background on Unix, the process can be killed, with the following: + +cd \[activemq\_install\_dir\]/bin +./activemq stop + +Configuring ActiveMQ +-------------------- + +The ActiveMQ broker should now run. You can configure the broker by specifying an [Xml Configuration](xml-configuration.html) file as a parameter to the _activemq_ command. An alternative is to use the [Broker Configuration URI](broker-configuration-uri.html) to configure things on the command line in a concise format (though the configuration options are not as extensive as if you use Java or XML code). You can also + +Also see [Configuring Transports](configuring-transports.html) to see how you can configure the various connection, transport and broker options using the connection URL in the ActiveMQConnectionFactory. + +See the [Initial Configuration](initial-configuration.html) for details of which jars you need to add to your classpath to start using ActiveMQ in your Java code + +If you want to use JNDI to connect to your JMS provider then please view the [JNDI Support](jndi-support.html). If you are a Spring user you should read about [Spring Support](spring-support.html) + +After the installation, ActiveMQ is running with a basic configuration. For details on configuring options, please see refer to the [Configuration](configuration.html) section. + +Additional Resources +-------------------- + +If you are new to using ActiveMQ, running the [Web Samples](web-samples.html) or the [Examples](examples.html) is a good next step to learn more about ActiveMQ. + +The Commercial Providers listed on the [Support](support.html) page may also have additional documentation, examples, tutorials, etc... that can help you get started. + diff --git a/gettingstarted3x.md b/gettingstarted3x.md new file mode 100644 index 0000000..1ec60e9 --- /dev/null +++ b/gettingstarted3x.md @@ -0,0 +1,172 @@ +Apache ActiveMQ ™ -- Getting+Started+3.x + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Using ActiveMQ](using-activemq.html) > [Getting Started](getting-started.html) > [Getting+Started+3.x](gettingstarted3x.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +testing + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/group-membership.md b/group-membership.md new file mode 100644 index 0000000..5ad4694 --- /dev/null +++ b/group-membership.md @@ -0,0 +1,33 @@ +Apache ActiveMQ ™ -- Group Membership + +[Features](features.html) > [ActiveMQ Real Time](activemq-real-time.html) > [Group Membership](group-membership.html) + + +ActiveBlaze supports group membership using a GroupChannel - which can be created from a GroupChannelFactory. +You have to explicitly say which group you want to join/leave - and you can join multiple groups. +Each GroupChannel has both a globally unique id and a name. + +import org.apache.activeblaze.group.*; + +... +BlazeGroupChannelFactory factory = new BlazeGroupChannelFactory(); + +BlazeGroupChannel channel = factory.createGroupChannel("My Channel"); +//join a group +channel.addToGroup("test"); +channel.start(); + +//listen for other members + +channel.addMemberChangedListener(new MemberChangedListener(){ + + public void memberStarted(Member member) { + System.out.println("Member started"); + } + + public void memberStopped(Member member) { + System.out.println("Member stopped"); + } + + }); + diff --git a/ha.md b/ha.md new file mode 100644 index 0000000..0e33abf --- /dev/null +++ b/ha.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- HA + +[Community](community.html) > [FAQ](faq.html) > [Terminology](terminology.html) > [HA](ha.html) + + +High Availability. + +This typically refers to having a number of available instances of a service (such as a Message Broker) such that if the instance you're connected to fails, you can failover quickly to another instance providing _high availabliity_ and resilience. + diff --git a/handling-advisory-messages.md b/handling-advisory-messages.md new file mode 100644 index 0000000..bbdfa00 --- /dev/null +++ b/handling-advisory-messages.md @@ -0,0 +1,538 @@ +Apache ActiveMQ ™ -- Handling Advisory Messages + +[Index](index.html) > [Overview](overview.html) > [Tutorials](tutorials.html) > [Handling Advisory Messages](handling-advisory-messages.html) + +ActiveMQ supports advisory messages which allows you to watch the system using regular CMS messages. A few things that you can currently do with advisory messages are: + +* See consumers, producers and connections starting and stopping +* See temporary destinations being created and destroyed +* Get notified messages expiring on topics and queues +* Observe brokers sending messages to destinations with no consumers. +* See connections starting and stopping + +Advisory messages can be thought as some kind of administrative channel where you receive information regarding what is happening on your JMS provider along with what's happening with producers, consumers and destinations. To learn more about the broker's advisory message support see this [article](../advisory-message.html). + +### **Before You Begin** + +This tutorial assumes that the reader has a working knowledge of the CMS API and knows how to build basic applications using the ActiveMQ-CPP Library. If you aren't sure how to use the CMS API then you should first read the [CMS API Overview](cms-api-overview.html). The tutorial is written against the ActiveMQ-CPP 3.0 release API and while it is possible to handle advisory messages using the older ActiveMQ-CPP 2.x clients there may be some code differences which are not shown in this article. + +### **Subscribing to Advisory Topics** + +To receive advisory message's you first need to subscribe to the Topic that supplies the advisory message you want. You subscribe to these Topics like you would any other destination, the trick is to use the correct name for the Topic that you want to use. Lets first take a look at a couple of the types available for use (this is not a complete set). + +Advisory Topics + +Description + +properties + +Data Structure + +ActiveMQ.Advisory.Connection + +Connection start & stop messages + +ActiveMQ.Advisory.Producer.Queue + +Producer start & stop messages on a Queue + +String='producerCount' - the number of producers + +ProducerInfo + +ActiveMQ.Advisory.Producer.Topic + +Producer start & stop messages on a Topic + +String='producerCount' - the number of producers + +ProducerInfo + +ActiveMQ.Advisory.Consumer.Queue + +Consumer start & stop messages on a Queue + +String='consumerCount' - the number of Consumers + +ConsumerInfo + +ActiveMQ.Advisory.Consumer.Topic + +Consumer start & stop messages on a Topic + +String='consumerCount' - the number of Consumers + +ConsumerInfo + +Now, looking at the above list lets pick one of the Topics and figure out how we would create the CMS Topic to subscribe to in order to receive the advisory messages. Using the Java client we could create the Destination using the utility class **AdvisorySupport** but for now ActiveMQ-CPP doesn't provide such a utility class, hopefully we will see this added in a future release (Contributions are of course always welcomed!). + +If we had a Topic named TOPIC.FOO and we wanted to know when a producer subscribed to that Topic we would need to create a Topic object whose name is **ActiveMQ.Advisory.Producer.Topic.TOPIC.FOO** in order to receive the advisory message we are interested in. We know this because we can look at the above table and see that the **ActiveMQ.Advisory.Producer.Topic** is informed whenever a Producer starts or stops publishing messages on a Topic and we also know that our Topic is named TOPIC.FOO, so adding them together gets us the name of our Advisory Topic, we also know this because we peaked at the AdvisorySupport.java class, and no, that's not cheating. Below is a code snippet showing the creation of the Topic using a CMS Session: + +**Creating an Advisory Topic for Producers on TOPIC.FOO** + + std::auto_ptr advisories( session->createTopic( + "ActiveMQ.Advisory.Producer.Topic.TOPIC.FOO" ) ); + +Once we create the Topic for the advisory messages we want to listen for we just need to create a consumer to listen for them, the code snippet below demonstrates this: + +**Creating an Consumer for an Advisory Topic.** + +std::auto_ptr consumer; +consumer.reset( session->createConsumer( advisories.get() ) ); +consumer->setMessageListener( this ); + +As you can see there is no difference between subscriptions to advisory topics that subscriptions to any other Destination in CMS. In the above example we registered as an asynchronous listener, you can also use the normal blocking **receive** method but we prefer this method. + +### **Dealing with incoming Advisory Messages** + +Every Advisory has the message type 'Advisory' and some predefined message properties, to check a CMS Message for this type you would call the **getCMSType** method on a Message object. In some cases you will know that the only message you are going to receive are advisory messages because your client only subscribes to advisory topics, other times you might have wired multiple MessageConsumers to the same MessageListener in which case you will have to check the message tppe. Once you know you are dealing with an advisory message then you can start to inspect it to determine what sort of message it is and extract the data that is meaningful to your application. + +Many of the advisory messages store meaningful data in the Message properties, for instance the Consumer Start / Stop advisory message contains an element with the key **consumerCount** which is populated with the current number of active consumers on the Topic or Queue in question. Lets take a look at a code snippet now that checks the messages received in an onMessage callback to see if its an advisory message and acts on it if it is: + +**Using the CMS Type to determine if a Message is an Advisory** + + void AdvisoryProducer::onMessage( const cms::Message* message ) { + + if( message->getCMSType() == "Advisory" ) { + + std::cout << "Received an Advisory Message!" << std::endl; + + if( message->propertyExists( "consumerCount" ) ) { + + std::string consumerCount = message->getStringProperty( "consumerCount" ); + std::cout << "Number of Consumers = " << consumerCount << std::endl; + + // Do Something Meaningful here.... + } + + } else { + std::cout << "Received a Non-Advisory Message!" << std::endl; + } + } + +### **Complete Example: Producer that only Produces when there is a Consumer** + +Now that you've seen the basics of advisory message processing its time to show you a complete example that demonstrates what you can do with advisory messages. The following code shows a class header and source file that implements a basic CMS Producer that will send heart beat message to a Topic called **HEART-BEAT-CHANNEL** only when there are active consumers, otherwise it sits idle. + +**AdvisoryProducer Header file** + +#ifndef \_ACTIVEMQCPP\_EXAMPLES\_ADVISORIES\_ADVISORYPRODUCER\_H\_ +#define \_ACTIVEMQCPP\_EXAMPLES\_ADVISORIES\_ADVISORYPRODUCER\_H\_ + +#include +#include + +#include +#include +#include +#include + +#include +#include + +namespace activemqcpp { +namespace examples { +namespace advisories { + + /\*\* + \* A sample Producer that will only send Messages on its Topic when it has + \* received an advisory indicating that there is an active MessageConsumer + \* on the Topic. Once another message comes in indicating that there is no + \* longer a consumer then this Producer stops producing again. + \* + \* @since 3.0 + */ + class AdvisoryProducer : public decaf::lang::Runnable, + public cms::MessageListener { + private: + + volatile bool consumerOnline; + volatile bool shutdown; + decaf::util::concurrent::CountDownLatch shutdownLatch; + + cms::Session* session; + std::auto_ptr consumer; + std::auto_ptr producer; + + public: + + AdvisoryProducer( cms::Session* session ); + virtual ~AdvisoryProducer(); + + /\*\* + \* Shut down the processing that occurs in the Run method. + */ + void stop(); + + /\*\* + \* Run the producer code. + */ + virtual void run(); + + /\*\* + \* Async Message callback. + */ + virtual void onMessage( const cms::Message* message ); + + }; + +}}} + +#endif /* \_ACTIVEMQCPP\_EXAMPLES\_ADVISORIES\_ADVISORYPRODUCER\_H\_ */ + +**AdvisoryProducer Source file** + +#include "AdvisoryProducer.h" + +#include +#include +#include +#include +#include + +using namespace std; +using namespace activemqcpp; +using namespace activemqcpp::examples; +using namespace activemqcpp::examples::advisories; +using namespace decaf; +using namespace decaf::lang; +using namespace decaf::lang::exceptions; + +//////////////////////////////////////////////////////////////////////////////// +AdvisoryProducer::AdvisoryProducer( cms::Session* session ) : shutdownLatch(1) { + + if( session == NULL ) { + throw NullPointerException( + \_\_FILE\_\_, \_\_LINE\_\_, "Session Object passed was Null." ); + } + + std::auto_ptr destination( session->createTopic( + "HEART-BEAT-CHANNEL" ) ); + std::auto_ptr advisories( session->createTopic( + "ActiveMQ.Advisory.Consumer.Topic.HEART-BEAT-CHANNEL" ) ); + + this->shutdown = false; + this->consumerOnline = false; + + this->session = session; + this->producer.reset( session->createProducer( destination.get() ) ); + this->consumer.reset( session->createConsumer( advisories.get() ) ); + this->consumer->setMessageListener( this ); +} + +//////////////////////////////////////////////////////////////////////////////// +AdvisoryProducer::~AdvisoryProducer() { +} + +//////////////////////////////////////////////////////////////////////////////// +void AdvisoryProducer::stop() { + this->shutdown = true; + this->shutdownLatch.await( 3000 ); +} + +//////////////////////////////////////////////////////////////////////////////// +void AdvisoryProducer::run() { + + while( !this->shutdown ) { + + if( this->consumerOnline ) { + + std::auto_ptr message( + this->session->createTextMessage( "Alive" ) ); + + this->producer->send( message.get() ); + + Thread::sleep( 1000 ); + } + } + + this->shutdownLatch.countDown(); +} + +//////////////////////////////////////////////////////////////////////////////// +void AdvisoryProducer::onMessage( const cms::Message* message ) { + + if( message->getCMSType() == "Advisory" ) { + + std::cout << "Received an Advisory Message!" << std::endl; + + if( message->propertyExists( "consumerCount" ) ) { + + std::string consumerCount = message->getStringProperty( "consumerCount" ); + std::cout << "Number of Consumers = " << consumerCount << std::endl; + this->consumerOnline = Integer::parseInt( consumerCount ) > 0 ? true : false; + } + + } else { + std::cout << "Received a Non-Advisory Message!" << std::endl; + } +} + +### ***Advanced Topic**\* Dealing with Command Objects in Advisories + +If you read the ActiveMQ Advisory Message [article](../advisory-message.html) mentioned at the start of this tutorial then you know that certain advisory messages can contain an embedded command object. If you didn't read that [article](../advisory-message.html) then this section is going to be very confusing, so go read it. We can access those command object in CMS with a little work which means we can take full advantage of the Advisory Message feature. + +All Advisory Messages are sent as a basic ActiveMQMessage to your client. The underlying type hierarchy in ActiveMQ-CPP is the same as that of ActiveMQ so the names of the embedded command objects you saw in the Advisory [article](../advisory-message.html) are the same and they contain mostly the same information, although sometimes the information is encoded in a more C++ friendly or unfriendly way depending on your point of view. + +To demonstrate how we can access the command objects lets try and create a client application that listens to the Broker for advisories that indicate that Temporary Destinations have either been created or destroyed. The Broker will publish advisory messages to the "ActiveMQ.Advisory.TempTopic" and "ActiveMQ.Advisory.TempQueue" Topics whenever the corresponding Temporary Destination is created or destroyed and the command object will be of type DestinationInfo. The DestinationInfo object contains a Destination object describing the Destination in question and an Operation Type value telling whether the command is a create or destroy command. First lets look at how we subscribe to this Advisory Topic: + +**Subscribing to a Composite Advisory Topic** + +std::auto_ptr advisories( session->createTopic( + "ActiveMQ.Advisory.TempTopic,ActiveMQ.Advisory.TempQueue" ) ); + +std::auto_ptr consumer; +consumer.reset( session->createConsumer( advisories.get() ) ); +consumer->setMessageListener( this ); + +As you can see in the above code snippet we just create a new Topic object whose name is a composite of the two Topics we want to subscribe on, this will allow our single **MessageConsumer** instance to receive both Temporary Topic and Temporary Queue advisories. As before we also create a **MessageConsumer** and register our class' instance as the asynchronous listener. Now all that's left is to implement the **onMessage** method of the **MessageListener** interface, lets take a look at that code now: + +**Processing an Advisory message with an embedded command object** + +//////////////////////////////////////////////////////////////////////////////// +void TempDestinationAdvisoryConsumer::onMessage( const cms::Message* message ) { + + if( message->getCMSType() == "Advisory" ) { + + std::cout << "Received an Advisory Message!" << std::endl; + + const ActiveMQMessage* amqMessage = + dynamic_cast( message ); + + if( amqMessage != NULL && amqMessage->getDataStructure() != NULL ) { + std::cout << "Advisory Message contains a Command Object!" << std::endl; + + try { + + Pointer info = + amqMessage->getDataStructure().dynamicCast(); + + unsigned char operationType = info->getOperationType(); + + if( operationType == ActiveMQConstants::DESTINATION\_REMOVE\_OPERATION ) { + std::cout << "Temporary Destination {" + << info->getDestination()->getPhysicalName() + << "} Removed." + << std::endl; + } else if( operationType == ActiveMQConstants::DESTINATION\_ADD\_OPERATION ) { + std::cout << "Temporary Destination {" + << info->getDestination()->getPhysicalName() + << "} Added." + << std::endl; + } else { + std::cout << "ERROR: I have no Idea what just happened!" + << std::endl; + } + + } catch( ClassCastException& ex ) { + std::cout << "ERROR: Expected the Command to be a DestinationInfo, " + << "it wasn't so PANIC!!" + << std::endl; + } + } + + } else { + std::cout << "Received a Non-Advisory Message!" << std::endl; + } +} + +Fortunately for use the code above looks more complicated than it really is, lets walk through it a bit more slowly now to understand what is going on: + +**Getting to the ActiveMQMessage object** + +if( message->getCMSType() == "Advisory" ) { + + std::cout << "Received an Advisory Message!" << std::endl; + + const ActiveMQMessage* amqMessage = + dynamic_cast( message ); + + ... Other scary code comes next... + +else { + std::cout << "Received a Non-Advisory Message!" << std::endl; +} + +The first thing we need to do is check that we received an advisory message, ActiveMQ encodes the Message Type as "Advisory" so that's easy enough. We don't technically need to do this here since our consumer only listens on an advisory Topic but its not a bad idea to check. Once we know its an advisory message we know that the message pointer should be of type ActiveMQMessage under that generic cms::Message disguise its wearing so we use a **dynamic_cast** to convert it. Now that we've converted to an ActiveMQMessage what's next, well lets take a look: + +**Checking for an embedded command object** + +if( amqMessage != NULL && amqMessage->getDataStructure() != NULL ) { + std::cout << "Advisory Message contains a Command Object!" << std::endl; + +Every ActiveMQMessage derived object has a method called **getDataStructure** which can be used for all sorts of useful things, here we are trying to see if there is a command object contained in this message, and you guessed it, the getDataStructure method will tell us if there is one. If there is then we can move onto checking for a DestinationInfo object: + +**Getting to the DestinationInfo object** + +try{ + + Pointer info = + amqMessage->getDataStructure().dynamicCast(); + + unsigned char operationType = info->getOperationType(); + + if( operationType == ActiveMQConstants::DESTINATION\_REMOVE\_OPERATION ) { + std::cout << "Temporary Destination {" + << info->getDestination()->getPhysicalName() + << "} Removed." + << std::endl; + } else if( operationType == ActiveMQConstants::DESTINATION\_ADD\_OPERATION ) { + std::cout << "Temporary Destination {" + << info->getDestination()->getPhysicalName() + << "} Added." + << std::endl; + } else { + std::cout << "ERROR: I have no Idea what just happened!" + << std::endl; + } + +} catch( ClassCastException& ex ) { + std::cout << "ERROR: Expected the Command to be a DestinationInfo, " + << "it wasn't so PANIC!!" + << std::endl; +} + +First thing you are probably asking about this code snippet is "what is that Pointer thing?", that is a thread safe smart pointer that is used internally by ActiveMQ-CPP to manage all the pointers that make up the cms::Message objects among other things. We create an instance of a Pointer type which will pointer to our DestinationInfo command if the dynamicCast method is able to make that conversion, if not a ClassCastException is thrown. Once we have the DestinationInfo pointer we can retrieve the Operation Type of the command and then compare it to the constants in ActiveMQConstants to see what is being done to the Destination. There are only two operation types, add and remove, but since the DestinationInfo object encodes the operation type value as an unsigned char we provide a fall-back case to alert us to that error. We are almost done now, all that remains is to output what happened, and also let the user know what the name of the Destination is, the **getPhysicalName** method in the Destination class tells us that. You could also find out whether the Destination is a Topic or a Queue using the Destination object, we leave that as an exercise to the reader. + +### **Complete Example: Consumer that listens for Creation and Destruction of Temporary Destinations** + +The complete code of our client application is shown below, you can also find this code as well as a simple client that creates both a Temporary Topic and a Temporary Queue in the examples folder in the source distribution. + +**TempDestinationAdvisoryConsumer Header File** + +#ifndef \_ACTIVEMQCPP\_EXAMPLES\_ADVISORIES\_TEMPDESTINATIONADVISORYCONSUMER\_H\_ +#define \_ACTIVEMQCPP\_EXAMPLES\_ADVISORIES\_TEMPDESTINATIONADVISORYCONSUMER\_H\_ + +#include +#include + +#include +#include +#include +#include + +#include + +namespace activemqcpp { +namespace examples { +namespace advisories { + + /\*\* + \* Monitors a Broker for Temporary Topic creation and destruction. + \* + \* @since 3.0 + */ + class TempDestinationAdvisoryConsumer : public cms::MessageListener { + private: + + cms::Session* session; + std::auto_ptr consumer; + + public: + + TempDestinationAdvisoryConsumer( cms::Session* session ); + virtual ~TempDestinationAdvisoryConsumer(); + + /\*\* + \* Async Message callback. + */ + virtual void onMessage( const cms::Message* message ); + + }; + +}}} + +#endif /* \_ACTIVEMQCPP\_EXAMPLES\_ADVISORIES\_TEMPDESTINATIONADVISORYCONSUMER\_H\_ */ + +**TempDestinationAdvisoryConsumer Source File** + +#include "TempDestinationAdvisoryConsumer.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace activemqcpp; +using namespace activemqcpp::examples; +using namespace activemqcpp::examples::advisories; +using namespace activemq; +using namespace activemq::commands; +using namespace activemq::core; +using namespace decaf; +using namespace decaf::lang; +using namespace decaf::lang::exceptions; + +//////////////////////////////////////////////////////////////////////////////// +TempDestinationAdvisoryConsumer::TempDestinationAdvisoryConsumer( cms::Session* session ) { + + if( session == NULL ) { + throw NullPointerException( + \_\_FILE\_\_, \_\_LINE\_\_, "Session Object passed was Null." ); + } + + std::auto_ptr advisories( session->createTopic( + "ActiveMQ.Advisory.TempTopic,ActiveMQ.Advisory.TempQueue" ) ); + + this->session = session; + this->consumer.reset( session->createConsumer( advisories.get() ) ); + this->consumer->setMessageListener( this ); +} + +//////////////////////////////////////////////////////////////////////////////// +TempDestinationAdvisoryConsumer::~TempDestinationAdvisoryConsumer() { +} + +//////////////////////////////////////////////////////////////////////////////// +void TempDestinationAdvisoryConsumer::onMessage( const cms::Message* message ) { + + if( message->getCMSType() == "Advisory" ) { + + std::cout << "Received an Advisory Message!" << std::endl; + + const ActiveMQMessage* amqMessage = + dynamic_cast( message ); + + if( amqMessage != NULL && amqMessage->getDataStructure() != NULL ) { + std::cout << "Advisory Message contains a Command Object!" << std::endl; + + try { + + Pointer info = + amqMessage->getDataStructure().dynamicCast(); + + unsigned char operationType = info->getOperationType(); + + if( operationType == ActiveMQConstants::DESTINATION\_REMOVE\_OPERATION ) { + std::cout << "Temporary Destination {" + << info->getDestination()->getPhysicalName() + << "} Removed." + << std::endl; + } else if( operationType == ActiveMQConstants::DESTINATION\_ADD\_OPERATION ) { + std::cout << "Temporary Destination {" + << info->getDestination()->getPhysicalName() + << "} Added." + << std::endl; + } else { + std::cout << "ERROR: I have no Idea what just happened!" + << std::endl; + } + + } catch( ClassCastException& ex ) { + std::cout << "ERROR: Expected the Command to be a DestinationInfo, " + << "it wasn't so PANIC!!" + << std::endl; + } + } + + } else { + std::cout << "Received a Non-Advisory Message!" << std::endl; + } +} + diff --git a/hello-world.md b/hello-world.md new file mode 100644 index 0000000..d238db1 --- /dev/null +++ b/hello-world.md @@ -0,0 +1,160 @@ +Apache ActiveMQ ™ -- Hello World + +[Using ActiveMQ](using-activemq.html) > [Hello World](hello-world.html) + + +The following is a very simple JMS application with multiple, concurrent, consumers and producers. See the [Initial Configuration](initial-configuration.html) guide for details on how to setup your classpath correctly. + +Things you might do after running this example: + +* [Setup a broker](run-broker.html) instead of using the org.activemq.broker.impl.Main class directly +* Use JNDI to lookup a javax.jms.ConnectionFactory rather than creating ActiveMQConnectionFactory directly. +* Implement the javax.jms.MessageListener interface rather than calling consumer.receive() +* Use transactional sessions +* Use a Topic rather than a queue + +The point of this example is to show you the basic code required to use JMS in a straightforward way. The Consumers and Producers could very easy be on completely different machines or in different processes. + +**App.java** + +import org.apache.activemq.ActiveMQConnectionFactory; + +import javax.jms.Connection; +import javax.jms.DeliveryMode; +import javax.jms.Destination; +import javax.jms.ExceptionListener; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.jms.TextMessage; + +/\*\* + \* Hello world! + */ +public class App { + + public static void main(String\[\] args) throws Exception { + thread(new HelloWorldProducer(), false); + thread(new HelloWorldProducer(), false); + thread(new HelloWorldConsumer(), false); + Thread.sleep(1000); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldProducer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldProducer(), false); + Thread.sleep(1000); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldProducer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldProducer(), false); + thread(new HelloWorldProducer(), false); + Thread.sleep(1000); + thread(new HelloWorldProducer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldProducer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldProducer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldProducer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldConsumer(), false); + thread(new HelloWorldProducer(), false); + } + + public static void thread(Runnable runnable, boolean daemon) { + Thread brokerThread = new Thread(runnable); + brokerThread.setDaemon(daemon); + brokerThread.start(); + } + + public static class HelloWorldProducer implements Runnable { + public void run() { + try { + // Create a ConnectionFactory + ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost"); + + // Create a Connection + Connection connection = connectionFactory.createConnection(); + connection.start(); + + // Create a Session + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + + // Create the destination (Topic or Queue) + Destination destination = session.createQueue("TEST.FOO"); + + // Create a MessageProducer from the Session to the Topic or Queue + MessageProducer producer = session.createProducer(destination); + producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); + + // Create a messages + String text = "Hello world! From: " + Thread.currentThread().getName() + " : " + this.hashCode(); + TextMessage message = session.createTextMessage(text); + + // Tell the producer to send the message + System.out.println("Sent message: "+ message.hashCode() + " : " + Thread.currentThread().getName()); + producer.send(message); + + // Clean up + session.close(); + connection.close(); + } + catch (Exception e) { + System.out.println("Caught: " + e); + e.printStackTrace(); + } + } + } + + public static class HelloWorldConsumer implements Runnable, ExceptionListener { + public void run() { + try { + + // Create a ConnectionFactory + ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost"); + + // Create a Connection + Connection connection = connectionFactory.createConnection(); + connection.start(); + + connection.setExceptionListener(this); + + // Create a Session + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + + // Create the destination (Topic or Queue) + Destination destination = session.createQueue("TEST.FOO"); + + // Create a MessageConsumer from the Session to the Topic or Queue + MessageConsumer consumer = session.createConsumer(destination); + + // Wait for a message + Message message = consumer.receive(1000); + + if (message instanceof TextMessage) { + TextMessage textMessage = (TextMessage) message; + String text = textMessage.getText(); + System.out.println("Received: " + text); + } else { + System.out.println("Received: " + message); + } + + consumer.close(); + session.close(); + connection.close(); + } catch (Exception e) { + System.out.println("Caught: " + e); + e.printStackTrace(); + } + } + + public synchronized void onException(JMSException ex) { + System.out.println("JMS Exception occured. Shutting down client."); + } + } +} + diff --git a/hermes-jms.md b/hermes-jms.md new file mode 100644 index 0000000..b5fb2f3 --- /dev/null +++ b/hermes-jms.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- Hermes Jms + +[Tools](tools.html) > [Hermes Jms](hermes-jms.html) + + +You can use ActiveMQ with [Hermes JMS](http://hermesjms.sourceforge.net/) which is a graphical user interface for working with JMS queues. Please refer to the [Hermes JMS](http://hermesjms.sourceforge.net/) site for detailed instructions on using this software. + +### Demo + +Mark Bucayan kindly submitted a [Flash demo](http://activemq.codehaus.org/HermesAndActiveMQ.html) showing how to use ActiveMQ inside Hermes. + +Here are a few steps to get you started with ActiveMQ when using HermesJMS. + +### Add ActiveMQ as a Provider + +You need to register the jars required to run ActiveMQ inside HermesJMS. To do this click on Options -> Preferences. Then on the Providers tab add the following jars: + +* [activemq-all.jar](http://repo1.maven.org/maven2/org/apache/activemq/) Choose the version that matches your projects needs. + +* [geronimo-j2ee-management\_1.0\_spec-1.0.jar](http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0/geronimo-j2ee-management_1.0_spec-1.0.jar) + +### Configure an ActiveMQ Session + +On the Preferences dialog, the Sessions tab, create a new session using the org.activemq.ActiveMQConnectionFactory connection factory. + +You can use the properties table to configure the various factory properties, like the brokerURL to connect to the server, if you wish to connect to a remote ActiveMQ message broker. + +Finally you can add some Destinations to the dialog on this page. (Right click to add). Add the destination FOO.BAR for the default test programs. + +### Viewing messages on queues + +Use the tree control to open your session and the FOO.BAR destination. Try browse the queue. Then run the ActiveMQ sample producer via + +mvn producer + +And hitting refresh in HermesJMS and you should see the messages that have just been published. + diff --git a/hermes-screenshot.md b/hermes-screenshot.md new file mode 100644 index 0000000..10cb3fc --- /dev/null +++ b/hermes-screenshot.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- Hermes Screenshot + +[Tools](tools.html) > [Hermes Screenshot](hermes-screenshot.html) + + +The following is an example of running HermesJms with ActiveMQ on OS X + +![](http://activemq.codehaus.org/hermes.png) + diff --git a/horizontal-scaling.md b/horizontal-scaling.md new file mode 100644 index 0000000..f8da281 --- /dev/null +++ b/horizontal-scaling.md @@ -0,0 +1,5 @@ +Apache ActiveMQ ™ -- Horizontal Scaling + +[Features](features.html) > [Horizontal Scaling](horizontal-scaling.html) + + diff --git a/how-can-i-add-a-new-type-of-transport.md b/how-can-i-add-a-new-type-of-transport.md new file mode 100644 index 0000000..0806902 --- /dev/null +++ b/how-can-i-add-a-new-type-of-transport.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- How can I add a new type of transport + +[Community](community.html) > [FAQ](faq.html) > [Developing ActiveMQ](developing-activemq.html) > [How can I add a new type of transport](how-can-i-add-a-new-type-of-transport.html) + + +ActiveMQ is specifically designed to allow custom transports to be plugged in. You can programatically create TransportConnector instances and add them to the BrokerService in Java code using the [BrokerService.addConnector() method](http://activemq.codehaus.org/maven/apidocs/org/apache/activemq/broker/BrokerService.html#addConnector(org.apache.activemq.broker.TransportConnector)) + +or you can use the transport discovery mechanism, so that folks can just use your new transport using the neat URI syntax. + +The way it works is that the URI scheme (e.g. "vm") is used to find a text file on the classpath - [here are all the schemes provided](http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-core/src/main/resources/META-INF/services/org/apache/activemq/transport/). + +then the contents of the file is the class name of a Java class on the classpath which extends the [TransportFactory class](http://activemq.codehaus.org/maven/apidocs/org/apache/activemq/transport/TransportFactory.html). + +Then once you've implemented a Transport and TransportFactory class, folks can use your new transport using a URI in the JMS client or broker XML config file using the URI using your new schema name. e.g. if you wrote a new _foo_ transport, you could use a URI of _foo://localhost?myParam=bar_ + diff --git a/how-can-i-avoid-serialization-of-objects-in-objectmessage.md b/how-can-i-avoid-serialization-of-objects-in-objectmessage.md new file mode 100644 index 0000000..4f1b1da --- /dev/null +++ b/how-can-i-avoid-serialization-of-objects-in-objectmessage.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How can I avoid serialization of Objects in ObjectMessage + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I avoid serialization of Objects in ObjectMessage](how-can-i-avoid-serialization-of-objects-in-objectmessage.html) + + +Use the VM transport and see [details on how to disable serialization to pass by value](how-should-i-use-the-vm-transport.html) + diff --git a/how-can-i-contribute.md b/how-can-i-contribute.md new file mode 100644 index 0000000..3eadf3b --- /dev/null +++ b/how-can-i-contribute.md @@ -0,0 +1,96 @@ +Apache ActiveMQ ™ -- How can I contribute + +[Community](community.html) > [FAQ](faq.html) > [Developing ActiveMQ](developing-activemq.html) > [How can I contribute](how-can-i-contribute.html) + + +How can I contribute to Apache ActiveMQ? +---------------------------------------- + +There are many ways you can help make ActiveMQ a better piece of software - please dive in and help! + +Try surf the documentation - if somethings confusing or not clear, let us know. Download the code & try it out and see what you think. Browse the source code. Got an itch to scratch, want to tune some operation or add some feature? + +Want to do some hacking on ActiveMQ? Try surfing to our [issue tracker](http://issues.apache.org/jira/browse/AMQ) for open issues or features that need to be implemented, take ownership of an issue and try fix it. + +Getting in touch +---------------- + +There are various ways of communicating with the ActiveMQ community. + +* join us on the [Discussion Forums](discussion-forums.html) or subscribe to the [Mailing Lists](mailing-lists.html) and take part in any conversations +* pop by on in [irc](irc.html) and say hi + +* add some comments to the [wiki](navigation.html) + +If you find a bug or problem +---------------------------- + +Please raise a new issue in our [issue tracker](https://issues.apache.org/jira/browse/AMQ) + +If you can create a JUnit test case then your issue is more likely to be resolved quicker. +e.g. take a look at some of the existing [unit tests cases](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tree;f=activemq-unit-tests/src/test;h=185a655c5200ed30fd2964bc236c18c5bde534c4;hb=refs/heads/master) + +Then we can add your issue to the test suite and then we'll know when its really fixed and we can ensure that the problem **stays fixed** in future releases. + +If you want to help out with the documentation +---------------------------------------------- + +If you want to contribute to the ActiveMQ documentation you should first subscribe our [dev@](mailto:dev-subscribe@activemq.apache.org) where ActiveMQ developers interact with each other. If you want edit rights on the ActiveMQ site, create an account in the [ActiveMQ wiki](https://cwiki.apache.org/confluence/display/ACTIVEMQ) and fill in and submit an ICLA to the ASF (see the [Committer Guide](becoming-a-committer.html)). Then ask on the dev@ list to be granted edit rights and an admin will do so fairly quickly. If you want to just contribute the content, please submit the content on the dev@ list or create an issue and attach it there. **All** contributions are highly appreciated. + +Working on the code +------------------- + +Grab the [Source](source.html) from git + +Build the project. + +export MAVEN_OPTS="-Xmx512M -XX:MaxPermSize=128M" +mvn -Dtest=false install + +PS: You might need to build multiple times (if you get a build error) because sometimes maven fails to download all the files. + +Create a project in your IDE. e.g. if you are using Eclipse the following should do the trick. + +mvn eclipse:eclipse + +Then import the projects into your workspace. + +Creating patches +---------------- + +We gladly accept patches if you can find ways to improve, tune or fix ActiveMQ in some way. + +Most IDEs can create nice patches now very easily. e.g. in Eclipse just right click on a file/directory and select Team -> Create Patch. Then just save the patch as a file and then submit it. (You may have to click on Team -> Share... first to enable the Subversion options). + +If you're a command line person try the following to create the patch + +diff -u Main.java.orig Main.java >> patchfile.txt + +or + +git diff Main.java >> patchfile.txt + +Submitting patches +------------------ + +The easiest way to submit a patch is to create a new JIRA issue, attach the patch and tick the ASF license grant check box, tick the Patch Attached button on the issue then fire off an email to the [Mailing Lists](mailing-lists.html) or [Discussion Forums](discussion-forums.html). + +Becoming a commmitter +--------------------- + +Once you've got involved as above, we may well invite you to be a committer. See [Becoming a committer](becoming-a-committer.html) for more details. + +Using the issue tracker +----------------------- + +Before you can raise an issue in the issue tracker you need to register with it. This is quick & painless. + +If you want to have a go at fixing an issue you need to be in the list of activemq-developers on the issue tracker. To join the group, please mail the [dev@activemq.apache.org](mailto:dev@activemq.apache.org) mail list with the email address you used to register with the issue tracker and we'll add you to the group. + +Why not dive in the [issue tracker](https://issues.apache.org/jira/browse/AMQ), and try tackle some of our outstanding issues? + +Becoming a committer +-------------------- + +The first step is contributing to the project; if you want to take that a step forward and become a fellow committer on the project then see the [Committer Guide](becoming-a-committer.html) + diff --git a/how-can-i-enable-detailed-logging.md b/how-can-i-enable-detailed-logging.md new file mode 100644 index 0000000..5b8bfab --- /dev/null +++ b/how-can-i-enable-detailed-logging.md @@ -0,0 +1,28 @@ +Apache ActiveMQ ™ -- How can I enable detailed logging + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How can I enable detailed logging](how-can-i-enable-detailed-logging.html) + + +How can I enable detailed logging +--------------------------------- + +We use [slf4j](#) which allows the underlying logging implementation to be statically bound at startup. +By default we ship with log4j but feel free to make your own choice. + +If you've got log4j.jar on your classpath you can use a log4j.properties file to configure the logging levels. See the [log4j.properties example](http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/resources/log4j.properties) for the kind of thing you'll need. + +e.g. adding the following to your log4j.properties will enable tracing of ActiveMQ code: + +in 4.x + +log4j.logger.org.apache.activemq=INFO +log4j.logger.org.apache.activemq.spring=WARN + +in 3.x + +log4j.logger.org.activemq=TRACE + +### Getting help on log4j + +If you are new to log4j please see the [log4j manual](http://logging.apache.org/log4j/docs/manual.html) + diff --git a/how-can-i-get-a-list-of-the-topics-and-queues-in-a-broker.md b/how-can-i-get-a-list-of-the-topics-and-queues-in-a-broker.md new file mode 100644 index 0000000..3f448c7 --- /dev/null +++ b/how-can-i-get-a-list-of-the-topics-and-queues-in-a-broker.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- How can I get a list of the topics and queues in a broker + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I get a list of the topics and queues in a broker](how-can-i-get-a-list-of-the-topics-and-queues-in-a-broker.html) + + +How can I get a list of the topics and queues in a broker? +---------------------------------------------------------- + +As of 5.1.0 you can use the new [DestinationSource](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/advisory/DestinationSource.html) on an ActiveMQConnection to access the available queues or topics or listen to queues/topics being created or deleted. + +You can use [JMX](jmx.html) to browse the available topics and queues in a broker together with the connectors and connections along with their statistics etc. + +Or you can access statistics [programmatically](how-can-i-see-what-destinations-are-used.html). + +Finally you could just use the [Web Console](web-console.html) + diff --git a/how-can-i-get-help.md b/how-can-i-get-help.md new file mode 100644 index 0000000..8ab3336 --- /dev/null +++ b/how-can-i-get-help.md @@ -0,0 +1,49 @@ +Apache ActiveMQ ™ -- How can I get help + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How can I get help](how-can-i-get-help.html) + + +Getting Help +------------ + +If you are experiencing problems using ActiveMQ then please report your problem to our [Issue Tracker](http://issues.apache.org/activemq/browse/AMQ). You may also find it useful to discuss your issues with the community on the [Discussion Forums](discussion-forums.html) or join one of our [Mailing Lists](mailing-lists.html). + +* [Issue Tracker](https://issues.apache.org/jira/browse/AMQ) +* [Discussion Forums](discussion-forums.html) +* [Mailing Lists](mailing-lists.html) +* [FAQ](faq.html) + +### How to get help + +Before you report a problem you might want to read the [FAQ](faq.html). +Whenever you are reporting a problem please be sure to include as much information as possible; the more we know the more chance of a quicker resolution. + +* Which [version](http://activemq.apache.org/download.html) of ActiveMQ +* What platform of Java (e.g., Java SE 6 with JRE/[JDK](#) 1.6.0 or J2SE 5 with JRE/[JDK](#) 1.5.0) +* Any particular application/web server or container being used - if so what version? +* Stack traces generally really help! If in doubt include the whole thing; often exceptions get wrapped in other exceptions and the exception right near the bottom explains the actual error, not the first few lines at the top. It's very easy for us to skim-read past unnecessary parts of a stack trace. +* Log output (e.g., `data/activemq.log`) can be useful too; sometimes [enabling DEBUG logging](how-do-i-change-the-logging.html) can help +* Your code & configuration files are often useful + +### How to get help faster + +We can help you much quicker if you try the following + +* Provide us with a JUnit test case that demonstrates your issue. e.g. if you think you've found a bug, can you create a test case to demonstrate the bug? +* [Submit a patch](contributing.html) fixing the bug! (We also buy you beer when we meet you if you submit bug fixes ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) ) +* For memory leaks or performance related issues, if you can run a profiler on your test case and attach the output as a file (or zipped file if it's huge) to the JIRA we can normally fix things much faster. e.g. you could run [jmap](http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html)/[jhat](http://java.sun.com/javase/6/docs/technotes/tools/share/jhat.html), JProfiler or YourKit on your code and send us the output. To find memory leaks it's quicker to resolve if you can tell us what classes are taking up all of the RAM; we can normally figure out what's wrong from that. + +Commercial Support +------------------ + +This is an open source project, so the amount of time we have available to help resolve your issue is often limited as all help is provided on a volunteer basis. If you want to get priority help, need to get up to speed quickly, require some training or mentoring, or need full 24 x 7 production support you should contact a commercial company specializing in ActiveMQ support such as... + +* [apifocal](https://apifocal.com) is a Professional Services company. Headquartered near Washington, DC, USA, APIfocal provides consulting and training for leveraging the Apache Integration stack and commercial ESBs at large scale, adding automation and devops capabilities. +* [Media Driver](http://mediadriver.com) provides consulting services and management tools for Apache ActiveMQ and the Apache Integration stack for both the commercial and public sector.  We bring a full suite of project delivery services including business and technical analysis, proof of concepts, architectural guidance, best practice integration, and project management.  Media Driver offers training classes for developers and administrators, as well as middleware management software. +* [Rogue Wave / OpenLogic](http://www.openlogic.com/) has a dedicated team of OSS experts offering round-the-clock Production Support with competitive SLAs for troubleshooting ActiveMQ issues and outages. Rogue Wave offers a comprehensive week-long instructor-led training program for developers and admins. Rogue Wave OpenLogic also provides Architecture and Design Consulting, and a Developer Support contract to assist in the development of messaging applications. +* [Red Hat](http://www.redhat.com/products/jbossenterprisemiddleware/amq/) offers JBoss A-MQ, a supported distribution of Apache ActiveMQ, that include Enterprise Developer and Production Support, and offer training and consultancy for enterprise deployments. +* [Savoir Technologies, Inc](http://www.savoirtech.com) provides enterprise consulting, training and support for ActiveMQ and a host of other Apache service containers. Savoir can provide best practice mentoring for developing with ActiveMQ, as well as architectural/design reviews, troubleshooting and SOA infrastructure implementations. Savoir's staff includes some of the contributors of ActiveMQ who are on the ground consulting and are familiar with real world implementations and issues. +* [Total Transaction Management (TTM)](http://www.ttmsolutions.com/) provides ActiveMQ consulting and support, as well as security and [monitoring](http://www.ttmsolutions.com/Transactional_Software_Solutions/Active_Monitor_AMon.php/) add-on products and [reference guide](http://www.ttmsolutions.com/Apache_Software/ActiveMQ_Reference_Guide.php) for ActiveMQ. +* [Tomitribe](http://tomitribe.com) are experts in Tomcat and ActiveMQ integration, champions of Open Source and Java EE.  Tomitribe offers consulting, training and support for TomEE, Tomcat, ActiveMQ, CXF and more. +* [TytoEASE](http://www.tytoease.com/activemq) offers support, consulting and training on enterprise ready open source projects including ActiveMQ.   Support offerings are at three levels with guaranteed SLA's. The company's consulting work is short term to help troubleshoot, fine-tune, do architectural reviews or help with initial design.  TytoEASE's focus is on the Enterprise with how customers integrate open source with their current technologies. + diff --git a/how-can-i-get-the-source-code-from-subversion.md b/how-can-i-get-the-source-code-from-subversion.md new file mode 100644 index 0000000..b5429bd --- /dev/null +++ b/how-can-i-get-the-source-code-from-subversion.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- How can I get the source code from subversion + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How can I get the source code from subversion](how-can-i-get-the-source-code-from-subversion.html) + + +ActiveMQ 5 +========== + +Web Browsing of the git Repo +---------------------------- + +To browse via the web: + +[https://git-wip-us.apache.org/repos/asf?p=activemq.git](https://git-wip-us.apache.org/repos/asf?p=activemq.git) + +Checking out from the git Repo +------------------------------ + +git clone [https://git-wip-us.apache.org/repos/asf/activemq.git](https://git-wip-us.apache.org/repos/asf/activemq.git) + +Only project developers can commit to the git repo via this method. SSH must be installed on your client machine. Enter your site password when prompted. + +Building the code +----------------- + +To then build the code, see [Building](building.html). + +ActiveMQ Artemis +================ + +Web Browsing of the ASF git Repo +-------------------------------- + +To browse via the web: + +[https://git-wip-us.apache.org/repos/asf?p=activemq-artemis.git](https://git-wip-us.apache.org/repos/asf?p=activemq-artemis.git) + +Browsing the Github Repo  +------------------------- + +[https://github.com/apache/activemq-artemis](https://github.com/apache/activemq-artemis) + +Checking out from the Github Repo +--------------------------------- + +git clone [https://github.com/apache/activemq-artemis](https://github.com/apache/activemq-artemis) + +**Committers:** Please follow the instructions for properly configuring the [Instructions for Core Contributors/Hacking Guide](https://github.com/apache/activemq-artemis/blob/master/docs/hacking-guide/en/SUMMARY.md) + +**Contributors:** Please create a [pull request](https://github.com/apache/activemq-artemis) to contribute changes to the source code.  + +Building the code +----------------- + +To then build the code, take a look at [Building the distribution](https://github.com/apache/activemq-artemis/blob/master/docs/hacking-guide/en/building.md) + diff --git a/how-can-i-make-activemq-faster.md b/how-can-i-make-activemq-faster.md new file mode 100644 index 0000000..3080c8a --- /dev/null +++ b/how-can-i-make-activemq-faster.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How can I make ActiveMQ faster + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I make ActiveMQ faster](how-can-i-make-activemq-faster.html) + + +See the [Performance](performance.html) page for information about the performance of ActiveMQ and it's tuning parameters. + diff --git a/how-can-i-monitor-activemq.md b/how-can-i-monitor-activemq.md new file mode 100644 index 0000000..f3c57a9 --- /dev/null +++ b/how-can-i-monitor-activemq.md @@ -0,0 +1,36 @@ +Apache ActiveMQ ™ -- How can I monitor ActiveMQ + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I monitor ActiveMQ](how-can-i-monitor-activemq.html) + + +How can I monitor ActiveMQ +-------------------------- + +Starting with ActiveMQ 5.8.0 [Jolokia](http://www.jolokia.org/) is bundled which provides a RESTful interface to ActiveMQ's JMX capabilities. An open source third party tool that connects via Jolokia is [hawt.io](http://hawt.io/), an HTML-5 web console with an ActiveMQ plugin that is at least worth being familiar with as ActiveMQ and hawt.io share developers. + +In ActiveMQ 4.x you can monitor the broker to see what destinations are being used, their activity along with connections and subscriptions using the following tools + +* [JMX](jmx.html) and a JMX console such as [jConsole](http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html) +* The [Web Console](web-console.html) +* the [Advisory Message](advisory-message.html) feature (using JMS messages to monitor the system) +* The [Command Agent](command-agent.html); ActiveMQ.Agent topic that you query for status +* The [Visualisation](visualisation.html) plug-in +* The [Statistics](http://activemq.apache.org/statisticsplugin.html) plug-in (from 5.3) + +### Third Party Tools + +* [jmxtrans](https://github.com/jmxtrans/jmxtrans) which can be used to continuously query ActiveMQ via JMX and write to a chosen output. For instance, write to a graphite database file which can then be used to graph trends over time and be queried by Nagios to alarm should your thresholds be exceeded. +* [ActiveMQ Monitor (AMon)](http://www.ttmsolutions.com/Transactional_Software_Solutions/Active_Monitor_AMon.php) +* [Apache ActiveMQBrowser](http://sourceforge.net/projects/activemqbrowser/) +* [HermesJMS](http://www.hermesjms.com/confluence/display/HJMS/Home) +* [HermesJMS/soapUI](http://www.soapui.org/JMS/working-with-jms-messages.html) +* [Hyperic HQ](http://www.hyperic.com/products/open-source-systems-monitoring) and [Hyperic HQ Enterprise](http://www.hyperic.com/products/enterprise-systems-monitoring) +* [FuseHQ](http://fusesource.com/products/fuse-hq/) (based on Hyperic HQ Enterprise) +* [iTKO LISA Test](http://www.itko.com/products/jms.jsp) +* [Geronimo Administration Console](https://cwiki.apache.org/GMOxDOC11/geronimo-administration-console.html#GeronimoAdministrationConsole-JMSServer) (JMS Resources) +* [Media Driver Integrated Console](https://mediadriver.com/software/) can manage and monitor ActiveMQ, IBM MQ and Tibco EMS + +### See Also + +* [How can I monitor the connection with the broker](how-can-i-monitor-the-connection-with-the-broker.html) + diff --git a/how-can-i-monitor-the-connection-with-the-broker.md b/how-can-i-monitor-the-connection-with-the-broker.md new file mode 100644 index 0000000..dcbf734 --- /dev/null +++ b/how-can-i-monitor-the-connection-with-the-broker.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- How can I monitor the connection with the broker + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I monitor the connection with the broker](how-can-i-monitor-the-connection-with-the-broker.html) + + +How can I monitor the connection with the broker +------------------------------------------------ + +You can monitor the status of the connection with the broker via the [addTransportListener() method on the ActiveMQConnection](http://activemq.apache.org/maven/apidocs/org/apache/activemq/ActiveMQConnection.html#addTransportListener%28org.apache.activemq.transport.TransportListener). + +This method takes a [TransportListener](http://activemq.apache.org/maven/apidocs/org/apache/activemq/transport/TransportListener.html) which is notified as the connection is established & dropped. It also allows you to work with the [Failover Transport](failover-transport-reference.html) yet still know the status of the connection. + +### See Also + +* [How can I monitor ActiveMQ](how-can-i-monitor-activemq.html) + diff --git a/how-can-i-see-what-destinations-are-used.md b/how-can-i-see-what-destinations-are-used.md new file mode 100644 index 0000000..fcd0fcb --- /dev/null +++ b/how-can-i-see-what-destinations-are-used.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- How can I see what destinations are used + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I see what destinations are used](how-can-i-see-what-destinations-are-used.html) + + +The easiest way is to use [JMX](jmx.html) by pointing your JMX console or JConsole at the broker JVM. + +You can also get all of the active destinations from the broker using Java code via [getDestinations()](http://activemq.apache.org/maven/5.8.0/apidocs/org/apache/activemq/broker/region/Region.html#getDestinations%28org.apache.activemq.command.ActiveMQDestination%29). + +You can also get a Map of all the [Destination](http://activemq.apache.org/maven/5.8.0/apidocs/org/apache/activemq/broker/region/Destination.html) objects indexed by ActiveMQDestination via [getDestinationMap()](http://activemq.apache.org/maven/5.8.0/apidocs/org/apache/activemq/broker/region/Region.html#getDestinationMap%28%29). This allows you to look at the individual destination details such as the queue depths and so forth + diff --git a/how-can-i-support-auto-reconnection.md b/how-can-i-support-auto-reconnection.md new file mode 100644 index 0000000..1e9d5e3 --- /dev/null +++ b/how-can-i-support-auto-reconnection.md @@ -0,0 +1,20 @@ +Apache ActiveMQ ™ -- How can I support auto reconnection + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I support auto reconnection](how-can-i-support-auto-reconnection.html) + + +How can I support auto reconnection? +------------------------------------ + +Networks are unreliable and sockets do get dropped from time to time (it could be a network glitch, dodgy router, firewall, or someone could even just restart a broker). + +You often want a JMS client to automatically handle the fact that the connection to the broker was lost such that the JMS client either reconnnects to the same broker when it becomes available, or reconnects to another broker in the cluster. + +Its easy to perform auto-reconnection. In Apache ActiveMQ using the [failover transport](failover-transport-reference.html) in which the JMS client (connection) will automatically reconnect to the broker if there is a socket exception. + +Just use the following connection URI (setting the brokerURL in the ActiveMQConnectionFactory) + +failover:tcp://host:port + +You can use a list of URIs to specify which machines to connect to and use discovery to find the brokers to connect to. More details on this see [Configuring Transports](configuring-transports.html) + diff --git a/how-can-i-support-priority-queues.md b/how-can-i-support-priority-queues.md new file mode 100644 index 0000000..c743dbb --- /dev/null +++ b/how-can-i-support-priority-queues.md @@ -0,0 +1,50 @@ +Apache ActiveMQ ™ -- How can I support priority queues + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I support priority queues](how-can-i-support-priority-queues.html) + + +How can I support priority queues? +---------------------------------- + +### Use Message Priority + +A common requirement is to support priority consumption; so high priority messages are consumed before low priority. + +In version 5.4 priority queues are supported. Both the message cursors and the message stores (KahaDB and JDBC) support message priority. The support is disabled by default so it needs to be be enabled using [per destination policies](per-destination-policies.html) through xml configuration, in the example below, 'prioritizedMessages' is enabled for all queues. + + + + + + ... + +The full range of priority values (0-9) are supported by the [JDBC](jdbc-support.html) message store. For [KahaDB](kahadb.html) three priority categories are supported, Low (< 4), Default (= 4) and High (> 4). + +Since the message cursors (and client side) implement strict ordering of priorities, it's possible to observe strict priority ordering if message dispatching can happen from the cache and not have to hit the disk (i.e., your consumers are fast enough to keep up with producers), or if you're using non-persistent messages that never have to flush to disk (using the FilePendingMessageCursor). However, once you hit a situation where consumers are slow, or producers are just significantly faster, you'll observe that the cache will fill up (possibly with lower priority messages) while higher priority messages get stuck on disk and not available until they're paged in. In this case, you can make a decision to tradeoff optimized message dispatching for priority enforcement. You can disable the cache, message expiration check, and lower you consumer prefetch to 1 to ensure getting the high priority messages from the store ahead of lower priority messages Note, this sort of tradeoff can have significant performance implications, so you must test your scenarios thoroughly. : + + + + + + ... + +### Alternative strategies + +#### Use Selectors + +You can have say 100 consumers using a selector to find the high priority stuff + +JMSPriority > 6 + +then have 50 consumers doing average or above + +JMSPriority >= 4 + +Then say 10 consumers consuming all messages (so all priorities). Then this way you'll have a pool of threads always processing high priority messages - giving you very efficient priority based dispatching of messages without ActiveMQ having to batch up messages and reorder them before dispatching them. + +#### Use Resequencer + +You can reorder messages on some input queue A and send them to queue B in sorted order to avoid having to change your clients. This avoids the need to use selectors in your application as shown above. + +To do this use the [Resequencer](http://activemq.apache.org/camel/resequencer.html) from the [Enterprise Integration Patterns](enterprise-integration-patterns.html) + diff --git a/how-can-i-use-different-network-protocols.md b/how-can-i-use-different-network-protocols.md new file mode 100644 index 0000000..d72de76 --- /dev/null +++ b/how-can-i-use-different-network-protocols.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How can I use different network protocols + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How can I use different network protocols](how-can-i-use-different-network-protocols.html) + + +For easy configuration, ActiveMQ supports a configurable URL to denote the connection mechanism to other clients. There is an example of how to do this along with a description of the available protocols in the [Protocols overview](uri-protocols.html) + diff --git a/how-do-distributed-queues-work.md b/how-do-distributed-queues-work.md new file mode 100644 index 0000000..400ffb0 --- /dev/null +++ b/how-do-distributed-queues-work.md @@ -0,0 +1,55 @@ +Apache ActiveMQ ™ -- How do distributed queues work + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do distributed queues work](how-do-distributed-queues-work.html) + + +There are various [Topologies](topologies.html) that you can employ with ActiveMQ, where clients are connected to message brokers in various ways like + +* peer based +* client server +* hub and spoke + +Each client communicates with a broker using some kind of [client library and network protocol](cross-language-clients.html). + +To create distributed queues or topics we need to have the message brokers communicate with each other. There are two different types of broker to broker communication... + +Master/Slave for High Availability +---------------------------------- + +A [Master/Slave Cluster](masterslave.html) is used for [HA](ha.html). Basically it means that all messages are replicated across each broker in the master/slave cluster. If the Master goes down, the clients can automatically failover to a slave which will have all the messages already, so each message is highly available. The Slave(s) provide a hot standby broker which will always be in sync ready to take over if the master goes away due to hardware failure etc. + +Master/Slave works by having some form of replication; each message is owned by every broker in the logical cluster. A master/slave cluster then acts as one logical message broker which could then be connected via store and forward to other brokers (as we'll see in the next section). + +### Distributed Queues and Topics + +In Master/Slave, queues and topics are all replicated between each broker in the cluster (so often to a master and maybe a single slave). So each broker in the cluster has exactly the same messages available at any time so if a master fails, clients failover to a slave and you don't loose a message. + +Store and forward networks of brokers +------------------------------------- + +A [Store and Forward Network of Brokers](networks-of-brokers.html) means the messages travel from broker to broker until they reach a consumer; with each message being owned by a single broker at any point in time. When a JMS producer sends a message to a JMS consumer, it may travel through several brokers to reach its final destination. ActiveMQ uses [Consumer Priority](consumer-priority.html) so that local JMS consumers are always higher priority than remote brokers in a store and forward network. + +Note though that a store and forward network is not a solution for message [HA](ha.html); if a broker fails in a Store and Forward network, the messages owned by that broker remain inside the broker's persistent store until the broker comes back online. If you need [HA](ha.html) of messages then you need to use Master/Slave described above. + +Store and forward is often used in large networks where producers are on one LAN and consumers are on another LAN and you wish to use a broker on each LAN as a kind of network concentrator to minimise chattiness over the WAN between them (and to minimise the number of connections required across the WAN too). Similar uses of store and forward can be found when using firewalls or SSL across certain networks etc. One other use case for store and forward networks is if your OS does not support many sockets (and you can't reconfigure that) you could use a store and forward network to connect massive numbers of clients together in one logical network. + +### Distributed Queues in Store/Forward + +When we publish a message on a queue, it is stored in the persistent store of the broker that the publisher is communicating. Then if that broker is configured to store/foward to other brokers and clients, the broker will send it to _one_ of these clients (which could be a node or a broker depending on the dispatch algorithm). This dispatch algorithm continues until the message is finally dispatched and consumed by a client. + +At any point in time the message will only exist in one broker's store until its consumed. Note that messages are only distributed onto other brokers if there is a consumer on those brokers. + +e.g. if we had broker A, B, C and a publisher on a queue on A. If we have consumers on the queue on A and B then messages for the queue will be spread across both brokers A and B; some messages going to B, some being consumed on A, none going to C. If a consumer on the queue starts +on C, then messages will flow there too. If the consumer stops then no more messages will be dispatched to C. + +Distributed Topics in Store/Forward +----------------------------------- + +For topics the above algorithm is followed except, every interested client receives a copy of the message - plus ActiveMQ will check for loops (to avoid a message flowing infinitely around a ring of brokers). + +### See Also + +* [How do I configure distributed queues or topics](how-do-i-configure-distributed-queues-or-topics.html) +* [MasterSlave](masterslave.html) +* [Networks of Brokers](networks-of-brokers.html) + diff --git a/how-do-durable-queues-and-topics-work.md b/how-do-durable-queues-and-topics-work.md new file mode 100644 index 0000000..624fdfe --- /dev/null +++ b/how-do-durable-queues-and-topics-work.md @@ -0,0 +1,19 @@ +Apache ActiveMQ ™ -- How do durable queues and topics work + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How do durable queues and topics work](how-do-durable-queues-and-topics-work.html) + + +Durable queues keep messages around persistently for any suitable consumer to consume them. Durable queues do not need to concern themselves with which consumer is going to consume the messages at some point in the future. There is just one copy of a message that any consumer in the future can consume. + +Durable topics however are different as they must logically persist an instance of each suitable message for every durable consumer - since each durable consumer gets their own copy of the message. + +For example imagine a durable subscriber S starts up subscribing to topic T at time D1. Some publisher sends messages M1, M2, M3 to the topic and S will receive each of these messages. Then S is stopped and the publisher continues to send M4, M5. + +When S restarts at D2, the publisher sends M6 and M7. Now S will receive M4, M5 followed by M6 and M7 and all future messages. i.e. S will receive all messages from M1..M7. + +This is the difference between durable and non-durable consuming. If S were a non-durable consumer then it would only have received M1, M2, M3 and M6, M7 - not M4 and M5. i.e. because the subscription is durable, S will receive every message sent to T whether the subscriber is running or not. For non-durable topics, only messages delivered to the topic T when S is running are delivered. + +So for durable topic subscription, the JMS provider needs to be able to identify S when it shuts down and later on in the future reconnects, so it can know what messages to send to it while it was not running. JMS specification dictates that the identification of S is done by a combination of the clientID and the durable subscriber name. This is so that the JMS connection S uses can have many different durable subscriptions on different topics or on the same topic with different selectors - yet the JMS provider can know which message for which subscription to keep around for it. + +So setting the clientID on a JMS connection is vital (along with using a sensible durable consumer name) for durable topic subscription. Its not an issue for other [QoS](qos.html) + diff --git a/how-do-i-access-activemq-from-c.md b/how-do-i-access-activemq-from-c.md new file mode 100644 index 0000000..67563ce --- /dev/null +++ b/how-do-i-access-activemq-from-c.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How do I access ActiveMQ from C + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I access ActiveMQ from C](how-do-i-access-activemq-from-c.html) + + +See the [C Integration](c-integration.html) page for the available options. + diff --git a/how-do-i-access-activemq-from-csharp-or-dotnet.md b/how-do-i-access-activemq-from-csharp-or-dotnet.md new file mode 100644 index 0000000..fa4f035 --- /dev/null +++ b/how-do-i-access-activemq-from-csharp-or-dotnet.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How do I access ActiveMQ from CSharp or dotNet + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I access ActiveMQ from CSharp or dotNet](how-do-i-access-activemq-from-csharp-or-dotnet.html) + + +Unable to render {include} The included page could not be found. + diff --git a/how-do-i-access-activemq-from-ruby-perl-python-php.md b/how-do-i-access-activemq-from-ruby-perl-python-php.md new file mode 100644 index 0000000..83f088a --- /dev/null +++ b/how-do-i-access-activemq-from-ruby-perl-python-php.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How do I access ActiveMQ from Ruby, Perl, Python, PHP + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I access ActiveMQ from Ruby, Perl, Python, PHP](how-do-i-access-activemq-from-ruby-perl-python-php.html) + + +Use [Stomp](http://stomp.codehaus.org/) which is a simple to implement client protocol for working with ActiveMQ and other messaging systems. + diff --git a/how-do-i-add-my-own-plugins.md b/how-do-i-add-my-own-plugins.md new file mode 100644 index 0000000..079f145 --- /dev/null +++ b/how-do-i-add-my-own-plugins.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How do I add my own plugins + +[Community](community.html) > [FAQ](faq.html) > [Developing ActiveMQ](developing-activemq.html) > [How do I add my own plugins](how-do-i-add-my-own-plugins.html) + + +See [Developing Plugins](developing-plugins.html) for how to add your own functionality into Apache ActiveMQ + diff --git a/how-do-i-avoid-maven-downloading-latest-jars.md b/how-do-i-avoid-maven-downloading-latest-jars.md new file mode 100644 index 0000000..1d03af8 --- /dev/null +++ b/how-do-i-avoid-maven-downloading-latest-jars.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- How do I avoid Maven downloading latest jars + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How do I avoid Maven downloading latest jars](how-do-i-avoid-maven-downloading-latest-jars.html) + + +You can use the -o switch (for offline mode) to avoid maven auto-downloading new snapshot jars (e.g. the Geronimo jars at the time of writing). + +maven -o + +or to run a server go to the \\assembly module and run + +maven -o server + diff --git a/how-do-i-back-up-kahadb.md b/how-do-i-back-up-kahadb.md new file mode 100644 index 0000000..eb0ebdc --- /dev/null +++ b/how-do-i-back-up-kahadb.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- How do I back-up KahaDB + +[Community](community.html) > [FAQ](faq.html) > [Persistence Questions](persistence-questions.html) > [How do I back-up KahaDB](how-do-i-back-up-kahadb.html) + + +In creating a backup, there may be an issue with the lock file, or with an inuse journal file. The lock file is not important but you would want the latest journal files. + +1. Freeze the filesystem containing the database to ensure that you get a consistent snapshot of the journal. +2. Back-up the database using any of the standard back-up mechanisms. + +Batch writes are serialised and followed by an fsync, so the fsfreeze will either block the next write or the next fsync. Either way is fine from a consistency point of view. The index is checkpointed to the journal periodically, so recovery of the index will at worst be from the last know good state. + diff --git a/how-do-i-bridge-different-jms-providers.md b/how-do-i-bridge-different-jms-providers.md new file mode 100644 index 0000000..7a8fdba --- /dev/null +++ b/how-do-i-bridge-different-jms-providers.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- How do I bridge different JMS providers + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I bridge different JMS providers](how-do-i-bridge-different-jms-providers.html) + + +To bridge from ActiveMQ to another JMS provider use the [JMS bridge](jms-to-jms-bridge.html). + +To bridge to another kind of transport completely, use [Camel](http://camel.apache.org) or [ServiceMix](http://servicemix.apache.org) + diff --git a/how-do-i-build-but-disable-the-unit-tests.md b/how-do-i-build-but-disable-the-unit-tests.md new file mode 100644 index 0000000..c0f0f39 --- /dev/null +++ b/how-do-i-build-but-disable-the-unit-tests.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- How do I build but disable the unit tests + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How do I build but disable the unit tests](how-do-i-build-but-disable-the-unit-tests.html) + + +How do I build but disable the unit tests +----------------------------------------- + +The test cases in ActiveMQ can take a very long time to run! ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) + +To disable this you can try the following + +mvn install -Dmaven.test.skip=true + diff --git a/how-do-i-change-dispatch-policy.md b/how-do-i-change-dispatch-policy.md new file mode 100644 index 0000000..e461013 --- /dev/null +++ b/how-do-i-change-dispatch-policy.md @@ -0,0 +1,33 @@ +Apache ActiveMQ ™ -- How do I change dispatch policy + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I change dispatch policy](how-do-i-change-dispatch-policy.html) + + +This is much simpler and more powerful in ActiveMQ 4.0 - you can configure different [Dispatch Policies](dispatch-policies.html) directly. + +For now in ActiveMQ 3.x we have a [PrefetchPolicy configuration](what-is-the-prefetch-limit-for.html). This allows a certain number of messages to be dispatched to a consumer before they are acknowledged. This feature is to achieve high performance; the higher the value the less likely it is that a client has to wait for messages to arrive before processing the message and so the higher the throughput. + +e.g. under heavy load of a busy system you probably want to dispatch 1000 or so messages to a consumer, so as soon as its ready to receive a message, there are a bunch of them in memory waiting to be used - rather than having a slow request-response RPC each time. + +However the effect of this is that when you send a small number of messages, they tend to all go to one consumer unless you've lots of messages. Note that this issue can be avoided in 4.x as there is now a configurable DispatchPolicy so that you can enforce, say, round robin dispatch policy to ensure that messages are dispatched fairly to avoid this issue. + +In ActiveMQ 3.x or later a work around for this issue is to reconfigure the PrefetchPolicy on the ConnectionFactory/Connection so that the broker only prefetches a single message per consumer; though this will greatly reduce the performance and throughput of the system. + +### Configuring the dispatch policy in ActiveMQ 4.x + +In AMQ 4.x, the dispatch policy can now be configured on the xml configuration file (ie. activemq.xml) +ie. + + + + + + + + + + + + + + diff --git a/how-do-i-change-the-logging.md b/how-do-i-change-the-logging.md new file mode 100644 index 0000000..7b566fb --- /dev/null +++ b/how-do-i-change-the-logging.md @@ -0,0 +1,120 @@ +Apache ActiveMQ ™ -- How do I change the logging + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I change the logging](how-do-i-change-the-logging.html) + + +How do I change the logging +--------------------------- + +We use [slf4j](#) to log information in the broker client and the broker itself so you can fully configure which logging levels are used and whether to log to files or the console etc. For more information see the [log4j manual.](http://logging.apache.org/log4j/docs/manual.html). + +You can disable the ActiveMQ logging by editing the **conf/log4j.properties** file to disable all INFO level logging for activemq by adding this line + +log4j.logger.org.apache.activemq=WARN + +or to disable stdout logging all together change this line + +log4j.rootLogger=INFO, stdout, out + +to + +log4j.rootLogger=INFO, out + +How Do I Change the Logging at Runtime? +--------------------------------------- + +The default logging level in ActiveMQ is INFO. This can be seen by starting up the default ActiveMQ binary in a terminal. In doing so, you will see the output shown below: + +$ ./bin/activemq +ACTIVEMQ_HOME: /Users/bsnyder/amq/apache-activemq-5.1.0 +ACTIVEMQ_BASE: /Users/bsnyder/amq/apache-activemq-5.1.0 +Loading message broker from: xbean:activemq.xml +INFO BrokerService - Using Persistence Adapter: AMQPersistenceAdapter(/Users/bsnyder/amq/apache-activemq-5.1.0/data) +INFO BrokerService - ActiveMQ 5.1.0 JMS Message Broker (localhost) is starting +INFO BrokerService - For help or more information please see: http://activemq.apache.org/ +INFO AMQPersistenceAdapter - AMQStore starting using directory: /Users/bsnyder/amq/apache-activemq-5.1.0/data +INFO KahaStore - Kaha Store using data directory /Users/bsnyder/amq/apache-activemq-5.1.0/data/kr-store/state +INFO AMQPersistenceAdapter - Active data files: \[\] +INFO KahaStore - Kaha Store using data directory /Users/bsnyder/amq/apache-activemq-5.1.0/data/kr-store/data +INFO TransportServerThreadSupport - Listening for connections at: tcp://mongoose.local:61616 +INFO TransportConnector - Connector openwire Started +INFO TransportServerThreadSupport - Listening for connections at: ssl://mongoose.local:61617 +INFO TransportConnector - Connector ssl Started +INFO TransportServerThreadSupport - Listening for connections at: stomp://mongoose.local:61613 +INFO TransportConnector - Connector stomp Started +INFO TransportServerThreadSupport - Listening for connections at: xmpp://mongoose.local:61222 +INFO TransportConnector - Connector xmpp Started +INFO NetworkConnector - Network Connector default-nc Started +INFO BrokerService - ActiveMQ JMS Message Broker (localhost, ID:mongoose.local-56138-1224025139259-0:0) started +INFO log - Logging to org.slf4j.impl.JCLLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog +INFO log - jetty-6.1.9 +INFO WebConsoleStarter - ActiveMQ WebConsole initialized. +INFO /admin - Initializing Spring FrameworkServlet 'dispatcher' +INFO log - ActiveMQ Console at http://0.0.0.0:8161/admin +INFO log - ActiveMQ Web Demos at http://0.0.0.0:8161/demo +INFO log - RESTful file access application at http://0.0.0.0:8161/fileserver +INFO log - Started SelectChannelConnector@0.0.0.0:8161 +INFO FailoverTransport - Successfully connected to tcp://localhost:61616 + +But stopping ActiveMQ to change the logging level is not always feasible. There are many cases where the logging level and other configuration details may need to be changed at runtime. Using a JMX tool such as jconsole, the logging configuration file can be changed and reloaded without shutting down ActiveMQ. + +To change the ActiveMQ logging level from INFO to DEBUG while ActiveMQ is running, start up jconsole, point to the ActiveMQ instance and navigate to the Broker object's Operations tab as shown below: + +![](how-do-i-change-the-logging.data/reloadLog4jProperties1.png) + +To enable debug level logging in ActiveMQ, edit the `conf/log4j.properties` file that is part of the ActiveMQ binary distribution to disable INFO level logging and enable DEBUG level logging from this: + +log4j.rootLogger=INFO, stdout, out +log4j.logger.org.apache.activemq.spring=WARN +log4j.logger.org.springframework=WARN +log4j.logger.org.apache.xbean.spring=WARN + +\# When debugging or reporting problems to the ActiveMQ team, +\# comment out the above lines and uncomment the next. + +#log4j.rootLogger=DEBUG, out, stdout + +to this: + +#log4j.rootLogger=INFO, stdout, out +log4j.logger.org.apache.activemq.spring=WARN +log4j.logger.org.springframework=WARN +log4j.logger.org.apache.xbean.spring=WARN + +\# When debugging or reporting problems to the ActiveMQ team, +\# comment out the above lines and uncomment the next. + +log4j.rootLogger=DEBUG, out, stdout + +Notice that the line `log4j.rootLogger=INFO, stdout, out` has been commented out and the line `log4j.rootLogger=DEBUG, out, stdout` has been uncommented. Save this change and then, in jconsole, click the button named **reloadLog4jProperties** as shown below: + +![](how-do-i-change-the-logging.data/reloadLog4jProperties2.png) + +After clicking the **reloadLog4jProperties** button, the dialog pops up stating, 'Method successfully invoked'. This just lets you know that the `reloadLog4jProperties` method was invoked to reload the `conf/log4j.properties` file. Now notice in the terminal where ActiveMQ is running that the logging that is being output is now DEBUG: + +INFO WebConsoleStarter - ActiveMQ WebConsole initialized. +INFO /admin - Initializing Spring FrameworkServlet 'dispatcher' +INFO log - ActiveMQ Console at http://0.0.0.0:8161/admin +INFO log - ActiveMQ Web Demos at http://0.0.0.0:8161/demo +INFO log - RESTful file access application at http://0.0.0.0:8161/fileserver +INFO log - Started SelectChannelConnector@0.0.0.0:8161 +INFO FailoverTransport - Successfully connected to tcp://localhost:61616 +DEBUG InactivityMonitor - 10000 ms elapsed since last write check. +DEBUG InactivityMonitor - 10000 ms elapsed since last write check. +DEBUG AbstractRegion - Removing consumer: ID:mongoose.local-56517-1224026019987-0:0:-1:1 +DEBUG AbstractRegion - Removing consumer: ID:mongoose.local-56511-1224026011897-0:0:1:1 +DEBUG TransportConnection - Stopping connection: /127.0.0.1:56518 +DEBUG TcpTransport - Stopping transport tcp:///127.0.0.1:56518 +DEBUG TransportConnection - Stopped connection: /127.0.0.1:56518 +DEBUG TransportConnection - Connection Stopped: /127.0.0.1:56518 +DEBUG AbstractRegion - Removing consumer: ID:mongoose.local-56511-1224026011897-0:0:-1:1 +DEBUG TransportConnection - Stopping connection: /127.0.0.1:56512 +DEBUG TcpTransport - Stopping transport tcp:///127.0.0.1:56512 +DEBUG TransportConnection - Stopped connection: /127.0.0.1:56512 +DEBUG TransportConnection - Connection Stopped: /127.0.0.1:56512 +DEBUG InactivityMonitor - 9999 ms elapsed since last write check. +DEBUG InactivityMonitor - 10000 ms elapsed since last write check. +DEBUG InactivityMonitor - 29999 ms elapsed since last read check. + +Disabling DEBUG level logging and enabling INFO level logging is done by editing the `log4j.properties` file and clicking the **reloadLog4jProperties** button again. + diff --git a/how-do-i-change-the-message-store-directory-for-an-embedded-broker.md b/how-do-i-change-the-message-store-directory-for-an-embedded-broker.md new file mode 100644 index 0000000..d10c5f4 --- /dev/null +++ b/how-do-i-change-the-message-store-directory-for-an-embedded-broker.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- How do I change the message store directory for an embedded broker + +[Community](community.html) > [FAQ](faq.html) > [Persistence Questions](persistence-questions.html) > [How do I change the message store directory for an embedded broker](how-do-i-change-the-message-store-directory-for-an-embedded-broker.html) + + +Embedded brokers create an ActiveMQ directory under the current working directory to store it's persistent message data. To change the location of the directory used by the message store, set the **activemq.store.dir** system property to the directory you want it to use. + +Example: + +java -Dactivemq.store.dir=/temp your.Application + diff --git a/how-do-i-compile-from-the-source.md b/how-do-i-compile-from-the-source.md new file mode 100644 index 0000000..8bdd025 --- /dev/null +++ b/how-do-i-compile-from-the-source.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- How do I compile from the source + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How do I compile from the source](how-do-i-compile-from-the-source.html) + + +How do I compile from the source code? +-------------------------------------- + +See the [Building](building.html) page + diff --git a/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.md b/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.md new file mode 100644 index 0000000..62d7458 --- /dev/null +++ b/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.md @@ -0,0 +1,45 @@ +Apache ActiveMQ ™ -- How do I configure 10s of 1000s of Queues in a single broker ? + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I configure 10s of 1000s of Queues in a single broker ?](how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.html) + + +Scaling to tens of thousands of Queues in a single broker is relatively straightforward - but requires some configuration changes from the default. + +Reducing Threads +---------------- + +With the default configuration, ActiveMQ is configured to use a dispatch thread per Queue - you can use set the optimizedDispatch property on the destination policy entry - see [configuring Queues](per-destination-policies.html). + +ActiveMQ can optionally use internally a thread pool to control dispatching of messages - but as a lot of deployment operating systems are good at handling a large number of threads, this is off by default. To enable this option, either set the ACTIVEMQ\_OPTS to disable dedicated task runners in the start up script, INSTALL\_DIR/bin/activemq -e.g. + +ACTIVEMQ_OPTS="-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=false" + +or you can set ACTIVEMQ_OPTS in /etc/activemq.conf. + +**Note:** From ActiveMQ 5.6 onwards the dedicated task runner is disabled by default (see .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-3667](https://issues.apache.org/jira/browse/AMQ-3667?src=confmacro) ). + +To reduce the number of threads used for the transport - take a look at using the NIO transport - see [Configuring Transports](configuring-transports.html) + +Here is an [example](http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/sample-conf/activemq-scalability.xml) of this in use in one of the provided sample broker configuration files. + +Reducing Memory Consumption +--------------------------- + +Reduce the memory used per thread - see [reducing memory consumption](javalangoutofmemory.html) + +Reduce number of file descriptors +--------------------------------- + +ActiveMQ uses the amqPersistenceAdapter by default for persistent messages. Unfortunately, this persistence adapter (as well as the kahaPersistenceAdapter) opens a file descriptor for each queue. When creating large numbers of queues, you'll quickly run into the limit for your OS. + +You can either choose another [persistence option](persistence.html) + +or - try out the new [KahaDB](kahadb.html) in version 5.3 and higher + +Increase the limit on file descriptors per process +-------------------------------------------------- + +Try [googling for the OS you are using](http://tinyurl.com/o9qs2f) + diff --git a/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker.md b/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker.md new file mode 100644 index 0000000..50bd5a4 --- /dev/null +++ b/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker.md @@ -0,0 +1,43 @@ +Apache ActiveMQ ™ -- How do I configure 10s of 1000s of Queues in a single broker + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I configure 10s of 1000s of Queues in a single broker](how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker.html) + + +Scaling to tens of thousands of Queues in a single broker is relatively straightforward - but requires some configuration changes from the default. + +Reducing Threads +---------------- + +With the default configuration, ActiveMQ is configured to use a dispatch thread per Queue - you can use set the optimizedDispatch property on the destination policy entry - see [configuring Queues](per-destination-policies.html). + +ActiveMQ can optionally use internally a thread pool to control dispatching of messages - but as a lot of deployment operating systems are good at handling a large number of threads, this is off by default. To enable this option, either set the ACTIVEMQ\_OPTS to disable dedicated task runners in the start up script, INSTALL\_DIR/bin/activemq -e.g. + +ACTIVEMQ_OPTS="-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=false" + +or you can set ACTIVEMQ_OPTS in /etc/activemq.conf. + +**Note:** From ActiveMQ 5.6 onwards the dedicated task runner is disabled by default (see .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-3667](https://issues.apache.org/jira/browse/AMQ-3667?src=confmacro) ). + +To reduce the number of threads used for the transport - take a look at using the NIO transport - see [Configuring Transports](configuring-transports.html) + +Here is an [example](http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/sample-conf/activemq-scalability.xml) of this in use in one of the provided sample broker configuration files. + +Reducing Memory Consumption +--------------------------- + +Reduce the memory used per thread - see [reducing memory consumption](javalangoutofmemory.html) + +Reduce number of file descriptors +--------------------------------- + +ActiveMQ uses the amqPersistenceAdapter by default for persistent messages. Unfortunately, this persistence adapter (as well as the kahaPersistenceAdapter) opens a file descriptor for each queue. When creating large numbers of queues, you'll quickly run into the limit for your OS. + +You can either choose another [persistence option](persistence.html) + +or - try out the new [KahaDB](kahadb.html) in version 5.3 and higher + +Increase the limit on file descriptors per process +-------------------------------------------------- + +Try [googling for the OS you are using](http://tinyurl.com/o9qs2f) + diff --git a/how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages-.md b/how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages-.md new file mode 100644 index 0000000..77a2786 --- /dev/null +++ b/how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages-.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- How do I configure ActiveMQ to hold 100s of millions of Queue Messages ? + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I configure ActiveMQ to hold 100s of millions of Queue Messages ?](how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages-.html) + + +Nearly all messaging systems (certainly open source ones) hold either a copy of a persistent message or a reference to a persisted message in memory. This is primarily to try and improve performance, but it also can significantly decrease the complexity of implementation. In fact ActiveMQ version 4 and below worked this - way - by holding references to persisted messages in memory. + +However there is a limitation to this approach, no matter how much memory you have at your disposal, you will hit a limit to the number persistent messages a broker can handle at any particular time. + +To get around this limitation, ActiveMQ introduced a paging cache - for all message stores (except the memory store) to get the best of both worlds - great performance and the ability to hold 100s of millions of messages in persistent store. ActiveMQ is **not** limited by memory availability, but by the size of the disk available to hold the persistent messages. + +For more information see: [Message Cursors](message-cursors.html) + diff --git a/how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages.md b/how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages.md new file mode 100644 index 0000000..14d782a --- /dev/null +++ b/how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- How do I configure ActiveMQ to hold 100s of millions of Queue Messages + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I configure ActiveMQ to hold 100s of millions of Queue Messages](how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages.html) + + +Nearly all messaging systems (certainly open source ones) hold either a copy of a persistent message or a reference to a persisted message in memory. This is primarily to try and improve performance, but it also can significantly decrease the complexity of implementation. In fact ActiveMQ version 4 and below worked this - way - by holding references to persisted messages in memory. + +However there is a limitation to this approach, no matter how much memory you have at your disposal, you will hit a limit to the number persistent messages a broker can handle at any particular time. + +To get around this limitation, ActiveMQ introduced a paging cache - for all message stores (except the memory store) to get the best of both worlds - great performance and the ability to hold 100s of millions of messages in persistent store. ActiveMQ is **not** limited by memory availability, but by the size of the disk available to hold the persistent messages. + +For more information see: [Message Cursors](message-cursors.html) + diff --git a/how-do-i-configure-activemq-to-use-aio-server-transport.md b/how-do-i-configure-activemq-to-use-aio-server-transport.md new file mode 100644 index 0000000..f67d33e --- /dev/null +++ b/how-do-i-configure-activemq-to-use-aio-server-transport.md @@ -0,0 +1,50 @@ +Apache ActiveMQ ™ -- How do I configure ActiveMQ to use AIO server transport + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I configure ActiveMQ to use AIO server transport](how-do-i-configure-activemq-to-use-aio-server-transport.html) + + +For Windows XP: + +1\. Download AIO (Asynchronous IO for Java) from IBM ([http://www.alphaworks.ibm.com/tech/aio4j](http://www.alphaworks.ibm.com/tech/aio4j)). + +2\. Unzip the downloaded file and copy the following files: + +* ibmaio.dll +* ibmaio-1.0.jar + +3\. Place ibmaio.dll into Windows System32 folder. (You may need to restart afterwards for this to take effect) + +4\. Include ibmaio-1.0.jar in the classpath. + +5\. Edit ActiveMQ's configuration file (**activemq.xml**, found in the conf folder). Look the following snippet: + + + + + + + + + . + . + + + + +Change the connector settings, change **tcpServerTransport** to **serverTransport** and remove the unneeded parameters): + + + + + + + + +Example: + + + + + + + diff --git a/how-do-i-configure-automatic-reconnection.md b/how-do-i-configure-automatic-reconnection.md new file mode 100644 index 0000000..13e1125 --- /dev/null +++ b/how-do-i-configure-automatic-reconnection.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- How do I configure automatic reconnection + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I configure automatic reconnection](how-do-i-configure-automatic-reconnection.html) + + +If a JMS broker goes down, ActiveMQ can automatically reconnect to an available JMS broker using the **failover:** protocol. Not only does this automatically reconnect, it will also resume any temporary destinations, sessions, producers and most importantly consumers. + +All of this happens silently inside the JMS client so you don't need to worry about it in your application code. + +e.g. connecting to the URL + +failover:tcp://host1:port1,tcp://host2:port2 + +For more detail see [Failover Transport Reference](failover-transport-reference.html) + diff --git a/how-do-i-configure-distributed-queues-or-topics.md b/how-do-i-configure-distributed-queues-or-topics.md new file mode 100644 index 0000000..69d824e --- /dev/null +++ b/how-do-i-configure-distributed-queues-or-topics.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- How do I configure distributed queues or topics + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I configure distributed queues or topics](how-do-i-configure-distributed-queues-or-topics.html) + + +How do I configure distributed queues or topics +----------------------------------------------- + +You don't need to explicitly [configure distributed queues or topics](how-do-i-configure-the-queues-i-want.html) as any queue or topic is automatically distributed across other brokers when the brokers are configured in either a store and forward network or a master/slave cluster. + +So you just need to connect brokers together to form either + +* a [Store and Forward Network of Brokers](networks-of-brokers.html), which means the messages travel from broker to broker until they reach a consumer; with each message being owned by a single broker at any point in time +* a [Master/Slave Cluster](masterslave.html), which means all messages are replicated across each broker in the master/slave cluster + +### Also see + +* [How do I configure the queues I want](how-do-i-configure-the-queues-i-want.html) +* [How do distributed queues work](how-do-distributed-queues-work.html) +* [Networks of Brokers](networks-of-brokers.html) +* [MasterSlave](masterslave.html) + diff --git a/how-do-i-configure-the-queues-i-want.md b/how-do-i-configure-the-queues-i-want.md new file mode 100644 index 0000000..d5c90fd --- /dev/null +++ b/how-do-i-configure-the-queues-i-want.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- How do I configure the queues I want + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I configure the queues I want](how-do-i-configure-the-queues-i-want.html) + + +The license could not be verified: License Certificate has expired! + +With ActiveMQ there is no real resaon to explicitly setup/configure the queues you are gonna need. If you try to publish or subscribe from any queue or topic it will be silently created on the fly. + +Sometimes people put destinations into JNDI so that they can be pulled out by their application without needing to know the real, physical queue/topic name. This is fine, you can just add the ActiveMQQueue and ActiveMQTopic objects into JNDI (or any configuration mechanism you wish). + +Also if you use the ActiveMQInitialContextFactory, then you can explicitly configure which destinations appear in the context using the jndi.properties approach. For more information please refer to the [JNDI Support](jndi-support.html) + diff --git a/how-do-i-connect-to-one-of-a-number-of-message-brokers.md b/how-do-i-connect-to-one-of-a-number-of-message-brokers.md new file mode 100644 index 0000000..7a36d99 --- /dev/null +++ b/how-do-i-connect-to-one-of-a-number-of-message-brokers.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- How do I connect to one of a number of message brokers + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I connect to one of a number of message brokers](how-do-i-connect-to-one-of-a-number-of-message-brokers.html) + + +You can specify a list of URLs to connect to (for example if you have message brokers running on a number of machines). To specify a list of URLs, use a comma separated list of URLs with a prefix of list:. e.g. + +list:tcp://localhost:61699,tcp://localhost:61617,tcp://localhost:61698 + +The JMS client will then try and connect to each one in turn, in a random order until one is connected. If they all fail to connect a sleep occurs and then this loop is retried a number of times until either a connection can be established or an exception is thrown. For more detail see [Configuring Transports](configuring-transports.html) + diff --git a/how-do-i-consume-a-specific-message.md b/how-do-i-consume-a-specific-message.md new file mode 100644 index 0000000..20524c6 --- /dev/null +++ b/how-do-i-consume-a-specific-message.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- How do I consume a specific message + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How do I consume a specific message](how-do-i-consume-a-specific-message.html) + + +If you want to consume messages in a different order, or consume specific messages at the head, middle or tail of the queue, you can + +* browse the messages using the QueueBrowser to find the JMSMessageID's of the messages you want to consume +* create a new consumer with a selector matching the ID(s) you want. + +e.g. here is an example selector + +JMSMessageID = 'abc' + +Note that this is not a very efficient way of working with JMS (JMS is designed for consumers to be long lived objects working across many messageS), but it can be useful in certain situations. + +Another option is just to use [JMX](jmx.html) directly to browse messages on a queue, process them and then delete them. + diff --git a/how-do-i-create-new-destinations.md b/how-do-i-create-new-destinations.md new file mode 100644 index 0000000..6b0c60c --- /dev/null +++ b/how-do-i-create-new-destinations.md @@ -0,0 +1,33 @@ +Apache ActiveMQ ™ -- How do I create new destinations + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I create new destinations](how-do-i-create-new-destinations.html) + + +In ActiveMQ you do **not** have to create destinations up front before you can use them. The ActiveMQ broker auto-creates the physical resources associated with a destination on demand (i.e. when messages are sent to a new destination on a broker). + +This means that a client can create a new Queue or Topic dynamically either by + +* calling createQueue() or createTopic() on a JMS Session +* creating an instance of ActiveMQTopic or ActiveMQQueue and possibly registering them in JNDI + +and the broker will automatically create the physical destinations for you. This avoids spending large amounts of time creating every individual destination you wish to use and possibly then exposing it in some JNDI provider. + +In addition, if you are using JNDI to lookup connection factory and destinations, you can specify which destinations you wish to create by default using the properties file. See the [JNDI Support](jndi-support.html) for more details. + +### Creating destinations on startup + +Its completely optional but as of 4.1 you can [Configure Startup Destinations](configure-startup-destinations.html) to specify which destinations are automatically created when the broker starts. + +### Limiting creation of destinations + +If you need to restrict access or creation of destinations then please use the [Security](security.html) option to disable destinations being auto-created for certain users. + +Client side destination objects are not the same as server side resources + +Note that the ActiveMQ Broker will only create server side resources for destinations when messages are actually sent to them. So you can create as many instances of ActiveMQTopic and ActiveMQQueue on a client without any real overhead until you actually send messages to them on a broker. So a JMS client creating a new ActiveMQQueue POJO does not mean you are creating server side queue resources. + +Think of the ActiveMQQueue and ActiveMQTopic classes as like java.net.URL. They are just names which refer to server side resources which are auto-created when they are used. +This means that different clients creating different ActiveMQQueue instances will communicate with the same physical queue on a JMS broker if the name is the same. + +You can browse the currently available queues and topics using [JMX](jmx.html). You can also use the [JMX](jmx.html) MBeans to create the destinations you require. + diff --git a/how-do-i-debug-activemq-from-my-ide.md b/how-do-i-debug-activemq-from-my-ide.md new file mode 100644 index 0000000..5507e1e --- /dev/null +++ b/how-do-i-debug-activemq-from-my-ide.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- How do I debug ActiveMQ from my IDE + +[Community](community.html) > [FAQ](faq.html) > [Developing ActiveMQ](developing-activemq.html) > [How do I debug ActiveMQ from my IDE](how-do-i-debug-activemq-from-my-ide.html) + + +One option is to run your broker in the same JVM as your application; see [How To Unit Test JMS Code](how-to-unit-test-jms-code.html). + +Or you can try uncommenting ACTIVEMQ\_DEBUG\_OPTS in your activemq start script (bin/activemq or bin\\activemq.bat) and start remote debugging in your IDE. + +For IDEA, see this article [http://www.javaranch.com/journal/200408/DebuggingServer-sideCode.html](http://www.javaranch.com/journal/200408/DebuggingServer-sideCode.html) + diff --git a/how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl.md b/how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl.md new file mode 100644 index 0000000..0e0c2f8 --- /dev/null +++ b/how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- How do I define a local address and local port for TCP or SSL + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I define a local address and local port for TCP or SSL](how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl.html) + + +TCP based transport protocols (including SSL) allow you to define the local address and local port for Socket to use when it's created. +This can be useful for clients that reside on multi-homed machines or for clients operating in a DMZ, where only pre-defined ports can be used. + +To specify the local address and local port, ActiveMQ supports the use of the path on the URI, e.g. + +ssl://localhost:5666/localhost:60606 + +where the path following the forward slash "localhost:60606" defines the local address and local port + diff --git a/how-do-i-delete-a-destination.md b/how-do-i-delete-a-destination.md new file mode 100644 index 0000000..176b11e --- /dev/null +++ b/how-do-i-delete-a-destination.md @@ -0,0 +1,20 @@ +Apache ActiveMQ ™ -- How do I delete a destination + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I delete a destination](how-do-i-delete-a-destination.html) + + +How do I delete a destination +----------------------------- + +via Java code or [JMX](jmx.html) you can grab the [BrokerViewMBean](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/broker/jmx/BrokerViewMBean.html) and call one of the following methods + +* [removeQueue(String)](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/broker/jmx/BrokerViewMBean.html#removeQueue(java.lang.String)) +* [removeTopic(String)](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/broker/jmx/BrokerViewMBean.html#removeTopic(java.lang.String)) + +### See also + +* [How do I create new destinations](how-do-i-create-new-destinations.html) +* [How can I monitor ActiveMQ](how-can-i-monitor-activemq.html) +* [JMX](jmx.html) +* [Web Console](web-console.html) + diff --git a/how-do-i-disable-logging.md b/how-do-i-disable-logging.md new file mode 100644 index 0000000..b88329f --- /dev/null +++ b/how-do-i-disable-logging.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- How do I disable logging + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I disable logging](how-do-i-disable-logging.html) + + +How do I disable logging? +------------------------- + +See [How do I change the logging](how-do-i-change-the-logging.html) + diff --git a/how-do-i-disable-persistence.md b/how-do-i-disable-persistence.md new file mode 100644 index 0000000..fa4a0ed --- /dev/null +++ b/how-do-i-disable-persistence.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- How do I disable persistence + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I disable persistence](how-do-i-disable-persistence.html) + + +There are three main ways to disable persistence, such as for unit testing JMS code + +1. Set the NON_PERSISTENT message delivery flag on your MessageProducer +2. Set the **persistent=false** flag in the **** element of the [Xml Configuration](xml-configuration.html) or on the property [BrokerService](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/broker/BrokerService.html) +3. Delete the persistence files before running your tests (a bit hacky) + +If you are unit testing you may be interested in [How To Unit Test JMS Code](how-to-unit-test-jms-code.html). + +Please refer to the [Initial Configuration](initial-configuration.html) guide on how to disable persistence via system properties, java code or using the [Xml Configuration](xml-configuration.html) + diff --git a/how-do-i-edit-the-website.md b/how-do-i-edit-the-website.md new file mode 100644 index 0000000..cbc0457 --- /dev/null +++ b/how-do-i-edit-the-website.md @@ -0,0 +1,31 @@ +Apache ActiveMQ ™ -- How do I edit the website + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How do I edit the website](how-do-i-edit-the-website.html) + + +The website is all contained on a Wiki so that anyone can [contribute](contributing.html) + +### How to edit + +You can also click the **edit** button when viewing the website which is located on the bottom of each page. + +Spam Prevention + +We have been attacked by spammers so we are running a spam-avoiding scheme. So you have to ask to be added to the editing group of Confluence. This is quick and easy to do. + +Just send a quick mail to the [Discussion Forums](discussion-forums.html) giving details of your confluence username and we can grant you the necessary editing karma. + +Note that after you've changed the wiki it is immediately rendered on the [http://cwiki.apache.org/ACTIVEMQ/](http://cwiki.apache.org/ACTIVEMQ/) site so you can test it out; then up to an hour or two later it is updated on the Apache site. + +### How the site works + +There are a few special pages; for example the [Navigation](navigation.html) page is the left hand navigation bar and the [QuickLinks](quicklinks.html) is the top right navigation bar. + +Other useful [links](site.html) are + +* [Banner](banner.html) +* [Navigation](navigation.html) +* [QuickLinks](quicklinks.html) +* [SiteIndex](siteindex.html) +* [SiteMap](sitemap.html) + diff --git a/how-do-i-embed-a-broker-inside-a-connection.md b/how-do-i-embed-a-broker-inside-a-connection.md new file mode 100644 index 0000000..de2ae18 --- /dev/null +++ b/how-do-i-embed-a-broker-inside-a-connection.md @@ -0,0 +1,201 @@ +Apache ActiveMQ ™ -- How do I embed a Broker inside a Connection + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I embed a Broker inside a Connection](how-do-i-embed-a-broker-inside-a-connection.html) + + +In many messaging topologies there are JMS Brokers (server side) and a JMS client side. Often it makes sense to deploy a broker within your JVM. This allows you to optimise away a network hop; making the networking of JMS as efficient as pure RMI, but with all the usual JMS features of location independence, reliability, load balancing etc. + +There are various ways to embed a broker in ActiveMQ depending on if you are using Java, Spring, XBean or using the ActiveMQConnectionFactory . + +### Using explicit Java code + +The following Java code will create an embedded broker + +BrokerService broker = new BrokerService(); + +// configure the broker +broker.addConnector("tcp://localhost:61616"); + +broker.start(); + +If you want to lazily bind the transport connector as part of start(), useful when start() will block pending a store lock (as in a slave start), you can use the following code + +BrokerService broker = new BrokerService(); + +TransportConnector connector = new TransportConnector(); +connector.setUri(new URI("tcp://localhost:61616")); +broker.addConnector(connector); +broker.start(); + +In the same JVM clients can then use the [vm:// transport](vm-transport-reference.html) to connect to the embedded broker - whilst external clients can use the [tcp:// protocol](tcp-transport-reference.html) + +If you have more than one embedded broker, ensure that you give them a unique name and - e.g. + +BrokerService broker = new BrokerService(); +// configure the broker +broker.setBrokerName("fred"); +broker.addConnector("tcp://localhost:61616"); +broker.start(); + +Then if you want to connect to the broker named 'fred' from within the same JVM, you can by using the uri **vm://fred** + +It is possible to fully configure a broker through application code e.g. + +BrokerService broker = new BrokerService(); +broker.setBrokerName("fred"); +broker.setUseShutdownHook(false); +//Add plugin +broker.setPlugins(new BrokerPlugin\[\]{new JaasAuthenticationPlugin()}); +//Add a network connection +NetworkConnector connector = answer.addNetworkConnector("static://"+"tcp://somehost:61616"); +connector.setDuplex(true); +broker.addConnector("tcp://localhost:61616"); +broker.start(); + +Please note that you should add plugins before connectors or they will not be initialized + +For more details on the available properties you can specify, see the [BrokerService javadoc](http://activemq.apache.org/maven/5.11.0/apidocs/org/apache/activemq/broker/BrokerService.html) + +### Using the BrokerFactory + +There is a helper class called [BrokerFactory](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/broker/BrokerFactory.html) which can be used to create a broker via URI for configuration. + +BrokerService broker = BrokerFactory.createBroker(new URI(someURI)); + +The available values of the URI are + +URI scheme + +Example + +Description + +xbean: + +xbean:activemq.xml + +Searches the classpath (and file system) for an XML document with the given URI (activemq.xml in this case) which will then be used as the [Xml Configuration](xml-configuration.html) + +broker: + +broker:tcp://localhost:61616 + +Uses the [Broker Configuration URI](broker-configuration-uri.html) to confgure the broker + +### Using Spring + +There is a factory bean that can refer to an external ActiveMQ XML configuration file + + + + + + +In this case the usual Spring 'classpath:org/apache/activemq/xbean/activemq.xml' resource mechanism is being used so that the activemq.xml file would be found on the classpath by looking inside all the directories on the classpath then looking for 'org/apache/activemq/xbean/activemq.xml'. You can of course change this to any value you like. e.g. use classpath:activemq.xml if you just want to drop it in a directory that is in the classpath; like WEB-INF/classes in a web application. + +If you wish you can use a URL instead using the **file:* or *http:** prefixes. For more details see how [Spring deals with resources](http://static.springframework.org/spring/docs/1.2.x/reference/beans.html#context-functionality-resources) + +### Using XBean + +If you are already using [XBean](http://geronimo.apache.org/xbean/) then you can just mix and match your Spring/XBean [XML configuration](https://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/xbean/activemq.xml) with ActiveMQ's configuration. + + + + + + + + + + + + + + + + + + +### Using Spring 2.0 + +If you are using Spring 2.0 and ActiveMQ 4.1 or later (and xbean-spring 2.5 or later) you can embed the ActiveMQ broker XML inside any regular Spring.xml file without requiring the above factory bean. e.g. here is an [example](http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-core/src/test/resources/spring-embedded-xbean.xml) of a regular Spring XML file in Spring 2.0 which also configures a broker. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + + + + + + + + + + + +### Using ActiveMQConnectionFactory + +An embedded broker can also be created using an ActiveMQConnectionFactory and using a vm connector as a uri. e.g. + +ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"); + +Use the query parameters "broker." to configure the broker, where matches the bean properties on the BrokerService. + +The broker will be created upon creation of the first connection. + +You can turn off auto creation by setting the create property on the VM Transport to false: + +ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?create=false"); + diff --git a/how-do-i-enable-asynchronous-sending.md b/how-do-i-enable-asynchronous-sending.md new file mode 100644 index 0000000..4bbc0ff --- /dev/null +++ b/how-do-i-enable-asynchronous-sending.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- How do I enable asynchronous sending + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I enable asynchronous sending](how-do-i-enable-asynchronous-sending.html) + + +The default setting for ActiveMQ is that all persistent messages outside of a transaction are sent to a broker are synchronous. This means that the send method is blocked until the message is received by the broker, its then written to disk - then a response is returned to the client and the send() unblocks with success or throws a JMSException if the send could not complete (e.g. due to a security exception).  In the case of the persistent messages being sent in a transaction, only the commit is synchronous since if the commit succeeds, then it means that all of the sends and acknowledgements in the transaction succeeded. + +For performance reasons you may wish to stream messages to the broker as fast as possible even if you are using persistent messages. So you can enable **asynchronous sending** of persistent messages using one of the following options + +* set the useAsyncSend property on the ActiveMQConnectionFactory +* set the property using the URI when you connect to the broker + +tcp://localhost:61616?jms.useAsyncSend=true + diff --git a/how-do-i-enable-debug-logging.md b/how-do-i-enable-debug-logging.md new file mode 100644 index 0000000..1c8e849 --- /dev/null +++ b/how-do-i-enable-debug-logging.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- How do I enable debug logging + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I enable debug logging](how-do-i-enable-debug-logging.html) + + +How do I enable debug logging? +------------------------------ + +For background see [How do I change the logging](how-do-i-change-the-logging.html). + +You can enable debug logging in ActiveMQ by adding the following line to the `**conf/log4j.properties**` file + +log4j.logger.org.apache.activemq=DEBUG + diff --git a/how-do-i-find-the-size-of-a-queue.md b/how-do-i-find-the-size-of-a-queue.md new file mode 100644 index 0000000..53b9046 --- /dev/null +++ b/how-do-i-find-the-size-of-a-queue.md @@ -0,0 +1,23 @@ +Apache ActiveMQ ™ -- How do I find the Size of a Queue + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I find the Size of a Queue](how-do-i-find-the-size-of-a-queue.html) + + +How do I check on the size of the queue? I know it's not JMS standard, but most JMS implementations have a way to do this. + +You can view the queue depth using the MBeans in ActiveMQ 5.x. Use any JMX management console to see the statistics. See [How can I monitor ActiveMQ](how-can-i-monitor-activemq.html). + +You can also browse the contents of a queue using the JMS [QueueBrowser](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/QueueBrowser.html). + +Or you can access statistics [programmatically](how-can-i-see-what-destinations-are-used.html) + +Through the MBeans, you can monitor individual destinations including message statistics related to the destination. For example, you'll see the following attributes on a destination (Queue or Topic): + +* Enqueue Count - the total number of messages sent to the queue since the last restart +* Dequeue Count - the total number of messages removed from the queue (ack'd by consumer) since last restart +* Inflight Count - the number of messages sent to a consumer session and have not received an ack +* Dispatch Count - the total number of messages sent to consumer sessions (Dequeue + Inflight) +* Expired Count - the number of messages that were not delivered because they were expired + +The "size of a queue" is also explicitly called out in an attribute "QueueSize." QueueSize is the total number of messages in the queue/store that have not been ack'd by a consumer. This can become confusing at times when compared to the Enqueue Count because the Enqueue Count is a count over a period of time (since the last broker restart) while the Queue Size is not dependent on a period of time but instead on the actual number of messages in the store. + diff --git a/how-do-i-get-started-with-jms.md b/how-do-i-get-started-with-jms.md new file mode 100644 index 0000000..b6a1db5 --- /dev/null +++ b/how-do-i-get-started-with-jms.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- How do I get started with JMS + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How do I get started with JMS](how-do-i-get-started-with-jms.html) + + +How do I get started with JMS +----------------------------- + +Your best way to get started understanding the JMS API is [Sun's JMS tutorial](http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JMS.html#wp84181). + +Alternatively you could stick to writing business level POJOs and hide the middleware via [Apache Camel](http://activemq.apache.org/camel/) which hides the JMS API from you letting you focus on your business logic via the [Bean Integration](http://activemq.apache.org/camel/bean-integration.html) + diff --git a/how-do-i-make-messages-durable.md b/how-do-i-make-messages-durable.md new file mode 100644 index 0000000..f6be754 --- /dev/null +++ b/how-do-i-make-messages-durable.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- How do I make messages durable + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How do I make messages durable](how-do-i-make-messages-durable.html) + + +Durability of messages is defined by the [MessagerProducer](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/MessageProducer.html). You can explicitly configure the durability via the [setDeliveryMode() method](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/MessageProducer.html#setDeliveryMode(int)). e.g. + +MessageProducer producer = ...; +producer.setDeliveryMode(DeliveryMode.PERSISTENT); + +Note that the default is for durable messages to be used if you don't specify a delivery mode. + diff --git a/how-do-i-preserve-order-of-messages.md b/how-do-i-preserve-order-of-messages.md new file mode 100644 index 0000000..b090f16 --- /dev/null +++ b/how-do-i-preserve-order-of-messages.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- How do I preserve order of messages + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I preserve order of messages](how-do-i-preserve-order-of-messages.html) + + +ActiveMQ will preserve the order of messages sent by a single producer to all consumers on a topic. If there is a single consumer on a queue then the order of messages sent by a single producer will be preserved as well. + +If you have multiple consumers on a single queue the consumers will compete for messages and ActiveMQ will load balance across them, so order will be lost. For background on the issue and how it can be solved see + +* [Exclusive Consumer](exclusive-consumer.html) which allows only a single consumer to consume from the queue at once to preseve order +* [Message Groups](message-groups.html) which splits the messages on a queue into parallel virtual exclusive queues to ensure that messages to a single message group (defined by the JMSXGroupID header) will have their order preserved but that different groups will be load balanced to different consumers. + diff --git a/how-do-i-prevent-autoconf-from-enabling-openssl-support.md b/how-do-i-prevent-autoconf-from-enabling-openssl-support.md new file mode 100644 index 0000000..fd10b05 --- /dev/null +++ b/how-do-i-prevent-autoconf-from-enabling-openssl-support.md @@ -0,0 +1,8 @@ +Apache ActiveMQ ™ -- How do I prevent autoconf from enabling OpenSSL support + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [Building FAQs](building-faqs.html) > [OpenSSL Support](openssl-support.html) > [How do I prevent autoconf from enabling OpenSSL support](how-do-i-prevent-autoconf-from-enabling-openssl-support.html) + +In some cases you may not want to build in support for OpenSSL, since the Autotools script do this automatically we have provided a means to disable this, just add the _disable-ssl_ options to your configure and no SSL support will be added: + +./configure --disable-ssl + diff --git a/how-do-i-purge-a-queue.md b/how-do-i-purge-a-queue.md new file mode 100644 index 0000000..c408e29 --- /dev/null +++ b/how-do-i-purge-a-queue.md @@ -0,0 +1,24 @@ +Apache ActiveMQ ™ -- How do I purge a queue + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I purge a queue](how-do-i-purge-a-queue.html) + + +A frequent requirement is to purge a queue (i.e. delete all the messages on it). + +### Solution + +You can use the [Web Console](web-console.html) to view queues, add/remove queues, purge queues or delete/forward individual messages. + +Another option is to use [JMX](jmx.html) to browse the queues and call the **purge()** method on the [QueueViewMBean](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/jmx/QueueViewMBean.html). + +You could also delete the queue via removeQueue(String) or removeTopic(String) methods on the [BrokerViewMBean](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/jmx/BrokerViewMBean.html) + +You can also do it [programmatically](how-can-i-see-what-destinations-are-used.html) + +### Also See + +* [Web Console](web-console.html) +* [JMX](jmx.html) +* [How do I find the Size of a Queue](how-do-i-find-the-size-of-a-queue.html) +* [How can I see what destinations are used](how-can-i-see-what-destinations-are-used.html) + diff --git a/how-do-i-restart-embedded-broker.md b/how-do-i-restart-embedded-broker.md new file mode 100644 index 0000000..a5f4aa0 --- /dev/null +++ b/how-do-i-restart-embedded-broker.md @@ -0,0 +1,36 @@ +Apache ActiveMQ ™ -- How do I restart embedded broker + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I restart embedded broker](how-do-i-restart-embedded-broker.html) + + +Pure restart of the embedded broker is not advisable, since it's state could be corrupted. Therefore, you're advised to instantiate the broker again before restarting it. + +BrokerService service = BrokerFactory.createBroker("xbean:activemq.xml"); +service.start(); +service.waitUntilStarted(); + +service.stop(); +service.waitUntilStopped(); + +service = BrokerFactory.createBroker("xbean:activemq.xml"); +service.start(); + +In 5.3 however, we allowed the force start of the broker that has been stopped for use cases that need this functionality. You can do it by using + +BrokerService.start(boolean force); + +method. + +The following example demonstrates it. + +BrokerService service = BrokerFactory.createBroker("xbean:activemq.xml"); +service.start(); +service.waitUntilStarted(); + +service.stop(); +service.waitUntilStopped(); + +service.start(true); + +However, it's better (more reliable) to instantiate the broker again if it is possible. + diff --git a/how-do-i-restrict-connections-from-creating-new-queues-or-topics.md b/how-do-i-restrict-connections-from-creating-new-queues-or-topics.md new file mode 100644 index 0000000..d7bb8a8 --- /dev/null +++ b/how-do-i-restrict-connections-from-creating-new-queues-or-topics.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- How do I restrict connections from creating new queues or topics + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I restrict connections from creating new queues or topics](how-do-i-restrict-connections-from-creating-new-queues-or-topics.html) + + +How do I restrict connections from creating new queues or topics? +----------------------------------------------------------------- + +As is described in [How do I create new destinations](how-do-i-create-new-destinations.html) there is no need to create all the destinations up front, you can let the broker create them on the fly. + +However if you don't want this behaviour, or wish to restrict this behaviour to certain topic or queue [Wildcards](wildcards.html) (areas of the queue or topic name space) then you can use the [Security](security.html) plugins to disallow the **admin** role on whatever areas of the queue and topic namespace you wish + diff --git a/how-do-i-run-a-broker.md b/how-do-i-run-a-broker.md new file mode 100644 index 0000000..8edbaa9 --- /dev/null +++ b/how-do-i-run-a-broker.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- How do I run a broker + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I run a broker](how-do-i-run-a-broker.html) + + +### For ActiveMQ 3.x/4.x + +Please see the [running a broker page](run-broker.html) + diff --git a/how-do-i-run-activemq-under-the-kaffe-jvm.md b/how-do-i-run-activemq-under-the-kaffe-jvm.md new file mode 100644 index 0000000..959def9 --- /dev/null +++ b/how-do-i-run-activemq-under-the-kaffe-jvm.md @@ -0,0 +1,40 @@ +Apache ActiveMQ ™ -- How do I run ActiveMQ under the Kaffe JVM + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How do I run ActiveMQ under the Kaffe JVM](how-do-i-run-activemq-under-the-kaffe-jvm.html) + + +ActiveMQ will run under Kaffe with a few adjustments to the default configuration. + +We have found the Kaffe does not properly implement: + +* File based NIO +* Multicast Sockets +* JMX connector JNDI handling + +Therefore, the default ActiveMQ configuration must be adjusted to disable the Journal (uses NIO), disable Multicast discovery, and JMX. + +The Kaffe and OS Version that was tested against was: + +> kaffe version info: Engine: Interpreter Version: 1.1.7 Java Version: 1.4 +> OS & version: Linux dev-10 2.6.13-15.8-smp #1 SMP Tue Feb 7 11:07:24 UTC + +The following is the activemq.xml that was used: + + + + + + + + + + + + + + + + + + + diff --git a/how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.md b/how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.md new file mode 100644 index 0000000..76bea11 --- /dev/null +++ b/how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- How do I send messages to different Destinations from a single MessageProducer + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How do I send messages to different Destinations from a single MessageProducer](how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.html) + + +How do I send messages to different Destinations from a single MessageProducer? +------------------------------------------------------------------------------- + +Create the MessageProducer using a null destination; then specify the destination each time you send... + +MessageProducer producer = session.createProducer(null); +... +producer.send(someDestination, message); +... +producer.send(anotherDestination, message); + diff --git a/how-do-i-set-the-message-expiration.md b/how-do-i-set-the-message-expiration.md new file mode 100644 index 0000000..a8bbd24 --- /dev/null +++ b/how-do-i-set-the-message-expiration.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- How do I set the message expiration + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I set the message expiration](how-do-i-set-the-message-expiration.html) + + +JMSExpiration on a message is set by the MessageProducer in JMS - either via + +* [producer.setTimeToLive()](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/MessageProducer.html#setTimeToLive(long)) +* [producer.send(Destination, Message, int, int, long)](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/MessageProducer.html#send(javax.jms.Destination,%20javax.jms.Message,%20int,%20int,%20long)) + diff --git a/how-do-i-turn-off-creating-an-embedded-activemq-broker-when-using-the-vm-transport.md b/how-do-i-turn-off-creating-an-embedded-activemq-broker-when-using-the-vm-transport.md new file mode 100644 index 0000000..b14aaf0 --- /dev/null +++ b/how-do-i-turn-off-creating-an-embedded-activemq-broker-when-using-the-vm-transport.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- How do I turn off creating an embedded ActiveMQ broker when using the VM transport + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I turn off creating an embedded ActiveMQ broker when using the VM transport](how-do-i-turn-off-creating-an-embedded-activemq-broker-when-using-the-vm-transport.html) + + +You can turn off auto creation by setting the create property on the VM Transport to false: + +ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?create=false"); + diff --git a/how-do-i-unack-the-message-with-stomp.md b/how-do-i-unack-the-message-with-stomp.md new file mode 100644 index 0000000..5806d3c --- /dev/null +++ b/how-do-i-unack-the-message-with-stomp.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- How do I unack the message with Stomp + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I unack the message with Stomp](how-do-i-unack-the-message-with-stomp.html) + + +There is no explicit "unack" command in Stomp. Once the client receives the message it cannot be marked as "unconsumed" and sent to another subscriber (or redelivered to the same subscriber again). It's up to your application (or Stomp client) to handle failed processing of received messages and implement "message redelivery". + +Stomp transactions are often mistakenly considered to be a solution for this use case. But that's not the case, since transactions are only related to sending messages and acknowledgments. If you start a transaction, send a message ack in a transaction and finally abort it, the message will not be redelivered again. It just means that broker will not send any more messages to the client if the prefetch limit is reached. + +Take a look at the following example: + +StompConnection connection = new StompConnection(); +connection.open("localhost", 61613); + +connection.connect("system", "manager"); + +connection.send("/queue/test", "message 1"); +connection.send("/queue/test", "message 2"); +connection.send("/queue/test", "message 3"); + +HashMap headers = new HashMap(); +headers.put("activemq.prefetchSize", "1"); +connection.subscribe("/queue/test", "client", headers); + +connection.begin("tx1"); +StompFrame frame = connection.receive(); +System.out.println(frame.getBody()); +connection.ack(frame, "tx1"); +connection.abort("tx1"); + +connection.begin("tx2"); +connection.ack(frame, "tx2"); //sending the ack again +frame = connection.receive(); +System.out.println(frame.getBody()); +connection.ack(frame, "tx2"); +connection.commit("tx2"); + +connection.begin("tx3"); +frame = connection.receive(); +System.out.println(frame.getBody()); +connection.ack(frame, "tx3"); +connection.commit("tx3"); + +This simple application will print + +message 1 +message 2 +message 3 + +Since the transaction `tx1` has been aborted, we needed to acknowledge that message again in `tx2` in order to be able to receive the next message (since the prefetch size used is 1). + +Also take a look at these pages for more info: + +* [http://activemq.apache.org/stomp/stomp10/additional.html#transaction_handling](http://activemq.apache.org/stomp/stomp10/additional.html#transaction_handling) +* [http://activemq.apache.org/what-is-the-prefetch-limit-for.html](http://activemq.apache.org/what-is-the-prefetch-limit-for.html) + diff --git a/how-do-i-use-activemq-using-in-jvm-messaging.md b/how-do-i-use-activemq-using-in-jvm-messaging.md new file mode 100644 index 0000000..e235fee --- /dev/null +++ b/how-do-i-use-activemq-using-in-jvm-messaging.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- How do I use ActiveMQ using in JVM messaging + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I use ActiveMQ using in JVM messaging](how-do-i-use-activemq-using-in-jvm-messaging.html) + + +### For ActiveMQ 3.x/4.x + +To use pure in-memory messaging you just need to set the broker URL to be + +vm://localhost + +Actually you can use any text after _vm://_ so that you can segment multiple logical JMS brokers within the same JVM and classloader, using the name to distinguish between them. + +There is an example of how to do this along with a description of the available protocols in the [Protocols overview](uri-protocols.html). + +Also see: [how to optimise the VM transport](how-should-i-use-the-vm-transport.html) + diff --git a/how-do-i-use-durable-subscribers-in-a-network-of-brokers.md b/how-do-i-use-durable-subscribers-in-a-network-of-brokers.md new file mode 100644 index 0000000..7f93ce9 --- /dev/null +++ b/how-do-i-use-durable-subscribers-in-a-network-of-brokers.md @@ -0,0 +1,25 @@ +Apache ActiveMQ ™ -- How do I use durable subscribers in a network of brokers + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I use durable subscribers in a network of brokers](how-do-i-use-durable-subscribers-in-a-network-of-brokers.html) + + +Durable subscribers behave a little differently across a cluster of ActiveMQ brokers. The two main issues surround messages getting stuck on other brokers in the network after a durable subscriber has disconnected and reconnected to a different broker in the network without fully unsubscribing. The reasons for disconnecting/reconnecting can be voluntary (where the subscriber is using the failover transport), or involuntary (one of the brokers in the cluster fails). + +For example, if you have two brokers A and B networked together in both directions to form a cluster, and a durable subscriber connects to broker B, a producer P on broker A will have its messages properly forwarded to broker B and the durable subscriber. However, if the subscriber disconnects and reconnects to broker A, any messages sent by P while the subscriber was away will be stuck on B until the subscriber reconnects to B. + +The solution is to use [Virtual Destinations](virtual-destinations.html) + +Virtual topics use queues under the covers and this allows ActiveMQ to treat each subscriber as a plain old Queue subscriber. This allows ActiveMQ to replay messages that have been orphaned on another broker in the cluster using this configuration as explained in the [Networks of Brokers](networks-of-brokers.html) documentation: + + + + + + + + + + + +Also, take a look at [this unit test to see the full configuration and usage](http://svn.apache.org/viewvc/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/VirtualTopicNetworkClusterReactivationTest.java?view=markup) + diff --git a/how-do-i-use-ivy-with-activemq.md b/how-do-i-use-ivy-with-activemq.md new file mode 100644 index 0000000..6f160bc --- /dev/null +++ b/how-do-i-use-ivy-with-activemq.md @@ -0,0 +1,44 @@ +Apache ActiveMQ ™ -- How do I use Ivy with ActiveMQ + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I use Ivy with ActiveMQ](how-do-i-use-ivy-with-activemq.html) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/how-do-i-use-jms-efficiently.md b/how-do-i-use-jms-efficiently.md new file mode 100644 index 0000000..5ac0d35 --- /dev/null +++ b/how-do-i-use-jms-efficiently.md @@ -0,0 +1,42 @@ +Apache ActiveMQ ™ -- How do I use JMS efficiently + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How do I use JMS efficiently](how-do-i-use-jms-efficiently.html) + + +How do I use JMS efficiently? +----------------------------- + +JMS is designed for high performance. In particular its design is such that you are meant to create a number of objects up front on the startup of your application and then resuse them throughout your application. e.g. its a good idea to create upfront and then reuse the following + +* Connection +* Session +* MessageProducer +* MessageConsumer + +The reason is that each create & destroy of the above objects typically requires an individual request & response with the JMS broker to ensure it worked. e.g. creating a connection, session, producer, then sending a message, then closing everything down again - could result in 7 request-responses with the server! + +Note a little trick - you can reuse the same MessageProducer for sending messages to different destinations; just create it with a null destination and specify it on the send method. + +MessageProducer instances that are created with a null destination are anonymous producers and as such the broker cannot fire an advisory for producer when these are created. This means that when the pooled MessageProducer is in use no advisories for producers will ever be sent. + +### Using Pooling with JMS + +To use JMS efficiently we recommend you use [Camel](http://activemq.apache.org/camel/) to hide the JMS API and [bind the messaging to your beans](http://activemq.apache.org/camel/bean-integration.html). + +Alternatively try using Spring's [MessageListenerContainer](http://static.springsource.org/spring/docs/2.5.x/reference/jms.html#jms-mdp) for consuming messages and [JmsTemplate](http://static.springsource.org/spring/docs/2.5.x/reference/jms.html#jms-jmstemplate) for sending - but be [aware of the gotchas](http://activemq.apache.org/jmstemplate-gotchas.html) + +### Other performance tips + +Also see + +* [Should I use transactions](should-i-use-transactions.html) +* [Should I use XA](should-i-use-xa.html) + +### Java Connector Architecture + +[Java Connector Architecture](http://java.sun.com/j2ee/connector/) supports the pooling of JMS connections, sessions and MessageListeners, parallel message processing, thread pooling and transaction & exception handling, through the use of a JCA [Resource Adapter](resource-adapter.html). + +All of these benefits are also available through Spring's MessageListenerContiner **except** for the XA transactions. If you need XA support then you must use JCA + +Typically JCA is used in a J2EE container via MDBs; though there is a POJO Spring based [JCA Container](jca-container.html) you can use, which is simple and lightweight and easy to embed inside Tomcat or any J2SE application. + diff --git a/how-do-i-use-log4j-jms-appender-with-activemq.md b/how-do-i-use-log4j-jms-appender-with-activemq.md new file mode 100644 index 0000000..0bd6730 --- /dev/null +++ b/how-do-i-use-log4j-jms-appender-with-activemq.md @@ -0,0 +1,79 @@ +Apache ActiveMQ ™ -- How do I use log4j JMS appender with ActiveMQ + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I use log4j JMS appender with ActiveMQ](how-do-i-use-log4j-jms-appender-with-activemq.html) + + +[Log4j JMS appender](http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/JMSAppender.html) can be used to send your log messages to JMS broker. To use ActiveMQ as a destination of your messages, you need to configure JMS appender properly. The code sample below shows example configuration: + +log4j.rootLogger=INFO, stdout, jms + +\## Be sure that ActiveMQ messages are not logged to 'jms' appender +log4j.logger.org.apache.activemq=INFO, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d %-5p %c - %m%n + +\## Configure 'jms' appender. You'll also need jndi.properties file in order to make it work +log4j.appender.jms=org.apache.log4j.net.JMSAppender +log4j.appender.jms.InitialContextFactoryName=org.apache.activemq.jndi.ActiveMQInitialContextFactory +log4j.appender.jms.ProviderURL=tcp://localhost:61616 +log4j.appender.jms.TopicBindingName=logTopic +log4j.appender.jms.TopicConnectionFactoryBindingName=ConnectionFactory + +The important thing is not to send ActiveMQ logs to JMS appender, as it can cause errors since the broker will want to log before the connection is established. You will also need a JNDI configuration, so that appender can find appropriate topic to send log messages to. The example `jndi.properties` file can look like this: + +topic.logTopic=logTopic + +Finally, you can subscribe to the topic and listen for log messages: + +public class Log4jJMSAppenderExample implements MessageListener { + + public Log4jJMSAppenderExample() throws Exception { + // create a logTopic topic consumer + ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); + Connection conn = factory.createConnection(); + Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + conn.start(); + MessageConsumer consumer = sess.createConsumer(sess.createTopic("logTopic")); + consumer.setMessageListener(this); + // log a message + Logger log = Logger.getLogger(Log4jJMSAppenderExample.class); + log.info("Test log"); + // clean up + Thread.sleep(1000); + consumer.close(); + sess.close(); + conn.close(); + System.exit(1); + } + + public static void main(String\[\] args) throws Exception { + new Log4jJMSAppenderExample(); + } + + public void onMessage(Message message) { + try { + // receive log event in your consumer + LoggingEvent event = (LoggingEvent)((ActiveMQObjectMessage)message).getObject(); + System.out.println("Received log \[" + event.getLevel() + "\]: "+ event.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + } + } +} + +Note that appender send logging event wrapped in an object message, so you can extract information such as logger name, level and of course the message. + +Starting with ActiveMQ 5.3, this example is included in the standard distribution. You can run it by executing + +ant log4j-jms + +inside `example/` folder. You can expect the following output as a result: + +log4j-jms: + \[echo\] Running a Log4j JMS Appender example + \[java\] 2009-08-11 13:58:46,767 INFO Log4jJMSAppenderExample - Test log + \[java\] Received log \[INFO\]: Test log + \[java\] Java Result: 1 + diff --git a/how-do-i-use-ssl.md b/how-do-i-use-ssl.md new file mode 100644 index 0000000..a3f43c4 --- /dev/null +++ b/how-do-i-use-ssl.md @@ -0,0 +1,133 @@ +Apache ActiveMQ ™ -- How do I use SSL + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do I use SSL](how-do-i-use-ssl.html) + + +### Setting up the Key and Trust Stores + +Also see [Tomcat's SSL instructions](http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html) for more info. The following was provided by Colin Kilburn. Thanks Colin! + +ActiveMQ uses dummy credentials by default + +ActiveMQ includes key and trust stores that reference a dummy self signed cert. When you create a broker certificate and stores for your installation, either overwrite the values in the conf directory or delete the existing dummy key and trust stores so they cannot interfere) + +1. Using keytool, create a certificate for the broker: + + keytool -genkey -alias broker -keyalg RSA -keystore broker.ks + +2. Export the broker's certificate so it can be shared with clients: + + keytool -export -alias broker -keystore broker.ks -file broker_cert + +3. Create a certificate/keystore for the client: + + keytool -genkey -alias client -keyalg RSA -keystore client.ks + +4. Create a truststore for the client, and import the broker's certificate. This establishes that the client "trusts" the broker: + + keytool -import -alias broker -keystore client.ts -file broker_cert + + +### Starting the Broker + +#### Using the javax.net.ssl.* System Properties + +Before starting the broker's VM set the ACTIVEMQ\_SSL\_OPTS environment variable so that it knows to use the broker keystore.  (note that in previous versions of ActiveMQ this property was called SSL\_OPTS in some scripts.  As of v5.12.0 all scripts use ACTIVEMQ\_SSL_OPTS) + +export ACTIVEMQ\_SSL\_OPTS = -Djavax.net.ssl.keyStore=/path/to/broker.ks -Djavax.net.ssl.keyStorePassword=password + +#### Using Spring to configure SSL for a Broker instance + +Sometimes the use of javax.net.ssl.* system properties is not appropriate as they effect all SSL users in a JVM. ActiveMQ 5.2.x adds an element to the that allows a broker specific set of SSL properties to be configured. + +The SslContext [test case](https://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/transport/tcp/SslContextBrokerServiceTest.java) validates starting an SSL transport listener using the configuration specified in the broker Xbean. The SslContext element is added to the broker as follows: + + + + + + + + + + + + + + +The SslContext is used to configure the [SslTransportFactory](https://svn.apache.org/repos/asf/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/transport/tcp/SslTransportFactory.java) for that broker. Full details of the configuration options available can be seen in the [schema definition](http://activemq.apache.org/schema/core/activemq-core-5.2-SNAPSHOT.xsd) or in the accessors of [org.apache.activemq.spring.SpringSslContext](https://svn.apache.org/repos/asf/activemq/trunk/activemq-spring/src/main/java/org/apache/activemq/spring/SpringSslContext.java) + +### Starting the Client + +When starting the client's VM, specify the following system properties: + +javax.net.ssl.keyStore=/path/to/client.ks +javax.net.ssl.keyStorePassword=password +javax.net.ssl.trustStore=/path/to/client.ts + +In Linux, do not use absolute path to keystore. By default, keytool uses ~/.keystore, but in some setups passing -Djavax.net.ssl.keyStore=/home/account/.keystore to Java VM does not work. This is not ActiveMQ specific but good to keep in mind anyway. + +### Client certificates + +If you want to verify client certificates, you need to take a few extra steps: + +1. Export the client's certificate so it can be shared with broker: + + keytool -export -alias client -keystore client.ks -file client_cert + +2. Create a truststore for the broker, and import the client's certificate. This establishes that the broker "trusts" the client: + + keytool -import -alias client -keystore broker.ts -file client_cert + +3. Add + + -Djavax.net.ssl.trustStore=/path/to/broker.ts + + to ACTIVEMQ\_SSL\_OPTS + +4. Instruct ActiveMQ to require client authentication by setting the following in activemq.xml: + + + + + + +### Certificate revocation + +Starting with version **5.12**, you can define certificate revocation list (CRL) path on ssl context, so that invalid certificates can revoked + + + + + +This list is static and loaded on broker startup. + +Starting with version **5.14.0**, you can also enable more advanced Online Certificate Status Protocol (OCSP) protocol. For that you need to configure a location for the `java.security` configuration extension by setting appropriate system properties (in `${ACTIVEMQ_HOME}/bin/env`) like + +ACTIVEMQ\_SSL\_OPTS="-Djava.security.properties=$ACTIVEMQ_CONF/java.security" + +Then you need to configure OCSP responder properties in `java.security` file like + +ocsp.enable=true +ocsp.responderURL=http://ocsp.example.net:80 + +A demo of the broker configuration working with OCSP responder can be found at [https://github.com/dejanb/sslib](https://github.com/dejanb/sslib) + +### Working Around Java 7 SSL Bugs + +As noted by issue AMQ-5970, it seems some versions of Java 7 have problems with SSL sessions that need to use the Diffie-Hellman cypher suite. If you run into this issue, just copy the Bouncy Castle bcprov-jdk15on-148.jar to ActiveMQ's lib directory and restart your broker. + +### Useful links + +These links might also help + +* [Sun's JSSE guide](http://java.sun.com/j2se/1.4.2/docs/guide/security/jsse/JSSERefGuide.html#CreateKeystore) +* [Thawte SSL Troubleshooting Tips](https://search.thawte.com/support/ssl-digital-certificates/index?page=content&id=SO10061) + diff --git a/how-do-i-use-the-ssl-transport.md b/how-do-i-use-the-ssl-transport.md new file mode 100644 index 0000000..0c6703a --- /dev/null +++ b/how-do-i-use-the-ssl-transport.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- How do I use the SSL Transport + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [ActiveMQ-CPP Usage FAQs](activemq-cpp-usage-faqs.html) > [How do I use the SSL Transport](how-do-i-use-the-ssl-transport.html) + +The first thing you need to do in order to use the SSL Transport in ActiveMQ-CPP is to build the library with SSL support enabled, for that see the [Build FAQs](building-faqs.html). + +Once you have a build that supports the SSL protocol then its pretty simple, just replace the use of the _TCP_ Transport in your connection URI with SSL, for example: + +tcp://broker1:61616 + +becomes: + +ssl://broker1:61616 + +You should note that in order to validate that the certificate that the broker sends is the one we want we must validate the "Common Name (CN)" field from the certificate against the host-name in the URI. If you have trouble connecting to the broker one of the first things to check it if your host-name matches the broker certificate common name. + +That's almost it, there's just a couple other things you need might need to do. The SSL transport needs to know whether or not to trust the certificate that the Broker sends to it, for this you need to set a property in the Decaf library (this is the native library ActiveMQ-CPP uses for cross platform support). The property you set tells the library where to find either the Broker's Certificate or the Certificate of the Authority that signed the broker's certificate. If you are using the Failover Transport (which you should be) in conjunction with the SSL Transport then its best to set the property to point to the certificate that signed all your broker's certificates. Here's what the code looks like: + +#include + +... + +decaf::lang::System::setProperty( "decaf.net.ssl.trustStore", "/certificate.pem" ); + +One thing to note here is that since we are using OpenSSL as our SSL Engine the Certificate needs to be in PEM format. + diff --git a/how-do-message-groups-compare-to-selectors.md b/how-do-message-groups-compare-to-selectors.md new file mode 100644 index 0000000..30a590f --- /dev/null +++ b/how-do-message-groups-compare-to-selectors.md @@ -0,0 +1,21 @@ +Apache ActiveMQ ™ -- How do Message Groups compare to Selectors + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do Message Groups compare to Selectors](how-do-message-groups-compare-to-selectors.html) + + +Selectors are just filters. Message Groups are a way of grouping messages together to the same consumer to partition your application or insure ordering is maintained. + +Now you could implement message groups by hand, by having each consumer use its own selector for a specific header. e.g. if you had consumers A, B, C; you could use the values "A", "B", "C" as values of the JMSXGroupID header (or any other header name you like). + +Then if consumer A used "JMXGroupID = 'A'" as a selector it would be the only consumer getting the A messages; ditto for B and C. + +So that kinda simulates message groups a little. The downside is + +* you have to know the set of consumers that are running to know what values of A, B or C you can put on the header. So if you start up a new consumer D, you have to change the producer to now be aware of D. Wtih message groups you can use any string whatsoever - typically the string will come from your business such as a product code, a customer ID, a stock ticker name or something (or some combination of data such as IBM and NASDAQ and Tuesday). + +* if for whatever reason consumer B stops running, noone consumes any messages for B - you have to know to restart B manually. With message groups things auto-partition and load balance for you with immediate failover. + +* there's nothing to stop you accidentally creating 2 threads with the same selector - or 2 processes on the network starting up with the same selector and accidentally consuming from the same group of messages which completely breaks ordering; with message groups you don't have to worry about this - since it guarrentees that only 1 thread in your entire system will process messages from one group at once in order - irrespective how many consumers you start. + +So in general; you can manually partition yourself using selectors. Message Groups however are a self-partitioning and auto-failvoer mechanism which also guarrentees that a single thread will process a specific message group at once, in order. + diff --git a/how-do-multiple-transports-work.md b/how-do-multiple-transports-work.md new file mode 100644 index 0000000..690a4c0 --- /dev/null +++ b/how-do-multiple-transports-work.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- How do multiple transports work + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How do multiple transports work](how-do-multiple-transports-work.html) + + +### For ActiveMQ 3.x/4.x + +The transport a client uses to connect to the broker is just the transport your client uses. So messages the broker sends to your client will be sent over that transport. However the broker can support many transports. + +So client A could connect over HTTP and client B could connect over tcp. Messages client A sends via HTTP will be delivered to B using B's transport, tcp. + diff --git a/how-do-transactions-work.md b/how-do-transactions-work.md new file mode 100644 index 0000000..4b83708 --- /dev/null +++ b/how-do-transactions-work.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- How Do Transactions Work + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How Do Transactions Work](how-do-transactions-work.html) + + +There are two levels of transaction support in ActiveMQ: + +* JMS Transactions - the **`commit()/`****`rollback()`** methods on a Session (which is like doing **`commit()/`****`rollback()`** on a JDBC connection) +* XA Transactions - where the [XASession](http://activemq.apache.org/maven/apidocs/src-html/org/apache/activemq/ActiveMQXASession.html) acts as an [XAResource](http://java.sun.com/j2ee/1.4/docs/api/javax/transaction/xa/XAResource.html) by communicating with the Message Broker, rather like a JDBC Connection takes place in an XA transaction by communicating with the database. + +They are both implemented in a similar manner. When operations are carried out on a transacted (or XA transacted) session, a transaction command is sent to the broker, with a unique transaction ID which is then followed by all the usual commands (send message, acknowledge message etc). When a **`commit()`** or **`rollback()`** is called on the Session, this command is sent to the broker for it to commit or rollback the transaction. + +Now the operations carried out on a transacted session inside a transaction, like a send message or acknowledge message, do not really perform a real send or acknowledge until the commit occurs. So the Broker explicitly handles these cases separately - essentially buffering up the commands until the commit occurs when the messages are really sent or acknowledged. + +ActiveMQ uses [TransactionStore](http://activemq.apache.org/maven/apidocs/src-html/org/apache/activemq/store/TransactionStore.html) (implemented by all persistence adapters) to handle transactions. **`TransactionStore`** will cache all messages and ACKs until commit or rollback occurs. Besides storing messages, the broker will withhold dispatching any of the messages until the session commit. If you wanna see the code, take a look at [MemoryTransactionStore](http://activemq.apache.org/maven/apidocs/src-html/org/apache/activemq/store/memory/MemoryTransactionStore.html) which proxies transactions for Memory and JDBC persistence adapters.  The only real difference with XA transactions is that at the PREPARE stage we MUST write every command we have received (the send message or acknowledge message commands) to a persistent store so that we can recover properly. + diff --git a/how-does-a-queue-compare-to-a-topic.md b/how-does-a-queue-compare-to-a-topic.md new file mode 100644 index 0000000..7455a6f --- /dev/null +++ b/how-does-a-queue-compare-to-a-topic.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- How does a Queue compare to a Topic + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How does a Queue compare to a Topic](how-does-a-queue-compare-to-a-topic.html) + + +### Topics + +In JMS a Topic implements _publish and subscribe_ semantics. When you publish a message it goes to all the subscribers who are interested - so zero to many subscribers will receive a copy of the message. Only subscribers who had an active subscription at the time the broker receives the message will get a copy of the message. + +### Queues + +A JMS Queue implements _load balancer_ semantics. A single message will be received by exactly one consumer. If there are no consumers available at the time the message is sent it will be kept until a consumer is available that can process the message. If a consumer receives a message and does not acknowledge it before closing then the message will be redelivered to another consumer. A queue can have many consumers with messages _load balanced_ across the available consumers. + +So Queues implement a reliable load balancer in JMS. + diff --git a/how-does-activemq-compare-to-amqp.md b/how-does-activemq-compare-to-amqp.md new file mode 100644 index 0000000..7961773 --- /dev/null +++ b/how-does-activemq-compare-to-amqp.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- How does ActiveMQ compare to AMQP + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does ActiveMQ compare to AMQP](how-does-activemq-compare-to-amqp.html) + + +[AMQP](amqp.html) stands for the _Advanced Message Queue Protocol_ and is a specification for how messaging clients and brokers can interoperate. AMQP is a specification of a wire-level protocol for client to message broker communication. It is not a messaging system like ActiveMQ, but just a messaging protocol. + +ActiveMQ now implements AMQP 1.0! + +ActiveMQ also supports other open wire protocols: + +* [OpenWire](openwire.html), a fast binary format +* [Stomp](stomp.html), a simple and easily implemented text based-protocol +* [MQTT](mqtt.html), a compact binary format for limited devices on an unreliable network + +Through these protocols, ActiveMQ can support clients in C, C++, C#, Ruby, Python, Perl, PHP, Pike etc. AMQP is most similar to OpenWire, because both OpenWire and AMQP are designed for high performance messaging, through a binary (rather than text-based) format. As a text-based format, STOMP is much easier to implement, but gives somewhat slower performance. + diff --git a/how-does-activemq-compare-to-artemis.md b/how-does-activemq-compare-to-artemis.md new file mode 100644 index 0000000..f9f818d --- /dev/null +++ b/how-does-activemq-compare-to-artemis.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- How does ActiveMQ compare to Artemis + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does ActiveMQ compare to Artemis](how-does-activemq-compare-to-artemis.html) + + +[Artemis](https://activemq.apache.org/artemis/) is the codename used for the HornetQ code that was donated to the Apache Foundation. + +It is possible that Artemis will eventually become the successor to ActiveMQ 5.x (and that it might eventually be branded as ActiveMQ 6.x), but no decision about that had been made as of April 2015 as documented in that month's [ActiveMQ Board Report](http://activemq.apache.org/apache-activemq-board-report-201504-april.html). + diff --git a/how-does-activemq-compare-to-fuse-message-broker.md b/how-does-activemq-compare-to-fuse-message-broker.md new file mode 100644 index 0000000..9185378 --- /dev/null +++ b/how-does-activemq-compare-to-fuse-message-broker.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How does ActiveMQ compare to Fuse Message Broker + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does ActiveMQ compare to Fuse Message Broker](how-does-activemq-compare-to-fuse-message-broker.html) + + +[Fuse Message Broker](http://fusesource.com/products/enterprise-activemq/) is a certified distribution of Apache ActiveMQ provided by FuseSource. [FuseSource](http://fusesource.com) does all of its development and bug fixes as part of the Apache ActiveMQ community, so there are no functional differences between the two. FuseSource may do more frequent releases than Apache, so it is possible to get bug fixes from a Fuse Message Broker release sooner than from an official Apache ActiveMQ release. + diff --git a/how-does-activemq-compare-to-jbossmq.md b/how-does-activemq-compare-to-jbossmq.md new file mode 100644 index 0000000..f182f1a --- /dev/null +++ b/how-does-activemq-compare-to-jbossmq.md @@ -0,0 +1,30 @@ +Apache ActiveMQ ™ -- How does ActiveMQ compare to JBossMQ + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does ActiveMQ compare to JBossMQ](how-does-activemq-compare-to-jbossmq.html) + + +There are some similarities between the two; they both support JMS 1.1 and run inside [JBoss 4.x](jboss-integration.html). + +However ActiveMQ does offer some specific differences and advantages (at least from our perspective) + +* ActiveMQ works great in any JVM not just inside the JBoss application server +* ActiveMQ comes complete with a large number of [Cross Language Clients](cross-language-clients.html) +* ActiveMQ supports many different [Protocols](protocols.html) such as [Ajax](ajax.html), [REST](rest.html), [Stomp](stomp.html), [OpenWire](openwire.html), [XMPP](xmpp.html) +* ActiveMQ supports a large number of advanced features like [Message Groups](message-groups.html), [Exclusive Consumer](exclusive-consumer.html), [Composite Destinations](composite-destinations.html), [Advisory Message](advisory-message.html) support +* ActiveMQ supports reliable connections with [configurable](configuring-transports.html) automatic reconnection +* ActiveMQ has great [Spring Support](spring-support.html) +* ActiveMQ supports distributed destinations across networks +* ActiveMQ is very fast; often 10x faster than JBossMQ. + +Performance guides +------------------ + +If you're not convinced by performance reports then please do try running performance tests yourself. You might wanna check out our overview of [Performance](performance.html) or try using out the [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) + +The Commercial Providers on the [Support](support.html) page may also be able to help diagnose performance issues, suggest changes, etc... + +More on JBoss Integration +------------------------- + +[Integrating Apache ActiveMQ with JBoss](integrating-apache-activemq-with-jboss.html) + diff --git a/how-does-activemq-compare-to-mantaray.md b/how-does-activemq-compare-to-mantaray.md new file mode 100644 index 0000000..4660646 --- /dev/null +++ b/how-does-activemq-compare-to-mantaray.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- How does ActiveMQ compare to Mantaray + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does ActiveMQ compare to Mantaray](how-does-activemq-compare-to-mantaray.html) + + +We are obviously biased, and will tell you "just use ActiveMQ!" ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) But Mantaray is an OK JMS provider. The interesting thing about MantaRay is it can support a peer-based network, just as ActiveMQ does with its [peer transport](peer-transport-reference.html). + +We [benchmark](performance.html) against Mantaray and other open source JMS providers and in our tests (in which we try to be as objective as possible) ActiveMQ exhibits higher performance in most scenarios. + +A peer transport can be useful when using non-persistent messaging. But if you want persistent messaging you often want to use a federated network with certain brokers on the network being the persistence brokers (so you can backup the file systems etc). + +The ideal topology often depends on your requirements and how you want to manage persistence and deal with hardware failures such as with [MasterSlave](masterslave.html). + diff --git a/how-does-activemq-compare-to-mule.md b/how-does-activemq-compare-to-mule.md new file mode 100644 index 0000000..ce8a56b --- /dev/null +++ b/how-does-activemq-compare-to-mule.md @@ -0,0 +1,29 @@ +Apache ActiveMQ ™ -- How does ActiveMQ compare to Mule + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does ActiveMQ compare to Mule](how-does-activemq-compare-to-mule.html) + + +Apache ActiveMQ is a messaging provider, with extensive capabilities for message brokering. Mule is described as an ESB, in that it defines and executes the brokering of message exchanges among integrated software components. + +#### Architecture + +Mule provides an accessible programming model for integration, designed to work well with - and leverage - other middleware technologies. For this reason, Mule does not provide a native messaging system, and it is therefore frequently used with Apache ActiveMQ. + +If you use Mule to define an integration based on Apache ActiveMQ, you would use a distinct framework, (the Mule Component Model) to define interfaces for connectivity, as well as mediating activities such as transformations and exception handling. (Note that the Mule framework model presumes a SEDA process model.)Used in this manner, you could think of Mule as a library for defining the interactions among components, with the advantage that it is loosely coupled to both the integrated components and the messaging infrastructure. + +If you have made the choice to use Apache ActiveMQ for messaging and such loose coupling to the messaging infrastructure is not required, you can also configure ActiveMQ directly or through the [Apache Camel container](http://activemq.apache.org/camel/). This may give you access to message handling features not defined in the Mule framework, while still providing connectivity to non-JMS clients through ActiveMQ's numerous options for client connectivity. Working with ActiveMQ directly also allows you to take advantage of clustering and failover capabilities that lie outside the scope of the Mule Component Model. + +#### Points in Common + +The Mule framework is quite user-friendly, is Java-based (Mule components, called Universal Model Objects, are essentially POJOs), and is both flexible (deploys to virtually any Java environment) and lightweight (can be deployed in Spring). These are advantages that it shares with ActiveMQ, so it's not surprising that the two technologies were often used together, before the advent of [Apache Camel](http://activemq.apache.org/camel) + +#### "ESB" versus "Messaging" + +Mule supports a number of integration capabilities that go beyond the scope of messaging, such as BPEL-based orchestration and (SOAP-to-Java) Web Services support. These are rightly described as ESB features, in that they are more than what one would expect from a messaging platform alone. For environments with these requirements, Camel or Mule provides a good extension to the capabilities of ActiveMQ. + +Additional ESB requirements, such as support for a distributed architecture and a native JBI container and components, are not supported by Mule. If you require these capabilities, we encourage you to investigate other open source ESBs that also integrate Apache ActiveMQ, such as [Apache ServiceMix](http://servicemix.org/), and even the [Apache CXF](http://incubator.apache.org/cxf/) service framework. + +#### Commercial Support, Copyright and License + +Both Mule and ActiveMQ have commercial support available from companies dedicated to the technologies. The commercial support corporation for Mule (MuleSource) holds the copyright to Mule, and licenses it under an open source license adapted from the Mozilla Public License (an "MPL+" license). Apache ActiveMQ is an open source project at the Apache Software Foundation, and as such is available under the Apache License 2.0. Commercial support for ActiveMQ is provided by [Iona plc](http://open.iona.com/). + diff --git a/how-does-activemq-compare-to-spread-toolkit.md b/how-does-activemq-compare-to-spread-toolkit.md new file mode 100644 index 0000000..5293408 --- /dev/null +++ b/how-does-activemq-compare-to-spread-toolkit.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- How does ActiveMQ compare to Spread Toolkit + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does ActiveMQ compare to Spread Toolkit](how-does-activemq-compare-to-spread-toolkit.html) + + +Spread Toolkit is a C++ library for messaging and only has [partial support for JMS](http://www.spread.org/JMS4Spread/docs/). It doesn't support durable messaging, transactions, XA or full JMS 1.1. It is also dependent on a native code Spread daemon running on the machine. + +Apache ActiveMQ on the other hand is the JMS provider used in [Apache Geronimo](http://geronimo.apache.org) and is J2EE 1.4 certified in Geronimo and is 100% pure Java. ActiveMQ supports transient and durable messaging, transactions, XA, J2EE 1.4, JMS 1.1, JCA 1.5 as well as heaps of different features like [Message Groups](message-groups.html) and [Clustering](clustering.html) + +Performance guides +------------------ + +If you're not convinced by performance reports then please do try running performance tests yourself. You might wanna check out our overview of [Performance](performance.html) or try using out the [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) + +The Commercial Providers on the [Support](support.html) page may also be able to help diagnose performance issues, suggest changes, etc... + diff --git a/how-does-connectionfactory-relate-to-the-broker.md b/how-does-connectionfactory-relate-to-the-broker.md new file mode 100644 index 0000000..11a4f21 --- /dev/null +++ b/how-does-connectionfactory-relate-to-the-broker.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- How does ConnectionFactory relate to the Broker + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How does ConnectionFactory relate to the Broker](how-does-connectionfactory-relate-to-the-broker.html) + + +How does ConnectionFactory relate to the Broker? +------------------------------------------------ + +The ConnectionFactory is a JMS specification client side interface for creating connections to a JMS broker. The Broker is a service on the network or [embedded in the same JVM](how-do-i-embed-a-broker-inside-a-connection.html) which provides the message provider. So think of the ConnectionFactory as the client API for sending and receiving messages and the broker is a server side implementation. + +### See Also + +* [How do I create new destinations](how-do-i-create-new-destinations.html) +* [How do I embed a Broker inside a Connection](how-do-i-embed-a-broker-inside-a-connection.html) +* [What are administered objects](what-are-administered-objects.html) + diff --git a/how-does-jms-compare-with-email.md b/how-does-jms-compare-with-email.md new file mode 100644 index 0000000..9f941ec --- /dev/null +++ b/how-does-jms-compare-with-email.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- How does JMS compare with email + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How does JMS compare with email](how-does-jms-compare-with-email.html) + + +Certainly they both do similar things. The main difference between them is their history and design criteria. + +JMS has a bunch of different qualities of service (durable v non-durable, queue v topic) designed for very high performance messaging with low latency together with reliability. Email is designed for connectivitiy on the web. So they have different design trade offs. e.g. its not a big deal to get multiple copies of an email (which I get fairly often if I loose a connection with an email server over POP for example). It would be a major disaster to get 2 copies of the "remove $1000 from my bank account" messages ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) + +The main reasons for using JMS is performance (throughput & latency), together with support for transactions & XA together with avoiding duplicates and message loss. + diff --git a/how-does-journaling-work-with-multiple-brokers.md b/how-does-journaling-work-with-multiple-brokers.md new file mode 100644 index 0000000..1557c65 --- /dev/null +++ b/how-does-journaling-work-with-multiple-brokers.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How does journaling work with multiple brokers + +[Community](community.html) > [FAQ](faq.html) > [Persistence Questions](persistence-questions.html) > [How does journaling work with multiple brokers](how-does-journaling-work-with-multiple-brokers.html) + + +Brokers cannot share a journal. Each must be configured with it's own journal. + diff --git a/how-does-openwire-compare-to-stomp.md b/how-does-openwire-compare-to-stomp.md new file mode 100644 index 0000000..5ff7a2a --- /dev/null +++ b/how-does-openwire-compare-to-stomp.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- How does OpenWire compare to Stomp + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does OpenWire compare to Stomp](how-does-openwire-compare-to-stomp.html) + + +[OpenWire](openwire.html) is the native protocol that Apache ActiveMQ uses. It is designed for performance and size on the wire - sacrificing some ease of implementation with higher performance and reduced network bandwidth as a priority. OpenWire was first released in Apache ActiveMQ 4.0. + +[Stomp](stomp.html) is a simpler text based protocol which is designed to be very simple to implement in a few hours in any language or platform (e.g. you can use a telnet client to communicate via Stomp). A Stomp client is not going to be as efficient as an client that uses +OpenWire, but it much simpler so you can generally be up and running with it much quicker. + diff --git a/how-does-the-journal-work.md b/how-does-the-journal-work.md new file mode 100644 index 0000000..affb83a --- /dev/null +++ b/how-does-the-journal-work.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How does the journal work + +[Community](community.html) > [FAQ](faq.html) > [Persistence Questions](persistence-questions.html) > [How does the journal work](how-does-the-journal-work.html) + + +See the description [here](persistence.html) + diff --git a/how-does-the-website-work.md b/how-does-the-website-work.md new file mode 100644 index 0000000..5af6035 --- /dev/null +++ b/how-does-the-website-work.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- How does the website work + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How does the website work](how-does-the-website-work.html) + + +This website is actually rendered from the Wiki contents that you can [edit](how-do-i-edit-the-website.html). +When viewing a page on the static HTML website you can click on the **edit** link (bottom of the page) and you can edit the page. + +Other useful [Site links](site.html) are + +* [Banner](banner.html) +* [Navigation](navigation.html) +* [QuickLinks](quicklinks.html) +* [SiteIndex](siteindex.html) +* [SiteMap](sitemap.html) + +Note that it takes a little while to update the Apache site at [http://activemq.apache.org/](http://activemq.apache.org/) due to caching. Though this site usually updates quickly: [http://cwiki.apache.org/ACTIVEMQ/](http://cwiki.apache.org/ACTIVEMQ/) + diff --git a/how-does-xbean-compare-to-spring-2.md b/how-does-xbean-compare-to-spring-2.md new file mode 100644 index 0000000..875a8df --- /dev/null +++ b/how-does-xbean-compare-to-spring-2.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- How does XBean compare to Spring 2 + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How does XBean compare to Spring 2](how-does-xbean-compare-to-spring-2.html) + + +Spring 2.0 has introduced the ability to handle custom XML languages inside the spring.xml. This is something we developed [XBean](http://geronimo.apache.org/xbean/) for way back in the Spring 1.x days. + +The Spring hook requires component developers to write their own XML handling, processing DOMs and so forth. On various projects like ActiveMQ, Jencks, Jetty, ServiceMix, XFire - we didn't want to have to spend time hand-crafting parsing of XML code. So XBean is used to auto-create the parsing code along with an XSD and reference documentation for how to configure these services in custom XML languages. + +So you can think of XBean as being like a JAXB2 tool for working inside Spring XML files + +### Spring versions supported + +So you can use XBean in Spring 1.x or Spring 2.x (for Spring 2.0 support you need XBean 2.6 or later along with the matching release of ActiveMQ). + +If you are using Spring 1.x you use the XBean versions of the Spring ApplicationContext classes. In Spring 2.0 the XBean functionality works perfectly fine inside a regular spring.xml file. The only main difference between using the XBean ApplicationContext files and the Spring ones is that the Spring ones mandate validation, so your XML must include all the XSD information (which is handy for IDE completion anyway) whereas this is not mandatory in the XBean configuraiton files. + +### Examples + +Here's a regular Spring 2 XML file using ActiveMQ's XML inside it to configure a broker & destinations & a connection factory + +[http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/resources/spring-embedded-xbean.xml](http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/resources/spring-embedded-xbean.xml) + +Here's an example Spring XML for Spring 2 which configures ActiveMQ, ActiveMQ Resource Adapter and Jencks all using Spring 2 with XSD validation (and so completion) + +[http://svn.codehaus.org/jencks/trunk/jencks/src/test/resources/org/jencks/xbean/xbean-validating.xml](http://svn.codehaus.org/jencks/trunk/jencks/src/test/resources/org/jencks/xbean/xbean-validating.xml) + diff --git a/how-fast-is-activemq.md b/how-fast-is-activemq.md new file mode 100644 index 0000000..75f133e --- /dev/null +++ b/how-fast-is-activemq.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- How fast is ActiveMQ + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [How fast is ActiveMQ](how-fast-is-activemq.html) + + +How fast is ActiveMQ? +--------------------- + +It all depends on the configuration, the operating system, hardware, JVM, JVM configuration and what you're doing. For more details see [Performance](performance.html) + +Performance guides +------------------ + +If you're not convinced by performance reports then please do try running performance tests yourself. You might wanna check out our overview of [Performance](performance.html) or try using out the [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) + +The Commercial Providers on the [Support](support.html) page may also be able to help diagnose performance issues, suggest changes, etc... + diff --git a/how-lightweight-is-sending-a-message.md b/how-lightweight-is-sending-a-message.md new file mode 100644 index 0000000..d87af8b --- /dev/null +++ b/how-lightweight-is-sending-a-message.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- How lightweight is sending a message + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How lightweight is sending a message](how-lightweight-is-sending-a-message.html) + + +### For ActiveMQ 3.x/4.x + +It depends ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) + +If you are in a JMS transaction, are using non-durable messaging then its fairly lightweight and fast - typically just blocking until the message has got onto the socket buffer. Though if you are using durable messaging and not using JMS transactions then by default we will perform a blocking request-response with the broker to ensure the message is persisted to disk by the time the call to send() is complete - which is pretty slow. + +However if you really want it to be very lightweight and fast, [enable async sending](configuring-transports.html) on your JMS connection. + +If you really want low latency, such as in a GUI thread or very high performance server, you probably want to enable asynchronous sending. The only downside of asynchronous sending is if the send fails for whatever reason (security exception typically or some transport failure), then you don't get an exception thrown in the sender thread, since all the work is done asynchronously, though your ErrorListener will get notified. + +(If you use the reliable transport, then you can let the JMS client handle transport errors and drop & reconnect to another broker to handle auto-reconnection for you). + diff --git a/how-should-i-implement-request-response-with-jms.md b/how-should-i-implement-request-response-with-jms.md new file mode 100644 index 0000000..02fd60b --- /dev/null +++ b/how-should-i-implement-request-response-with-jms.md @@ -0,0 +1,249 @@ +Apache ActiveMQ ™ -- How should I implement request response with JMS + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How should I implement request response with JMS](how-should-i-implement-request-response-with-jms.html) + + +How should I implement request response with JMS? +------------------------------------------------- + +The simplest solution is to use [Camel as a Spring Remoting provider](http://activemq.apache.org/camel/spring-remoting.html) which allows you to hide all the JMS API from your business logic and letting Camel provide the request/response handling code for you. + +However if you wish to write the JMS client code yourself, please read on how it works... + +### Using the JMS API to implement request-response + +You might think at first that to implement request-response type operations in JMS that you should create a new consumer with a selector per request; or maybe create a new temporary queue per request. + +Creating temporary destinations, consumers, producers and connections are all synchronous request-response operations with the broker and so should be avoided for processing each request as it results in lots of chat with the JMS broker. + +The best way to implement request-response over JMS is to create a temporary queue and consumer per client on startup, set JMSReplyTo property on each message to the temporary queue and then use a [correlationID on each message](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Message.html#setJMSCorrelationID(java.lang.String)) to correlate request messages to response messages. This avoids the overhead of creating and closing a consumer for each request (which is expensive). It also means you can share the same producer & consumer across many threads if you want (or pool them maybe). + +The [Lingo library](http://lingo.codehaus.org/) is an implementation of Spring remoting using JMS. (Spring remoting is a kind of POJO based remoting where the remoting code is invisible to your business logic code). + +It uses exactly this pattern; of using correlation IDs to correlate requests to responses. The server side just has to remember to put the inbound message's correlation ID on the response. + +The actual class which does this is the [MultiplexingRequestor](http://lingo.codehaus.org/maven/apidocs/org/logicblaze/lingo/jms/impl/MultiplexingRequestor.html) . It may be just using Spring remoting with Lingo is the simplest way of implementing request response - or maybe you could just use Lingo's [Requestor](http://lingo.codehaus.org/maven/apidocs/org/logicblaze/lingo/jms/Requestor.html) interface to keep the JMS semantics. + +More details [here](http://docs.codehaus.org/display/LINGO/Request+Response+with+JMS) + +### Client side + +So the client side creates a consumer on a temporary queue as follows... + +// client side +Destination tempDest = session.createTemporaryQueue(); +MessageConsumer responseConsumer = session.createConsumer(tempDest); +... + +// send a request.. +message.setJMSReplyTo(tempDest) +message.setJMSCorrelationID(myCorrelationID); + +producer.send(message); + +### Server side + +public void onMessage(Message request) { + + Message response = session.createMessage(); + response.setJMSCorrelationID(request.getJMSCorrelationID()) + + producer.send(request.getJMSReplyTo(), response) +} + +Full Examples +------------- + +### Server Side + +import org.apache.activemq.broker.BrokerService; +import org.apache.activemq.ActiveMQConnectionFactory; + +import javax.jms.*; + +public class Server implements MessageListener { + private static int ackMode; + private static String messageQueueName; + private static String messageBrokerUrl; + + private Session session; + private boolean transacted = false; + private MessageProducer replyProducer; + private MessageProtocol messageProtocol; + + static { + messageBrokerUrl = "tcp://localhost:61616"; + messageQueueName = "client.messages"; + ackMode = Session.AUTO_ACKNOWLEDGE; + } + + public Server() { + try { + //This message broker is embedded + BrokerService broker = new BrokerService(); + broker.setPersistent(false); + broker.setUseJmx(false); + broker.addConnector(messageBrokerUrl); + broker.start(); + } catch (Exception e) { + //Handle the exception appropriately + } + + //Delegating the handling of messages to another class, instantiate it before setting up JMS so it + //is ready to handle messages + this.messageProtocol = new MessageProtocol(); + this.setupMessageQueueConsumer(); + } + + private void setupMessageQueueConsumer() { + ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(messageBrokerUrl); + Connection connection; + try { + connection = connectionFactory.createConnection(); + connection.start(); + this.session = connection.createSession(this.transacted, ackMode); + Destination adminQueue = this.session.createQueue(messageQueueName); + + //Setup a message producer to respond to messages from clients, we will get the destination + //to send to from the JMSReplyTo header field from a Message + this.replyProducer = this.session.createProducer(null); + this.replyProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); + + //Set up a consumer to consume messages off of the admin queue + MessageConsumer consumer = this.session.createConsumer(adminQueue); + consumer.setMessageListener(this); + } catch (JMSException e) { + //Handle the exception appropriately + } + } + + public void onMessage(Message message) { + try { + TextMessage response = this.session.createTextMessage(); + if (message instanceof TextMessage) { + TextMessage txtMsg = (TextMessage) message; + String messageText = txtMsg.getText(); + response.setText(this.messageProtocol.handleProtocolMessage(messageText)); + } + + //Set the correlation ID from the received message to be the correlation id of the response message + //this lets the client identify which message this is a response to if it has more than + //one outstanding message to the server + response.setJMSCorrelationID(message.getJMSCorrelationID()); + + //Send the response to the Destination specified by the JMSReplyTo field of the received message, + //this is presumably a temporary queue created by the client + this.replyProducer.send(message.getJMSReplyTo(), response); + } catch (JMSException e) { + //Handle the exception appropriately + } + } + + public static void main(String\[\] args) { + new Server(); + } +} + +### Client Side + +import org.apache.activemq.ActiveMQConnectionFactory; + +import javax.jms.*; +import java.util.Random; + +public class Client implements MessageListener { + private static int ackMode; + private static String clientQueueName; + + private boolean transacted = false; + private MessageProducer producer; + + static { + clientQueueName = "client.messages"; + ackMode = Session.AUTO_ACKNOWLEDGE; + } + + public Client() { + ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); + Connection connection; + try { + connection = connectionFactory.createConnection(); + connection.start(); + Session session = connection.createSession(transacted, ackMode); + Destination adminQueue = session.createQueue(clientQueueName); + + //Setup a message producer to send message to the queue the server is consuming from + this.producer = session.createProducer(adminQueue); + this.producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); + + //Create a temporary queue that this client will listen for responses on then create a consumer + //that consumes message from this temporary queue...for a real application a client should reuse + //the same temp queue for each message to the server...one temp queue per client + Destination tempDest = session.createTemporaryQueue(); + MessageConsumer responseConsumer = session.createConsumer(tempDest); + + //This class will handle the messages to the temp queue as well + responseConsumer.setMessageListener(this); + + //Now create the actual message you want to send + TextMessage txtMessage = session.createTextMessage(); + txtMessage.setText("MyProtocolMessage"); + + //Set the reply to field to the temp queue you created above, this is the queue the server + //will respond to + txtMessage.setJMSReplyTo(tempDest); + + //Set a correlation ID so when you get a response you know which sent message the response is for + //If there is never more than one outstanding message to the server then the + //same correlation ID can be used for all the messages...if there is more than one outstanding + //message to the server you would presumably want to associate the correlation ID with this + //message somehow...a Map works good + String correlationId = this.createRandomString(); + txtMessage.setJMSCorrelationID(correlationId); + this.producer.send(txtMessage); + } catch (JMSException e) { + //Handle the exception appropriately + } + } + + private String createRandomString() { + Random random = new Random(System.currentTimeMillis()); + long randomLong = random.nextLong(); + return Long.toHexString(randomLong); + } + + public void onMessage(Message message) { + String messageText = null; + try { + if (message instanceof TextMessage) { + TextMessage textMessage = (TextMessage) message; + messageText = textMessage.getText(); + System.out.println("messageText = " + messageText); + } + } catch (JMSException e) { + //Handle the exception appropriately + } + } + + public static void main(String\[\] args) { + new Client(); + } +} + +### Protocol Class + +This class is needed to run the client/server example above. Delegating the handling of messages to a seperate class is solely a personal preference. + +public class MessageProtocol { + public String handleProtocolMessage(String messageText) { + String responseText; + if ("MyProtocolMessage".equalsIgnoreCase(messageText)) { + responseText = "I recognize your protocol message"; + } else { + responseText = "Unknown protocol message: " + messageText; + } + + return responseText; + } +} + diff --git a/how-should-i-package-applications-using-camel-and-activemq.md b/how-should-i-package-applications-using-camel-and-activemq.md new file mode 100644 index 0000000..90166f5 --- /dev/null +++ b/how-should-i-package-applications-using-camel-and-activemq.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- How should I package applications using Camel and ActiveMQ + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How should I package applications using Camel and ActiveMQ](how-should-i-package-applications-using-camel-and-activemq.html) + + +How should I package applications using Camel and ActiveMQ +---------------------------------------------------------- + +So you may wish to use Camel's [Enterprise Integration Patterns](enterprise-integration-patterns.html) inside the ActiveMQ Broker. In which case the stand alone broker is already packaged to work with Camel out of the box; just add your EIP routing rules to ActiveMQ's [Xml Configuration](xml-configuration.html) like the example routing rule which ships with ActiveMQ 5.x or later. If you want to include some Java routing rules, then just add your jar to somewhere inside ActiveMQ's lib directory. + +If you wish to use ActiveMQ and/or Camel in a standalone application, we recommend you just create a normal Spring application; then add the necessary jars and customise the Spring XML and you're good to go. + +### What jars do I need + +* [what jars are required for ActiveMQ](initial-configuration.html) +* [what jars are required for Camel](http://activemq.apache.org/camel/what-jars-do-i-need.html) + diff --git a/how-should-i-use-the-vm-transport.md b/how-should-i-use-the-vm-transport.md new file mode 100644 index 0000000..e922ea5 --- /dev/null +++ b/how-should-i-use-the-vm-transport.md @@ -0,0 +1,28 @@ +Apache ActiveMQ ™ -- How should I use the VM transport + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How should I use the VM transport](how-should-i-use-the-vm-transport.html) + + +### For ActiveMQ 3.x/4.x + +[Using the VM transport](how-do-i-use-activemq-using-in-jvm-messaging.html) to connect to an in-JVM broker is the fastest and most efficient transport you can use. + +This is because by default there is no serialization to a socket or operating system socket resources used up; its purely an in-JVM List used to exchange messages with clients and the broker. Sometimes you want the VM transport to work as an async SEDA queue; other times you want to inline the processing so that there are less thread context switches which can improve throughput in high performance scenarios. + +One thing to note with the VM transport is that messages are passed by reference. One slight exception to this is the JMS ObjectMessage. (see below for details on how to disable it in ActiveMQ 4.x) + +You can also further optimise things by setting the **copyMessageOnSend** property to be false; which avoids making a copy of the ObjectMessage to send; though this assumes that you don't try and resuse the ObjectMessage instance; you just create it once and send it once and don't try and change the body of the message after sending it. + +Be careful of ClassLoaders + +Note that you should only perform the above optimisation if all the producers and consumers are in a compatible class loader. For example if you have 2 WARs with their own jars which are sending messages to each other, you could get strange ClassCastExceptions occuring due to the same class being loaded in each class loader; so sometimes serializing ObjectMessage is a good thing to avoid ClassPath hell - so only perform the above optimisation if you are sure you're ClassPaths are OK + +### Disabling Object serialization with ObjectMessage for ActiveMQ 4.x + +The JMS specification dictates that the body of an ObjectMessage must be serialized when you call send() to avoid the object changing under your feet affecting what view the consumer sees of the object. + +You can disable the automatic serialization of ObjectMessage payloads so that the objects are passed by value in 4.x by setting the **objectMessageSerializationDefered** flag to true on the ActiveMQConnectionFactory (or ActiveMQConnection). + +ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost"); +factory.setObjectMessageSerializationDefered(true); + diff --git a/how-to-become-a-committer-on-the-activemq-project.md b/how-to-become-a-committer-on-the-activemq-project.md new file mode 100644 index 0000000..5fcb2db --- /dev/null +++ b/how-to-become-a-committer-on-the-activemq-project.md @@ -0,0 +1,21 @@ +Apache ActiveMQ ™ -- How to Become a Committer on the ActiveMQ Project + +[Index](index.html) > [How to Become a Committer on the ActiveMQ Project](how-to-become-a-committer-on-the-activemq-project.html) + + +How to Become a Committer on the ActiveMQ Project +================================================= + +This page is under active development so the ideas here are very fluid right now. + +As outlined on [How It Works document](http://www.apache.org/foundation/how-it-works.html) and the [ASF roles](https://www.apache.org/foundation/how-it-works.html#roles) defined there, we want to actively encourage folks to move from being contributors to the ActiveMQ TLP toward becoming full-fledged committers on the project.In an effort to provide more transparency on what it takes to become a committer on the ActiveMQ project, we are assembling our thoughts here. As we work through the identification of the skills and values we feel are necessary to become a committer on the ActiveMQ project, we should continue to discuss our thoughts on the dev@activemq mailing list so that everyone is able to participate.  + +Below is the list of some of the guidelines we believe make up a good candidate for being offered committership: + +* Demonstrated ability to contribute patches/pull requests to ActiveMQ projects  +* Demonstrated participation in discussions on the ActiveMQ mailing lists  +* Willingness to contribute to the documentation +* Willingness to mentor and be mentored +* Helping to promote the community and this project, including outside of Apache +* Sustained interest and contribution + diff --git a/how-to-configure-a-new-database.md b/how-to-configure-a-new-database.md new file mode 100644 index 0000000..4f4139d --- /dev/null +++ b/how-to-configure-a-new-database.md @@ -0,0 +1,43 @@ +Apache ActiveMQ ™ -- How to configure a new database + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How to configure a new database](how-to-configure-a-new-database.html) + + +ActiveMQ explicity supports Derby, Axion, HSQL, Oracle, and SQLServer. Below are the steps on how to configure a new database. + +1\. Modify activemq.xml found in the directory "activemq_home/conf" by editing or adding a JDBC DataSource Configuration. + +e.g. + + + + + + + + + +**For AMQ 3.x** + + + + com.microsoft.jdbc.sqlserver.SQLServerDriver + + + jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=activedb + + + sa + + + + + + true + + + +2\. Set the datasource reference to use the new jdbc configuration e.g + +3\. Place the jdbc driver in the directory "activemq_home/lib/optional". + diff --git a/how-to-deal-with-large-number-of-threads-in-clients.md b/how-to-deal-with-large-number-of-threads-in-clients.md new file mode 100644 index 0000000..eef6a7d --- /dev/null +++ b/how-to-deal-with-large-number-of-threads-in-clients.md @@ -0,0 +1,34 @@ +Apache ActiveMQ ™ -- How to deal with large number of threads in clients + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How to deal with large number of threads in clients](how-to-deal-with-large-number-of-threads-in-clients.html) + + +If you study thread allocation in ActiveMQ clients, you'll notice that by default there is one thread allocated by every session. This basically means that session will use its [ThreadPoolExecutor](http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html) to execute its tasks. Up until version 5.7 this executor was unbound which could lead to OOM problems in rare case where are a large number of busy sessions in the same JVM could cause uncontrollable spikes in thread creation. + +In 5.7 we bounded this executor to a maximum of 1000 threads by default, which we believe should be enough for most use cases. In case of large number of busy sessions, each of them could end up using large number of threads and eventually OOM your application. There are couple of things you can do. The first obvious thing is to decrease the max thread limit a session can use, like this: + +ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); +connectionFactory.setMaxThreadPoolSize(10); +Connection conn = connectionFactory.createConnection(); +conn.start(); + +On the other hand this can lead to the scenario where a single session exaust its max thread number. A default behavior of `ThreadPoolExecutor` in this case is to throw an exception, so you'll notice it. A workaround for this scenario is to provide a rejected task handler that will synchronize the execution with the calling thread, like this + +ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); +connectionFactory.setRejectedTaskHandler(new ThreadPoolExecutor.CallerRunsPolicy()); +Connection conn = connectionFactory.createConnection(); +conn.start(); + +This will prevent the `ThreadPoolExecutor` from throwing an exception when it reaches its bound. Instead it will execute the rejected task in the calling thread. + +Finally, you can eliminate these threads completly, you can do that by setting `alwaysSessionAsync` property to false + +ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); +connectionFactory.setAlwaysSessionAsync(false); +Connection conn = connectionFactory.createConnection(); +conn.start(); + +However you need to have in mind that this approach can affect performance of the whole system. + +So there you go. In the unlikely scenario where your application has trouble with the number of threads created by JMS session, you can use one of the shown techniques to deal with it. As always there's no silver bullet for all scenarios, so measure and tune for your system. + diff --git a/how-to-deploy-activemq-ra-versionrar-to-weblogic.md b/how-to-deploy-activemq-ra-versionrar-to-weblogic.md new file mode 100644 index 0000000..e53a786 --- /dev/null +++ b/how-to-deploy-activemq-ra-versionrar-to-weblogic.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- How to deploy activemq-ra-version.rar to weblogic + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How to deploy activemq-ra-version.rar to weblogic](how-to-deploy-activemq-ra-versionrar-to-weblogic.html) + + +### This is a guide on how to deploy ActiveMQ's resouce adapter to weblogic 9.1. + +1. Create a new domain in weblogic using the configuration wizard (Start menu BEA Products -> Tools -> configuration Wizard ). +2. Add the jar dependencies (these are the jars inside the rar file..for some reason weblogic is not loading these from the rar file)  in the classpath . One way to do this is by dropping the jars in the lib directory of the domain (<%BEA\_HOME%>\\user\_projects\\domains\\<%DOMAIN_NAME%>\\lib).  + +1. Add the BrokerXmlConfig file called "broker-config.xml" in the classpath. This can be found in the rar file "activemq-rar-*.rar". Otherwise, modify ra.xml by providing an absolute path to "broker-config.xml", see below. + + + + Sets the XML configuration file used to configure the ActiveMQ broker via + Spring if using embedded mode. + + BrokerXmlConfig is the filename which is assumed to be on the classpath unless + a URL is specified. So a value of foo/bar.xml would be assumed to be on the + classpath whereas file:dir/file.xml would use the file system. + Any valid URL string is supported. + + BrokerXmlConfig + java.lang.String + xbean:file:C:\\broker-config.xml + + +   +   +   +2. Start the domain's weblogic server (BEA Products -> User Projects -> -> Start Admin Server for Weblogic Server Domain). +3. Start the domain's admin console (BEA Products -> User Projects -> -> Admin Server Console) and enter the username and password. +4. On the main menu, click "Deployments" under "Your Deployed Resources" +5. On the deployment table, click "install" button. If the button is disabled, then click "Lock & Edit" to enable it. +6. Browse for the activemq-ra-*.rar file then click next (for testing purpose, choose the default onwards). +7. Click the "activate changes" button to check if the resource adapter is properly deployed. + diff --git a/how-to-disable-auto-destination-creation.md b/how-to-disable-auto-destination-creation.md new file mode 100644 index 0000000..8cd4f91 --- /dev/null +++ b/how-to-disable-auto-destination-creation.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- How to disable auto destination creation + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [How to disable auto destination creation](how-to-disable-auto-destination-creation.html) + + +see [How do I restrict connections from creating new queues or topics](how-do-i-restrict-connections-from-creating-new-queues-or-topics.html) + diff --git a/how-to-disable-multicast-discovery.md b/how-to-disable-multicast-discovery.md new file mode 100644 index 0000000..59dd149 --- /dev/null +++ b/how-to-disable-multicast-discovery.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- How to disable multicast discovery + +[Community](community.html) > [FAQ](faq.html) > [Configuration](configuration.html) > [How to disable multicast discovery](how-to-disable-multicast-discovery.html) + + +By default, the [ActiveMQ xml configuration](xml-configuration.html) includes the [multicast discovery](discovery.html) mechanism. The tcp transport connector advertises its self using multicast and a multicast network connector is configured to listen to the same address. In this way, all brokers that share the default multicast address will automatically network with each other. +If multicast is not required, the multicast attributes of the Transport Connector and Network Connector can be removed. + +To stop advertising your connection URI on the multicast network remove the discoveryUri attribute from the : + +replace: + + + +with: + + + +If you do not require any networked broker support remove the altogether. Remove + + + +Alternatively, provide a static networkConnector for each broker you wish to network with by replacing the the discoveryUri with the static transport connection URI of your target broker. + +For more information see the [Discovery Transport Reference](discovery-transport-reference.html) + diff --git a/how-to-enable-ssl-support-on-windows.md b/how-to-enable-ssl-support-on-windows.md new file mode 100644 index 0000000..b9ea37c --- /dev/null +++ b/how-to-enable-ssl-support-on-windows.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- How to enable SSL support on Windows + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [Building FAQs](building-faqs.html) > [OpenSSL Support](openssl-support.html) > [How to enable SSL support on Windows](how-to-enable-ssl-support-on-windows.html) + +To enable support for SSL on Windows you first need to obtain a build of the OpenSSL libraries for Windows (See the OpenSSL site for details). Once you have the OpenSSL package for Windows installed you need to add the HAVE_OPENSSL preprocessor directive to the ActiveMQ-CPP library build's project file and set the include and library paths there as well. When you link the library to your app and run you will need to have the location of the OpenSSL libraries on your PATH or copy the libraries to the System folder. + diff --git a/how-to-unit-test-jms-code.md b/how-to-unit-test-jms-code.md new file mode 100644 index 0000000..903bb87 --- /dev/null +++ b/how-to-unit-test-jms-code.md @@ -0,0 +1,112 @@ +Apache ActiveMQ ™ -- How To Unit Test JMS Code + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [How To Unit Test JMS Code](how-to-unit-test-jms-code.html) + + +When unit testing code with JMS you'll typically want to avoid the overhead of running separate proceses; plus you'll want to increase startup time as fast as possible as you tend to run unit tests often and want immediate feedback. Also persistence can often cause problems - as previous test case results can adversely affect future test case runs - so you often need to purge queues on startup. + +So when unit testing JMS code we recommend the following + +* Use [an embedded broker](how-do-i-embed-a-broker-inside-a-connection.html) to avoid a separate broker process being required. +* Disable [broker persistence](broker-configuration-uri.html) so that no queue purging is required before/after tests. +* It's often simpler and faster to just use Java code to create the broker via an XML configuration file using Spring etc. + +You can do all of this using the following Java code to create your JMS **`ConnectionFactory`** which will also automatically create an embedded broker + +ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"); + +For more configuration options see the [VM Transport Reference](vm-transport-reference.html) and the [Broker Configuration URI](broker-configuration-uri.html) + +Or if you really would rather be more explicit you can create the broker first using the following Java code + +BrokerService broker = new BrokerService(); +broker.setPersistent(false); +broker.start(); + +or you could use [Spring Support.](spring-support.html) + +### Using JNDI + +If your application code is using JNDI to lookup the JMS **`ConnectionFactory`** and **`Destination`**'s to use, then you could use the [JNDI Support](jndi-support.html) in ActiveMQ. + +Add the following **`jndi.properties`** to your classpath, e.g., in **`src/test/resources`**, if you are using maven: + +java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory +java.naming.provider.url = vm://localhost?broker.persistent=false + +You should then consider using [Dynamic destinations in JNDI](jndi-support.html) so that your code looks up destinations via + +context.lookup("dynamicQueues/FOO.BAR"); + +### Using The `EmbeddedActiveMQBroker` JUnit Rule (ActiveMQ 5.13) + +If your test code is using JUnit, then you could use the **`EmbeddedActiveMQBroker`** JUnit Rule provided in the **`activemq-junit`** library. Add the **`activemq-junit`** library along with the **`activemq-broker`** libraries for the version of ActiveMQ you want to test with.  The rule will use whatever version of ActiveMQ it finds in the classpath, so the ActiveMQ libraries need to be specified if they are not already there. + +If you are using Maven, add the following to your **`pom.xml`**: + + + org.apache.activemq.tooling + activemq-junit + ${activemq-junit-version} + test + + + + org.apache.activemq + activemq-broker + ${activemq-version} + test + + + Then add the **`EmbeddedActiveMQBroker`** JUnit Rule to your test, and JUnit will start the embedded broker at the beginning of each test and stop the broker at the end of the test. + +**Use The ActiveMQ JUnit Rule** + +@Rule +public EmbeddedActiveMQBroker broker = new EmbeddedActiveMQBroker(); + +By default, the **`EmbeddedActiveMQBroker`** will configure the broker as non-persistent, and the only transport available will be the VM transport. To customize this configuration, either extend the **`EmbeddedActiveMQBroker`** class and override the **`configure()`** method, or use an XML configuration for the broker.   + +**Note**: to configure an **`EmbeddedActiveMQBroker`** using XML configuration, you may need to add additional libraries to the classpath to support XBean configuration of ActiveMQ. + +**Customizing An EmbeddedActiveMQBroker Using Java** + +@Rule +EmbeddedActiveMQBroker customizedBroker = new EmbeddedActiveMQBroker() { + @Override + protected void configure() { + // Perform additional configuration here... + } +} + + + +**Customizing An EmbeddedActiveMQBroker Using XML Configuration** + +@Rule +EmbeddedActiveMQBroker customizedBroker = new EmbeddedActiveMQBroker("bean:customize-activemq.xml"); + +Note that to use the XML configuration, you may need to add additional libraries on the classpath to support the XBean configuration of ActiveMQ.  The versions of the **`spring-context`** library should correspond with the version used by your selected version of ActiveMQ. + +**Maven Configuration For XBean Configuration** + + + org.springframework + spring-context + Appropriate version for activemq-version + + + + org.apache.activemq + activemq-spring + ${activemq-version> + + +Then you can use the VM URI to connect with the broker + +ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://embedded-broker?create=false"); + +You can also get a connection factory from the **`EmbeddedActiveMQBroker`**: + +ConnectionFactory connectionFactory = embeddedBroker.createConnectionFactory(); + diff --git a/how-you-can-help-release.md b/how-you-can-help-release.md new file mode 100644 index 0000000..0068c03 --- /dev/null +++ b/how-you-can-help-release.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- How you can help release + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Release Plans](release-plans.html) > [How you can help release](how-you-can-help-release.html) + + +How to Help +----------- + +Everyone in the ActiveMQ community can help with releases; users, developers, commmiters are all encouraged to test out a release and post any comments to the [activemq-dev@ mailing list](mailing-lists.html) or create a [JIRA](https://issues.apache.org/activemq/browse/AMQ) issue. + +ActiveMQ is available in both source and binary distributions. See [Getting Started](getting-started.html). + diff --git a/http-and-https-transports-reference.md b/http-and-https-transports-reference.md new file mode 100644 index 0000000..0a2061a --- /dev/null +++ b/http-and-https-transports-reference.md @@ -0,0 +1,33 @@ +Apache ActiveMQ ™ -- HTTP and HTTPs Transports Reference + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [HTTP and HTTPs Transports Reference](http-and-https-transports-reference.html) + + +### HTTP and HTTPS Transports + +The HTTP and HTTPS transports are used to tunnel over HTTP or HTTPS using XML payloads. This allows the ActiveMQ client and broker to tunnel over HTTP avoiding any firewall issues. + +If the client is not JMS you might want to look at [REST](rest.html) or [Ajax](ajax.html) support instead. + +Note that the HTTP Transport is located in the activemq-optional jar. + +ActiveMQ uses a combination of Jetty's Server and SslSocketConnector objects to communicate via the HTTPS transport. When using HTTPS, improper configuration of the corresponding SSL certificates and/or keys may very well lead to the Jetty infinite loop problem described in this [nabble thread](http://www.nabble.com/SslSocketConnector-loops-forever-during-initialization-to14621825.html#a17535467). A good reference on creating and configuring keys and certificates can be found [here](http://docs.codehaus.org/display/JETTY/How+to+configure+SSL). + +#### Configuration Syntax + +[http://host:port](http://host:port) [https://host:port](https://host:port) + +#### Example URI + +http://localhost +https://localhost:8080 + +#### Dependencies + +Clients that use http(s) transport have some additional dependencies, over tcp ones. Those are + +* [HttpClient](http://hc.apache.org/httpclient-3.x/) +* and [XStream](http://xstream.codehaus.org/) + +Make sure you have them in your classpath if you use this transport. Also, if you're configuring networks of brokers with http(s) transport make sure you have them in broker's classpath (somewhere under `lib/` directory) as the broker will act as a client in that case. + diff --git a/i-am-having-problems-with-the-spring-jmstemplate.md b/i-am-having-problems-with-the-spring-jmstemplate.md new file mode 100644 index 0000000..fe1c368 --- /dev/null +++ b/i-am-having-problems-with-the-spring-jmstemplate.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- I am having problems with the Spring JmsTemplate + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [I am having problems with the Spring JmsTemplate](i-am-having-problems-with-the-spring-jmstemplate.html) + + +I am having problems with the Spring JmsTemplate +------------------------------------------------ + +For more detail see the [JmsTemplate Gotchas](jmstemplate-gotchas.html) page along with the [Spring Support](spring-support.html) + diff --git a/i-am-not-receiving-any-messages-what-is-wrong.md b/i-am-not-receiving-any-messages-what-is-wrong.md new file mode 100644 index 0000000..55fd77d --- /dev/null +++ b/i-am-not-receiving-any-messages-what-is-wrong.md @@ -0,0 +1,19 @@ +Apache ActiveMQ ™ -- I am not receiving any messages, what is wrong + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [I am not receiving any messages, what is wrong](i-am-not-receiving-any-messages-what-is-wrong.html) + + +### I am not receiving any messages - what is wrong? + +A _very_ common gotcha when working with JMS is forgetting to start the JMS connection, creating a consumer and not having it receive any messages. I myself have tripped up over this one many many times! ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) + +Make sure you call the [start()](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Connection.html#start()) method on the JMS connection, otherwise messages will not be dispatched to your consumer. + +This is such a common gotcha that as of 4.2 onwards, ActiveMQ will now [log a warning if a message](https://issues.apache.org/activemq/browse/AMQ-1253) is received shortly after the connection was created if the connection was not started (as its so easy to forget to do this part ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png). + +For more details see the discussion of the **warnAboutUnstartedConnectionTimeout** property on the [Connection Configuration URI](connection-configuration-uri.html) + +### If you are calling connection.start() + +Another common gotcha is [due to another consumer grabbing the messages](i-do-not-receive-messages-in-my-second-consumer.html). If its not that then please look at [JMX](jmx.html) or the [Web Console](web-console.html) to determine what consumers are available and their status. Then get some [Support](support.html) to help you resolve your issue. + diff --git a/i-cannot-connect-to-activemq-from-jconsole.md b/i-cannot-connect-to-activemq-from-jconsole.md new file mode 100644 index 0000000..91523b1 --- /dev/null +++ b/i-cannot-connect-to-activemq-from-jconsole.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- I cannot connect to ActiveMQ from JConsole + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [I cannot connect to ActiveMQ from JConsole](i-cannot-connect-to-activemq-from-jconsole.html) + + +Make sure that the machine you are talking to has a valid **java.rmi.server.hostname-property** value + +e.g. on unix (OS X, Linux, Solaris) + +export ACTIVEMQ\_OPTS=$ACTIVEMQ\_OPTS -Djava.rmi.server.hostname= +activemq + +or on Windows + +SET ACTIVEMQ\_OPTS=%ACTIVEMQ\_OPTS% -Djava.rmi.server.hostname= +activemq + diff --git a/i-do-not-receive-messages-in-my-second-consumer.md b/i-do-not-receive-messages-in-my-second-consumer.md new file mode 100644 index 0000000..a781e0d --- /dev/null +++ b/i-do-not-receive-messages-in-my-second-consumer.md @@ -0,0 +1,36 @@ +Apache ActiveMQ ™ -- I do not receive messages in my second consumer + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [I do not receive messages in my second consumer](i-do-not-receive-messages-in-my-second-consumer.html) + + +### Scenario + +* You send 100 messages to a queue. +* Start consumer A, it receives the message +* You start another consumer B, it doesn't receive any messages. +* You kill A. +* Consumer B receives messages now, why? + +### Answer + +This is to do with [prefetch buffers](what-is-the-prefetch-limit-for.html). + +ActiveMQ will try and deliver a number of messages to each consumer as soon as possible to achieve maximum throughput. That means that each consumer typically has 100-1000 messages in RAM ready to be processed so that there is no latency waiting for another message to arrive under periods of high throughput of messages. + +The problem is, if consumer A is set with a prefetch value of >= 100 then it will receive all of the messages before consumer B starts. Then when B starts there are actually no messages available to be dispatched to B (since they are all dispatched to A) until either + +* new messages are sent to the queue +* consumer A stops or its JVM dies + +The solution to this problem is to configure the pre-fetch value to something smaller - such as 1, start the consumers together or publish the messages after the consumers have started. + +You can also [change the dispatch policy](how-do-i-change-dispatch-policy.html) to ensure round robin dispatch. + +To help diagnose these kinds of issues, try [JMX](jmx.html) or the [Web Console](web-console.html) + +### See also + +* [How do I change dispatch policy](how-do-i-change-dispatch-policy.html) +* [JMX](jmx.html) +* [Web Console](web-console.html) + diff --git a/i-get-errors-building-the-code-whats-wrong.md b/i-get-errors-building-the-code-whats-wrong.md new file mode 100644 index 0000000..cf33fb2 --- /dev/null +++ b/i-get-errors-building-the-code-whats-wrong.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- I get errors building the code whats wrong + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [I get errors building the code whats wrong](i-get-errors-building-the-code-whats-wrong.html) + + +We currently use a multi-project maven build system, which can be a little fragile. If you are ever having problems building we suggest you try the following in the root _activemq_ directory + +mvn clean +rm -rf ~/.m2/repository +mvn + +You may also want to [disable the unit tests](how-do-i-build-but-disable-the-unit-tests.html) + diff --git a/i-see-nc-client-ids-what-does-that-mean.md b/i-see-nc-client-ids-what-does-that-mean.md new file mode 100644 index 0000000..24febb0 --- /dev/null +++ b/i-see-nc-client-ids-what-does-that-mean.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- I see NC_ client-ids, what does that mean + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [I see NC_ client-ids, what does that mean](i-see-nc-client-ids-what-does-that-mean.html) + + +Durable subscription ClientIds and SubscriptionNames using the **NC** prefix are the result of durable subscriptions in a [Networks of Brokers](networks-of-brokers.html). +When a durable subscription is being forwarded by a network connector (or demand forwarding bridge), the network durable subscription needs to outlive the subscription that created it. This is achieved by using a well known name for the clientId and subscriptionName that can be easily be mapped to the original subscription. The prefix NC_, and NC-DS_ are used, where NC denotes Network Connector and DS denotes Durable Subscription. The prefix is combined with the local broker name and the target destination. + +The expectation is that the connectionId associated with these subscriptions can change on a reconnect, but the durable subsctiption remains. In this way, the durable subscription can continue to receive messages even if there is a network partition between the originating broker and the forwarding broker. + +On a restart, the NC durable subscriptions are activated by default, to ensure that no messages are lost. If lost messages are acceptable, it is possible to ensure that the NC durable sub is activated dynamically, when the original subscription is again activated on the remote broker and propagated to the network connector. The network connector configuration 'dynamicOnly' attribute is used to control this behavior. + +A NC durable subscription is only deleted when the original durable consumer is unsubscribed. + diff --git a/ideas.md b/ideas.md new file mode 100644 index 0000000..86a337a --- /dev/null +++ b/ideas.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- Ideas + +[Developers](developers.html) > [Ideas](ideas.html) + + +This page hosts various ideas and thoughts... + +* [RESTful Queue](restful-queue.html) + diff --git a/in-progress.md b/in-progress.md new file mode 100644 index 0000000..2749b83 --- /dev/null +++ b/in-progress.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- In Progress + +[Overview](overview.html) > [Download](download.html) > [In Progress](in-progress.html) + + +Releases In Progress +-------------------- + +The following releases are currently in progress + diff --git a/inbound-communication.md b/inbound-communication.md new file mode 100644 index 0000000..365a1ed --- /dev/null +++ b/inbound-communication.md @@ -0,0 +1,107 @@ +Apache ActiveMQ ™ -- Inbound Communication + +[Connectivity](connectivity.html) > [Containers](containers.html) > [JBoss Integration](jboss-integration.html) > [Inbound Communication](inbound-communication.html) + + +Configuring an MDB to receive messages from ActiveMQ +---------------------------------------------------- + +There are three MDBs declared in the [ejb-jar.xml](inbound-communication.data/ejb-jar.xml?version=3&modificationDate=1117021488000&api=v2) deployment descriptor. For this example, I will be explaining how to configure the `TopicDurableMDB` to be invoked by JBoss when a message is received on an ActiveMQ Topic. + +### The Bean + +In the [ejb-jar.xml](inbound-communication.data/ejb-jar.xml?version=3&modificationDate=1117021488000&api=v2) deployment descriptor, the `TopicDurableMDB` is declared as follows: + +**ejb-jar.xml** + + + + ... + TopicDurableMDB + com.panacya.platform.service.bus.mdb.SimpleMessageReceiverBean + javax.jms.MessageListener + ... + + + Destination + topic.testTopic + + + DestinationType + javax.jms.Topic + + ... + + ... + + +The `activation-config` element and it's child element, `activation-config-property`, are new elements for EJBs, so you might not be familiar with them. I won't go into to much detail about them, but it is important to understand that this is the first mechanism you use to link an MDB to a JCA. + +### The Connector + +The two `activation-config-properties` shown above link to the following elements in the [ra.xml](http://activemq.codehaus.org/checkout/activemq/modules/ra/src/rar/META-INF/ra.xml) file, which is contained within the [activemq-ra-1.2.rar](jboss-integration.html) file: + +**ra.xml** + + + ... + + org.activemq.ra.ActiveMQActivationSpec + + Destination + + + DestinationType + + + ... + + +In the [ejb-jar.xml](inbound-communication.data/ejb-jar.xml?version=3&modificationDate=1117021488000&api=v2) file section shown above, the value of the `Destination` property is set to `topic.testTopic`. This value is the physical name of the ActiveMQ destination the `TopicDurableMDB` will be receiving messages from and not a JNDI name. In other words, the value of the `Destination` property has no meaning to JBoss. It is purely an ActiveMQ setting. + +### The Glue + +In JBoss, the thing which connects an inbound JMS destination to an MDB is a JBoss container. To use ActiveMQ as the inbound message source for the `TopicDurableMDB` we must configure a new JBoss container. We do this in the [jboss.xml](inbound-communication.data/jboss.xml?version=3&modificationDate=1117021488000&api=v2) file. + +Three things are needed in the [jboss.xml](inbound-communication.data/jboss.xml?version=3&modificationDate=1117021488000&api=v2) file in order to tie an MDB to a connector. They are: + +1. Configure a new `invoker-proxy-binding` that declares `JBossMessageEndpointFactory` as the `proxy-factory` +2. Configure a new MDB container which uses the new `invoker-proxy-binding` +3. Declare which MDBs should go into the new container + +This first snippet configures a new `invoker-proxy-binding`: + +**jboss.xml – invoker-proxy-binding** + + + activemq-message-driven-bean + default + org.jboss.ejb.plugins.inflow.JBossMessageEndpointFactory + ... + + +This second snippet configures a new MDB container which uses the `invoker-proxy-binding` configured above: + +**jboss.xml – container-configuration** + + + ActiveMQ Message Driven Bean + false + activemq-message-driven-bean + ... + + +This third snippet links the `TopicDurableMDB` to the [activemq-ra-1.2.rar](jboss-integration.html) connector and tells JBoss to put instances of `TopicDurableMDB` into the new MDB container declared above: + +**jboss.xml – TopicDurableMDB** + + + TopicDurableMDB + activemq-ra-1.2-SNAPSHOT.rar + ActiveMQ Message Driven Bean + + +The above examples highlight the key configuration settings needed to enable MDBs deployed in JBoss to process messages from an ActiveMQ destination. + +You can try the above example, plus a few more, by downloading the [activemq-jboss-test.zip](inbound-communication.data/activemq-jboss-test.zip?version=3&modificationDate=1117021355000&api=v2) file which contains the complete sample project. + diff --git a/index.md b/index.md new file mode 100644 index 0000000..e2474ad --- /dev/null +++ b/index.md @@ -0,0 +1,733 @@ +infra - Revision 1021837: /websites/production/activemq/content + +infra - Revision 1021837: /websites/production/activemq/content +--------------------------------------------------------------- + +* [..](../) +* [.htaccess](.htaccess) +* [2004/](2004/) +* [2005/](2005/) +* [2006/](2006/) +* [2007/](2007/) +* [2007-april.html](2007-april.html) +* [2008/](2008/) +* [2009/](2009/) +* [2010/](2010/) +* [2011/](2011/) +* [2012/](2012/) +* [2013/](2013/) +* [2014/](2014/) +* [2015/](2015/) +* [2016/](2016/) +* [2017/](2017/) +* [40-rc-1-guide.html](40-rc-1-guide.html) +* [5.7.0/](5.7.0/) +* [58-migration-guide.html](58-migration-guide.html) +* [59-migration-guide.html](59-migration-guide.html) +* [activation-spec-properties.html](activation-spec-properties.html) +* [active-groups.html](active-groups.html) +* [activemq-11-release.html](activemq-11-release.html) +* [activemq-12-release.html](activemq-12-release.html) +* [activemq-13-release.html](activemq-13-release.html) +* [activemq-14-release.html](activemq-14-release.html) +* [activemq-15-release.html](activemq-15-release.html) +* [activemq-20-release.html](activemq-20-release.html) +* [activemq-21-release.html](activemq-21-release.html) +* [activemq-3-networks-of-brokers.html](activemq-3-networks-of-brokers.html) +* [activemq-3-transport-configurations.html](activemq-3-transport-configurations.html) +* [activemq-30-release.html](activemq-30-release.html) +* [activemq-31-release.html](activemq-31-release.html) +* [activemq-32-release.html](activemq-32-release.html) +* [activemq-321-release.html](activemq-321-release.html) +* [activemq-322-release.html](activemq-322-release.html) +* [activemq-4-connection-uris.html](activemq-4-connection-uris.html) +* [activemq-40-m4-release.html](activemq-40-m4-release.html) +* [activemq-40-rc2-release.html](activemq-40-rc2-release.html) +* [activemq-40-release.data/](activemq-40-release.data/) +* [activemq-40-release.html](activemq-40-release.html) +* [activemq-401-release.html](activemq-401-release.html) +* [activemq-402-release.html](activemq-402-release.html) +* [activemq-410-release.data/](activemq-410-release.data/) +* [activemq-410-release.html](activemq-410-release.html) +* [activemq-411-release.html](activemq-411-release.html) +* [activemq-412-release.html](activemq-412-release.html) +* [activemq-500-release.data/](activemq-500-release.data/) +* [activemq-500-release.html](activemq-500-release.html) +* [activemq-510-release.html](activemq-510-release.html) +* [activemq-5100-release.html](activemq-5100-release.html) +* [activemq-5101-release.html](activemq-5101-release.html) +* [activemq-5102-release.html](activemq-5102-release.html) +* [activemq-5110-release.html](activemq-5110-release.html) +* [activemq-5111-release.html](activemq-5111-release.html) +* [activemq-5112-release.html](activemq-5112-release.html) +* [activemq-5113-release.html](activemq-5113-release.html) +* [activemq-5120-release.html](activemq-5120-release.html) +* [activemq-5121-release.html](activemq-5121-release.html) +* [activemq-5122-release.html](activemq-5122-release.html) +* [activemq-5130-release.html](activemq-5130-release.html) +* [activemq-5131-release.html](activemq-5131-release.html) +* [activemq-5132-release.html](activemq-5132-release.html) +* [activemq-5133-release.html](activemq-5133-release.html) +* [activemq-5134-release.html](activemq-5134-release.html) +* [activemq-5140-release.html](activemq-5140-release.html) +* [activemq-5141-release.html](activemq-5141-release.html) +* [activemq-5142-release.html](activemq-5142-release.html) +* [activemq-5143-release.html](activemq-5143-release.html) +* [activemq-5144-release.html](activemq-5144-release.html) +* [activemq-5145-release.html](activemq-5145-release.html) +* [activemq-5150-release.html](activemq-5150-release.html) +* [activemq-5151-release.html](activemq-5151-release.html) +* [activemq-5152-release.html](activemq-5152-release.html) +* [activemq-520-release.html](activemq-520-release.html) +* [activemq-530-release.html](activemq-530-release.html) +* [activemq-531-release.html](activemq-531-release.html) +* [activemq-532-release.html](activemq-532-release.html) +* [activemq-540-release.html](activemq-540-release.html) +* [activemq-541-release.html](activemq-541-release.html) +* [activemq-542-release.html](activemq-542-release.html) +* [activemq-543-release.html](activemq-543-release.html) +* [activemq-550-release.html](activemq-550-release.html) +* [activemq-551-release.html](activemq-551-release.html) +* [activemq-560-release.html](activemq-560-release.html) +* [activemq-570-release.html](activemq-570-release.html) +* [activemq-580-release.html](activemq-580-release.html) +* [activemq-590-release.html](activemq-590-release.html) +* [activemq-591-release.html](activemq-591-release.html) +* [activemq-artemis-roadmap.html](activemq-artemis-roadmap.html) +* [activemq-c-clients.html](activemq-c-clients.html) +* [activemq-c-development.html](activemq-c-development.html) +* [activemq-command-line-tools-reference.html](activemq-command-line-tools-reference.html) +* [activemq-connection-uris.html](activemq-connection-uris.html) +* [activemq-inactivitymonitor.html](activemq-inactivitymonitor.html) +* [activemq-message-properties.html](activemq-message-properties.html) +* [activemq-performance-module-users-manual.html](activemq-performance-module-users-manual.html) +* [activemq-pmc-templates.html](activemq-pmc-templates.html) +* [activemq-real-time.html](activemq-real-time.html) +* [activemq6.html](activemq6.html) +* [activemqdtd.html](activemqdtd.html) +* [activesoap.html](activesoap.html) +* [activespace.html](activespace.html) +* [advisory-message.html](advisory-message.html) +* [advisory-support-in-activemq-3.html](advisory-support-in-activemq-3.html) +* [ajax.html](ajax.html) +* [all-forums.html](all-forums.html) +* [amq-message-store.data/](amq-message-store.data/) +* [amq-message-store.html](amq-message-store.html) +* [amqp.html](amqp.html) +* [apache-activemq-board-report-200708-august.html](apache-activemq-board-report-200708-august.html) +* [apache-activemq-board-report-200710-october.html](apache-activemq-board-report-200710-october.html) +* [apache-activemq-board-report-200801-january.html](apache-activemq-board-report-200801-january.html) +* [apache-activemq-board-report-200807-july.html](apache-activemq-board-report-200807-july.html) +* [apache-activemq-board-report-200810-october.html](apache-activemq-board-report-200810-october.html) +* [apache-activemq-board-report-200901-january.html](apache-activemq-board-report-200901-january.html) +* [apache-activemq-board-report-200904-april.html](apache-activemq-board-report-200904-april.html) +* [apache-activemq-board-report-200907-july.html](apache-activemq-board-report-200907-july.html) +* [apache-activemq-board-report-200910-october.html](apache-activemq-board-report-200910-october.html) +* [apache-activemq-board-report-201001-january.html](apache-activemq-board-report-201001-january.html) +* [apache-activemq-board-report-201005-may.html](apache-activemq-board-report-201005-may.html) +* [apache-activemq-board-report-201007-july.html](apache-activemq-board-report-201007-july.html) +* [apache-activemq-board-report-201010-october.html](apache-activemq-board-report-201010-october.html) +* [apache-activemq-board-report-201101-january.html](apache-activemq-board-report-201101-january.html) +* [apache-activemq-board-report-201104-april.html](apache-activemq-board-report-201104-april.html) +* [apache-activemq-board-report-201107-july.html](apache-activemq-board-report-201107-july.html) +* [apache-activemq-board-report-201110-october.html](apache-activemq-board-report-201110-october.html) +* [apache-activemq-board-report-201201-january.html](apache-activemq-board-report-201201-january.html) +* [apache-activemq-board-report-201204-april.html](apache-activemq-board-report-201204-april.html) +* [apache-activemq-board-report-201207-july.html](apache-activemq-board-report-201207-july.html) +* [apache-activemq-board-report-201210-october.html](apache-activemq-board-report-201210-october.html) +* [apache-activemq-board-report-201301-january.html](apache-activemq-board-report-201301-january.html) +* [apache-activemq-board-report-201304-april.html](apache-activemq-board-report-201304-april.html) +* [apache-activemq-board-report-201307-july.html](apache-activemq-board-report-201307-july.html) +* [apache-activemq-board-report-201310-october.html](apache-activemq-board-report-201310-october.html) +* [apache-activemq-board-report-201401-january.html](apache-activemq-board-report-201401-january.html) +* [apache-activemq-board-report-201404-april.html](apache-activemq-board-report-201404-april.html) +* [apache-activemq-board-report-201407-july.html](apache-activemq-board-report-201407-july.html) +* [apache-activemq-board-report-201410-october.html](apache-activemq-board-report-201410-october.html) +* [apache-activemq-board-report-201502-february.html](apache-activemq-board-report-201502-february.html) +* [apache-activemq-board-report-201504-april.html](apache-activemq-board-report-201504-april.html) +* [apache-activemq-board-report-201505-may.html](apache-activemq-board-report-201505-may.html) +* [apache-activemq-board-report-201506-june.html](apache-activemq-board-report-201506-june.html) +* [apache-activemq-board-report-201507-july.html](apache-activemq-board-report-201507-july.html) +* [apache-activemq-board-report-201508-august.html](apache-activemq-board-report-201508-august.html) +* [apache-activemq-board-report-201510-october.html](apache-activemq-board-report-201510-october.html) +* [apache-activemq-board-report-2016-05-may.html](apache-activemq-board-report-2016-05-may.html) +* [apache-activemq-board-report-201602-february.html](apache-activemq-board-report-201602-february.html) +* [apache-activemq-board-report-201604-april.html](apache-activemq-board-report-201604-april.html) +* [apache-activemq-board-report-201605-may.html](apache-activemq-board-report-201605-may.html) +* [apache-activemq-board-report-201607-july.html](apache-activemq-board-report-201607-july.html) +* [apache-activemq-board-report-20161-january.html](apache-activemq-board-report-20161-january.html) +* [apache-activemq-board-report-201610-october.html](apache-activemq-board-report-201610-october.html) +* [apache-activemq-board-report-20162-february.html](apache-activemq-board-report-20162-february.html) +* [apache-activemq-board-report-201701-january.html](apache-activemq-board-report-201701-january.html) +* [apache-activemq-board-report-201704-april.html](apache-activemq-board-report-201704-april.html) +* [apache-activemq-board-report-201707-july.html](apache-activemq-board-report-201707-july.html) +* [apache-activemq-board-report-201710-october.html](apache-activemq-board-report-201710-october.html) +* [apache-activemq-board-report-april-2008.html](apache-activemq-board-report-april-2008.html) +* [apache-activemq-board-report-april-2009.html](apache-activemq-board-report-april-2009.html) +* [apache-activemq-board-report-april-2011.html](apache-activemq-board-report-april-2011.html) +* [apache-activemq-board-report-april-2012.html](apache-activemq-board-report-april-2012.html) +* [apache-activemq-board-report-april-2013.html](apache-activemq-board-report-april-2013.html) +* [apache-activemq-board-report-april-2014.html](apache-activemq-board-report-april-2014.html) +* [apache-activemq-board-report-august-2007.html](apache-activemq-board-report-august-2007.html) +* [apache-activemq-board-report-february-2015.html](apache-activemq-board-report-february-2015.html) +* [apache-activemq-board-report-january-2008.html](apache-activemq-board-report-january-2008.html) +* [apache-activemq-board-report-january-2009.html](apache-activemq-board-report-january-2009.html) +* [apache-activemq-board-report-january-2010.html](apache-activemq-board-report-january-2010.html) +* [apache-activemq-board-report-january-2011.html](apache-activemq-board-report-january-2011.html) +* [apache-activemq-board-report-january-2012.html](apache-activemq-board-report-january-2012.html) +* [apache-activemq-board-report-january-2013.html](apache-activemq-board-report-january-2013.html) +* [apache-activemq-board-report-january-2014.html](apache-activemq-board-report-january-2014.html) +* [apache-activemq-board-report-july-2008.html](apache-activemq-board-report-july-2008.html) +* [apache-activemq-board-report-july-2009.html](apache-activemq-board-report-july-2009.html) +* [apache-activemq-board-report-july-2010.html](apache-activemq-board-report-july-2010.html) +* [apache-activemq-board-report-july-2011.html](apache-activemq-board-report-july-2011.html) +* [apache-activemq-board-report-july-2012.html](apache-activemq-board-report-july-2012.html) +* [apache-activemq-board-report-july-2013.html](apache-activemq-board-report-july-2013.html) +* [apache-activemq-board-report-july-2014.html](apache-activemq-board-report-july-2014.html) +* [apache-activemq-board-report-may-2010.html](apache-activemq-board-report-may-2010.html) +* [apache-activemq-board-report-october-2007.html](apache-activemq-board-report-october-2007.html) +* [apache-activemq-board-report-october-2008.html](apache-activemq-board-report-october-2008.html) +* [apache-activemq-board-report-october-2009.html](apache-activemq-board-report-october-2009.html) +* [apache-activemq-board-report-october-2010.html](apache-activemq-board-report-october-2010.html) +* [apache-activemq-board-report-october-2011.html](apache-activemq-board-report-october-2011.html) +* [apache-activemq-board-report-october-2012.html](apache-activemq-board-report-october-2012.html) +* [apache-activemq-board-report-october-2013.html](apache-activemq-board-report-october-2013.html) +* [apache-activemq-board-report-october-2014.html](apache-activemq-board-report-october-2014.html) +* [apache-activemq-board-reports.html](apache-activemq-board-reports.html) +* [apollo/](apollo/) +* [are-destinations-case-sensitive.html](are-destinations-case-sensitive.html) +* [are-messages-read-directly-from-the-journal.html](are-messages-read-directly-from-the-journal.html) +* [artemis/](artemis/) +* [articles.html](articles.html) +* [async-sends.html](async-sends.html) +* [audit-logging.html](audit-logging.html) +* [auto.html](auto.html) +* [axis-and-cxf-support.html](axis-and-cxf-support.html) +* [banner.html](banner.html) +* [becoming-a-committer.data/](becoming-a-committer.data/) +* [becoming-a-committer.html](becoming-a-committer.html) +* [benchmark-tests.html](benchmark-tests.html) +* [blazeds.html](blazeds.html) +* [blob-messages.html](blob-messages.html) +* [board-reports.html](board-reports.html) +* [books.html](books.html) +* [broadcasting.html](broadcasting.html) +* [broker-camel-component.html](broker-camel-component.html) +* [broker-configuration-uri.html](broker-configuration-uri.html) +* [broker-properties-uri.html](broker-properties-uri.html) +* [broker-uri.html](broker-uri.html) +* [broker-xbean-uri.html](broker-xbean-uri.html) +* [building-activemq-cpp.html](building-activemq-cpp.html) +* [building.html](building.html) +* [c-integration-scenarios.html](c-integration-scenarios.html) +* [c-integration.html](c-integration.html) +* [cache/](cache/) +* [cached-ldap-authorization-module.html](cached-ldap-authorization-module.html) +* [can-i-get-commercial-support.html](can-i-get-commercial-support.html) +* [can-i-modify-messages-on-a-queue.html](can-i-modify-messages-on-a-queue.html) +* [can-i-send-and-receive-messages-concurrently-on-one-jms-connection.html](can-i-send-and-receive-messages-concurrently-on-one-jms-connection.html) +* [can-i-send-really-large-files-over-activemq.html](can-i-send-really-large-files-over-activemq.html) +* [can-i-use-activemq-5x-or-later-on-java-14.html](can-i-use-activemq-5x-or-later-on-java-14.html) +* [can-two-brokers-share-the-same-database.html](can-two-brokers-share-the-same-database.html) +* [can-you-browse-a-topic.html](can-you-browse-a-topic.html) +* [certificateunknown.html](certificateunknown.html) +* [changes-in-40.html](changes-in-40.html) +* [class-diagrams-for-activemq-40-m4-source-code.data/](class-diagrams-for-activemq-40-m4-source-code.data/) +* [class-diagrams-for-activemq-40-m4-source-code.html](class-diagrams-for-activemq-40-m4-source-code.html) +* [clustering.data/](clustering.data/) +* [clustering.html](clustering.html) +* [cms/](cms/) +* [code-overview.html](code-overview.html) +* [command-agent.data/](command-agent.data/) +* [command-agent.html](command-agent.html) +* [community.html](community.html) +* [compile-activemq-with-gcj.html](compile-activemq-with-gcj.html) +* [complex-single-broker-configuration-stomp-only.html](complex-single-broker-configuration-stomp-only.html) +* [composite-destinations.html](composite-destinations.html) +* [config/](config/) +* [configurable-ioexception-handling.html](configurable-ioexception-handling.html) +* [configuration.html](configuration.html) +* [configure-startup-destinations.html](configure-startup-destinations.html) +* [configure-version-5-brokers.html](configure-version-5-brokers.html) +* [configuring-activemq-cpp.html](configuring-activemq-cpp.html) +* [configuring-brokers.data/](configuring-brokers.data/) +* [configuring-brokers.html](configuring-brokers.html) +* [configuring-transports.html](configuring-transports.html) +* [configuring-version-5-transports.html](configuring-version-5-transports.html) +* [configuring-wire-formats.html](configuring-wire-formats.html) +* [connection-configuration-uri.html](connection-configuration-uri.html) +* [connection-factory-properties.html](connection-factory-properties.html) +* [connectivity.html](connectivity.html) +* [consumer-dispatch-async.html](consumer-dispatch-async.html) +* [consumer-features.html](consumer-features.html) +* [consumer-priority.html](consumer-priority.html) +* [containers.html](containers.html) +* [contributing.html](contributing.html) +* [copy-of-apache-activemq-board-report-201604-april.html](copy-of-apache-activemq-board-report-201604-april.html) +* [could-not-find-packetreader-for-packet-type-unknown-packet-type.html](could-not-find-packetreader-for-packet-type-unknown-packet-type.html) +* [cross-language-clients.html](cross-language-clients.html) +* [cvs.html](cvs.html) +* [delay-and-schedule-message-delivery.html](delay-and-schedule-message-delivery.html) +* [delete-inactive-destinations.html](delete-inactive-destinations.html) +* [delphi-and-freepascal.html](delphi-and-freepascal.html) +* [design-documents.html](design-documents.html) +* [destination-features.html](destination-features.html) +* [destination-options.html](destination-options.html) +* [destinations-plugin.html](destinations-plugin.html) +* [developer-forum.html](developer-forum.html) +* [developer-guide.html](developer-guide.html) +* [developers.html](developers.html) +* [developing-activemq.html](developing-activemq.html) +* [developing-plugins.html](developing-plugins.html) +* [discovery-transport-reference.html](discovery-transport-reference.html) +* [discovery.html](discovery.html) +* [discussion-forums.html](discussion-forums.html) +* [dispatch-policies.html](dispatch-policies.html) +* [does-activemq-support-clustering.html](does-activemq-support-clustering.html) +* [does-activemq-support-my-sql-database.html](does-activemq-support-my-sql-database.html) +* [download-archives.html](download-archives.html) +* [download.html](download.html) +* [downloading-activemq-cpp.html](downloading-activemq-cpp.html) +* [dr.html](dr.html) +* [durable-queue-memory-management.html](durable-queue-memory-management.html) +* [encrypted-passwords.html](encrypted-passwords.html) +* [enterprise-integration-patterns.html](enterprise-integration-patterns.html) +* [errors.html](errors.html) +* [example-testing-scenario.html](example-testing-scenario.html) +* [examples.html](examples.html) +* [exceptions.html](exceptions.html) +* [exclusive-consumer.html](exclusive-consumer.html) +* [failover-transport-reference.data/](failover-transport-reference.data/) +* [failover-transport-reference.html](failover-transport-reference.html) +* [fanout-transport-reference.html](fanout-transport-reference.html) +* [faq.html](faq.html) +* [features-overview.html](features-overview.html) +* [features.html](features.html) +* [general.html](general.html) +* [geronimo.html](geronimo.html) +* [getting-started-3x.html](getting-started-3x.html) +* [getting-started.html](getting-started.html) +* [gettingstarted3x.html](gettingstarted3x.html) +* [group-membership.html](group-membership.html) +* [ha.html](ha.html) +* [hello-world.html](hello-world.html) +* [hermes-jms.html](hermes-jms.html) +* [hermes-screenshot.html](hermes-screenshot.html) +* [horizontal-scaling.html](horizontal-scaling.html) +* [how-can-i-add-a-new-type-of-transport.html](how-can-i-add-a-new-type-of-transport.html) +* [how-can-i-avoid-serialization-of-objects-in-objectmessage.html](how-can-i-avoid-serialization-of-objects-in-objectmessage.html) +* [how-can-i-contribute.html](how-can-i-contribute.html) +* [how-can-i-enable-detailed-logging.html](how-can-i-enable-detailed-logging.html) +* [how-can-i-get-a-list-of-the-topics-and-queues-in-a-broker.html](how-can-i-get-a-list-of-the-topics-and-queues-in-a-broker.html) +* [how-can-i-get-help.html](how-can-i-get-help.html) +* [how-can-i-get-the-source-code-from-subversion.html](how-can-i-get-the-source-code-from-subversion.html) +* [how-can-i-make-activemq-faster.html](how-can-i-make-activemq-faster.html) +* [how-can-i-monitor-activemq.data/](how-can-i-monitor-activemq.data/) +* [how-can-i-monitor-activemq.html](how-can-i-monitor-activemq.html) +* [how-can-i-monitor-the-connection-with-the-broker.html](how-can-i-monitor-the-connection-with-the-broker.html) +* [how-can-i-see-what-destinations-are-used.html](how-can-i-see-what-destinations-are-used.html) +* [how-can-i-support-auto-reconnection.html](how-can-i-support-auto-reconnection.html) +* [how-can-i-support-priority-queues.html](how-can-i-support-priority-queues.html) +* [how-can-i-use-different-network-protocols.html](how-can-i-use-different-network-protocols.html) +* [how-do-distributed-queues-work.html](how-do-distributed-queues-work.html) +* [how-do-durable-queues-and-topics-work.html](how-do-durable-queues-and-topics-work.html) +* [how-do-i-access-activemq-from-c.html](how-do-i-access-activemq-from-c.html) +* [how-do-i-access-activemq-from-csharp-or-dotnet.html](how-do-i-access-activemq-from-csharp-or-dotnet.html) +* [how-do-i-access-activemq-from-ruby-perl-python-php.html](how-do-i-access-activemq-from-ruby-perl-python-php.html) +* [how-do-i-add-my-own-plugins.html](how-do-i-add-my-own-plugins.html) +* [how-do-i-avoid-maven-downloading-latest-jars.html](how-do-i-avoid-maven-downloading-latest-jars.html) +* [how-do-i-back-up-kahadb.html](how-do-i-back-up-kahadb.html) +* [how-do-i-bridge-different-jms-providers.html](how-do-i-bridge-different-jms-providers.html) +* [how-do-i-build-but-disable-the-unit-tests.html](how-do-i-build-but-disable-the-unit-tests.html) +* [how-do-i-change-dispatch-policy.html](how-do-i-change-dispatch-policy.html) +* [how-do-i-change-the-logging.data/](how-do-i-change-the-logging.data/) +* [how-do-i-change-the-logging.html](how-do-i-change-the-logging.html) +* [how-do-i-change-the-message-store-directory-for-an-embedded-broker.html](how-do-i-change-the-message-store-directory-for-an-embedded-broker.html) +* [how-do-i-compile-from-the-source.html](how-do-i-compile-from-the-source.html) +* [how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.html](how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.html) +* [how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker.html](how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker.html) +* [how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages-.html](how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages-.html) +* [how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages.html](how-do-i-configure-activemq-to-hold-100s-of-millions-of-queue-messages.html) +* [how-do-i-configure-activemq-to-use-aio-server-transport.html](how-do-i-configure-activemq-to-use-aio-server-transport.html) +* [how-do-i-configure-automatic-reconnection.html](how-do-i-configure-automatic-reconnection.html) +* [how-do-i-configure-distributed-queues-or-topics.html](how-do-i-configure-distributed-queues-or-topics.html) +* [how-do-i-configure-the-queues-i-want.html](how-do-i-configure-the-queues-i-want.html) +* [how-do-i-connect-to-one-of-a-number-of-message-brokers.html](how-do-i-connect-to-one-of-a-number-of-message-brokers.html) +* [how-do-i-consume-a-specific-message.html](how-do-i-consume-a-specific-message.html) +* [how-do-i-create-new-destinations.html](how-do-i-create-new-destinations.html) +* [how-do-i-debug-activemq-from-my-ide.html](how-do-i-debug-activemq-from-my-ide.html) +* [how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl.html](how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl.html) +* [how-do-i-delete-a-destination.html](how-do-i-delete-a-destination.html) +* [how-do-i-disable-logging.html](how-do-i-disable-logging.html) +* [how-do-i-disable-persistence.html](how-do-i-disable-persistence.html) +* [how-do-i-edit-the-website.html](how-do-i-edit-the-website.html) +* [how-do-i-embed-a-broker-inside-a-connection.html](how-do-i-embed-a-broker-inside-a-connection.html) +* [how-do-i-enable-asynchronous-sending.html](how-do-i-enable-asynchronous-sending.html) +* [how-do-i-enable-debug-logging.html](how-do-i-enable-debug-logging.html) +* [how-do-i-find-the-size-of-a-queue.html](how-do-i-find-the-size-of-a-queue.html) +* [how-do-i-get-started-with-jms.html](how-do-i-get-started-with-jms.html) +* [how-do-i-make-messages-durable.html](how-do-i-make-messages-durable.html) +* [how-do-i-preserve-order-of-messages.html](how-do-i-preserve-order-of-messages.html) +* [how-do-i-purge-a-queue.html](how-do-i-purge-a-queue.html) +* [how-do-i-restart-embedded-broker.html](how-do-i-restart-embedded-broker.html) +* [how-do-i-restrict-connections-from-creating-new-queues-or-topics.html](how-do-i-restrict-connections-from-creating-new-queues-or-topics.html) +* [how-do-i-run-a-broker.html](how-do-i-run-a-broker.html) +* [how-do-i-run-activemq-under-the-kaffe-jvm.html](how-do-i-run-activemq-under-the-kaffe-jvm.html) +* [how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.html](how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.html) +* [how-do-i-set-the-message-expiration.html](how-do-i-set-the-message-expiration.html) +* [how-do-i-turn-off-creating-an-embedded-activemq-broker-when-using-the-vm-transport.html](how-do-i-turn-off-creating-an-embedded-activemq-broker-when-using-the-vm-transport.html) +* [how-do-i-unack-the-message-with-stomp.html](how-do-i-unack-the-message-with-stomp.html) +* [how-do-i-use-activemq-using-in-jvm-messaging.html](how-do-i-use-activemq-using-in-jvm-messaging.html) +* [how-do-i-use-durable-subscribers-in-a-network-of-brokers.html](how-do-i-use-durable-subscribers-in-a-network-of-brokers.html) +* [how-do-i-use-ivy-with-activemq.html](how-do-i-use-ivy-with-activemq.html) +* [how-do-i-use-jms-efficiently.html](how-do-i-use-jms-efficiently.html) +* [how-do-i-use-log4j-jms-appender-with-activemq.html](how-do-i-use-log4j-jms-appender-with-activemq.html) +* [how-do-i-use-ssl.html](how-do-i-use-ssl.html) +* [how-do-message-groups-compare-to-selectors.html](how-do-message-groups-compare-to-selectors.html) +* [how-do-multiple-transports-work.html](how-do-multiple-transports-work.html) +* [how-do-transactions-work.html](how-do-transactions-work.html) +* [how-does-a-queue-compare-to-a-topic.html](how-does-a-queue-compare-to-a-topic.html) +* [how-does-activemq-compare-to-amqp.html](how-does-activemq-compare-to-amqp.html) +* [how-does-activemq-compare-to-artemis.html](how-does-activemq-compare-to-artemis.html) +* [how-does-activemq-compare-to-fuse-message-broker.html](how-does-activemq-compare-to-fuse-message-broker.html) +* [how-does-activemq-compare-to-jbossmq.html](how-does-activemq-compare-to-jbossmq.html) +* [how-does-activemq-compare-to-mantaray.html](how-does-activemq-compare-to-mantaray.html) +* [how-does-activemq-compare-to-mule.html](how-does-activemq-compare-to-mule.html) +* [how-does-activemq-compare-to-spread-toolkit.html](how-does-activemq-compare-to-spread-toolkit.html) +* [how-does-connectionfactory-relate-to-the-broker.html](how-does-connectionfactory-relate-to-the-broker.html) +* [how-does-jms-compare-with-email.html](how-does-jms-compare-with-email.html) +* [how-does-journaling-work-with-multiple-brokers.html](how-does-journaling-work-with-multiple-brokers.html) +* [how-does-openwire-compare-to-stomp.html](how-does-openwire-compare-to-stomp.html) +* [how-does-the-journal-work.html](how-does-the-journal-work.html) +* [how-does-the-website-work.html](how-does-the-website-work.html) +* [how-does-xbean-compare-to-spring-2.html](how-does-xbean-compare-to-spring-2.html) +* [how-fast-is-activemq.html](how-fast-is-activemq.html) +* [how-lightweight-is-sending-a-message.html](how-lightweight-is-sending-a-message.html) +* [how-should-i-implement-request-response-with-jms.html](how-should-i-implement-request-response-with-jms.html) +* [how-should-i-package-applications-using-camel-and-activemq.html](how-should-i-package-applications-using-camel-and-activemq.html) +* [how-should-i-use-the-vm-transport.html](how-should-i-use-the-vm-transport.html) +* [how-to-become-a-committer-on-the-activemq-project.html](how-to-become-a-committer-on-the-activemq-project.html) +* [how-to-configure-a-new-database.html](how-to-configure-a-new-database.html) +* [how-to-deal-with-large-number-of-threads-in-clients.html](how-to-deal-with-large-number-of-threads-in-clients.html) +* [how-to-deploy-activemq-ra-versionrar-to-weblogic.html](how-to-deploy-activemq-ra-versionrar-to-weblogic.html) +* [how-to-disable-auto-destination-creation.html](how-to-disable-auto-destination-creation.html) +* [how-to-disable-multicast-discovery.html](how-to-disable-multicast-discovery.html) +* [how-to-unit-test-jms-code.html](how-to-unit-test-jms-code.html) +* [how-you-can-help-release.html](how-you-can-help-release.html) +* [http-and-https-transports-reference.html](http-and-https-transports-reference.html) +* [i-am-having-problems-with-the-spring-jmstemplate.html](i-am-having-problems-with-the-spring-jmstemplate.html) +* [i-am-not-receiving-any-messages-what-is-wrong.html](i-am-not-receiving-any-messages-what-is-wrong.html) +* [i-cannot-connect-to-activemq-from-jconsole.html](i-cannot-connect-to-activemq-from-jconsole.html) +* [i-do-not-receive-messages-in-my-second-consumer.html](i-do-not-receive-messages-in-my-second-consumer.html) +* [i-get-errors-building-the-code-whats-wrong.html](i-get-errors-building-the-code-whats-wrong.html) +* [i-see-nc-client-ids-what-does-that-mean.html](i-see-nc-client-ids-what-does-that-mean.html) +* [ideas.html](ideas.html) +* [images/](images/) +* [in-progress.html](in-progress.html) +* [inbound-communication.html](inbound-communication.html) +* [index.data/](index.data/) +* [index.html](index.html) +* [initial-configuration.html](initial-configuration.html) +* [installation.html](installation.html) +* [integrating-apache-activemq-with-glassfish.html](integrating-apache-activemq-with-glassfish.html) +* [integrating-apache-activemq-with-jboss.data/](integrating-apache-activemq-with-jboss.data/) +* [integrating-apache-activemq-with-jboss.html](integrating-apache-activemq-with-jboss.html) +* [integration-tests.html](integration-tests.html) +* [interceptors.html](interceptors.html) +* [ioexception-could-not-find-class-for-resource.html](ioexception-could-not-find-class-for-resource.html) +* [irc.html](irc.html) +* [is-there-a-specified-size-of-the-journal.html](is-there-a-specified-size-of-the-journal.html) +* [j2ee.html](j2ee.html) +* [java-service-wrapper.html](java-service-wrapper.html) +* [javadocs.html](javadocs.html) +* [javaiointerruptedioexception.html](javaiointerruptedioexception.html) +* [javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.html](javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.html) +* [javalangnosuchmethoderror.html](javalangnosuchmethoderror.html) +* [javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.html](javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.html) +* [javalangoutofmemory.html](javalangoutofmemory.html) +* [javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.html](javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.html) +* [jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.html](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.html) +* [jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.html](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.html) +* [jboss-integration.data/](jboss-integration.data/) +* [jboss-integration.html](jboss-integration.html) +* [jca-container.data/](jca-container.data/) +* [jca-container.html](jca-container.html) +* [jdbc-master-slave.data/](jdbc-master-slave.data/) +* [jdbc-master-slave.html](jdbc-master-slave.html) +* [jdbc-support.html](jdbc-support.html) +* [jmeter-performance-tests.html](jmeter-performance-tests.html) +* [jmeter-system-tests.html](jmeter-system-tests.html) +* [jms-and-jdbc-operations-in-one-transaction.html](jms-and-jdbc-operations-in-one-transaction.html) +* [jms-bridge-with-local-broker.html](jms-bridge-with-local-broker.html) +* [jms-bridge-with-oracle-aq.html](jms-bridge-with-oracle-aq.html) +* [jms-bridge-with-remote-broker.html](jms-bridge-with-remote-broker.html) +* [jms-bridge-with-remote-tibco-broker.html](jms-bridge-with-remote-tibco-broker.html) +* [jms-streams.html](jms-streams.html) +* [jms-to-jms-bridge.html](jms-to-jms-bridge.html) +* [jms.html](jms.html) +* [jmstemplate-gotchas.html](jmstemplate-gotchas.html) +* [jmsxuserid.html](jmsxuserid.html) +* [jmx-support.html](jmx-support.html) +* [jmx.data/](jmx.data/) +* [jmx.html](jmx.html) +* [jndi-support.html](jndi-support.html) +* [journal-is-already-opened-by-this-application.html](journal-is-already-opened-by-this-application.html) +* [junit-reports.html](junit-reports.html) +* [kaha-persistence.html](kaha-persistence.html) +* [kahadb-master-slave.html](kahadb-master-slave.html) +* [kahadb-replication-experimental.html](kahadb-replication-experimental.html) +* [kahadb.html](kahadb.html) +* [known-bad-os-and-jvm-combinations.html](known-bad-os-and-jvm-combinations.html) +* [latency.html](latency.html) +* [ldap-broker-discovery-mechanism.data/](ldap-broker-discovery-mechanism.data/) +* [ldap-broker-discovery-mechanism.html](ldap-broker-discovery-mechanism.html) +* [leftheader.html](leftheader.html) +* [leveldb-store.html](leveldb-store.html) +* [life-cycle.html](life-cycle.html) +* [load-testing-with-camel.html](load-testing-with-camel.html) +* [log4j-warn-no-appenders-could-be-found-for-logger.html](log4j-warn-no-appenders-could-be-found-for-logger.html) +* [logging-a-warning-if-you-forget-to-start-a-connection.html](logging-a-warning-if-you-forget-to-start-a-connection.html) +* [logging-interceptor.html](logging-interceptor.html) +* [mailing-lists.html](mailing-lists.html) +* [manage-durable-subscribers.html](manage-durable-subscribers.html) +* [masterslave.html](masterslave.html) +* [maven/](maven/) +* [maven-snapshot-repository-in-your-pom.html](maven-snapshot-repository-in-your-pom.html) +* [maven2-activemq-broker-plugin.html](maven2-activemq-broker-plugin.html) +* [mdc-logging.html](mdc-logging.html) +* [message-cursors.data/](message-cursors.data/) +* [message-cursors.html](message-cursors.html) +* [message-dispatching-features.html](message-dispatching-features.html) +* [message-features.html](message-features.html) +* [message-groups.html](message-groups.html) +* [message-redelivery-and-dlq-handling.html](message-redelivery-and-dlq-handling.html) +* [message-transformation.html](message-transformation.html) +* [mirrored-queues.html](mirrored-queues.html) +* [mom.html](mom.html) +* [monitoring-activemq.html](monitoring-activemq.html) +* [mqtt.html](mqtt.html) +* [multicast-transport-reference.html](multicast-transport-reference.html) +* [multicast-transport.html](multicast-transport.html) +* [multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.html](multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.html) +* [multiple-consumers-on-a-queue.html](multiple-consumers-on-a-queue.html) +* [my-producer-blocks.html](my-producer-blocks.html) +* [navigation.data/](navigation.data/) +* [navigation.html](navigation.html) +* [networks-of-brokers.html](networks-of-brokers.html) +* [new-features-in-41.html](new-features-in-41.html) +* [new-features-in-42.html](new-features-in-42.html) +* [new-features-in-50.html](new-features-in-50.html) +* [new-features-in-51.html](new-features-in-51.html) +* [new-features-in-511.html](new-features-in-511.html) +* [new-features-in-513.html](new-features-in-513.html) +* [new-features-in-52.html](new-features-in-52.html) +* [new-features-in-53.html](new-features-in-53.html) +* [new-features-in-54.html](new-features-in-54.html) +* [new-features-in-55.html](new-features-in-55.html) +* [new-features-in-56.html](new-features-in-56.html) +* [new-features-in-57.html](new-features-in-57.html) +* [new-features-in-58.html](new-features-in-58.html) +* [new-features-in-59.html](new-features-in-59.html) +* [new-features-in-60.html](new-features-in-60.html) +* [new-features.html](new-features.html) +* [news.html](news.html) +* [nio-transport-reference.html](nio-transport-reference.html) +* [nms/](nms/) +* [no-suitable-driver.html](no-suitable-driver.html) +* [noclassdeffounderror-orgspringframeworkcoreioresource.html](noclassdeffounderror-orgspringframeworkcoreioresource.html) +* [object-message.html](object-message.html) +* [objectmessage.html](objectmessage.html) +* [old-links.html](old-links.html) +* [old-osgi-integration.html](old-osgi-integration.html) +* [onmessage-method-of-messagelistener-is-never-called.html](onmessage-method-of-messagelistener-is-never-called.html) +* [openwire-c-client.html](openwire-c-client.html) +* [openwire-cpp-client.data/](openwire-cpp-client.data/) +* [openwire-cpp-client.html](openwire-cpp-client.html) +* [openwire-version-2-specification.html](openwire-version-2-specification.html) +* [openwire.html](openwire.html) +* [optimized-acknowledgement.html](optimized-acknowledgement.html) +* [osgi-integration.html](osgi-integration.html) +* [osgi-support-in-development.html](osgi-support-in-development.html) +* [outbound-communication.html](outbound-communication.html) +* [overview.html](overview.html) +* [peer-transport-reference.html](peer-transport-reference.html) +* [per-destination-policies.html](per-destination-policies.html) +* [performance-report.html](performance-report.html) +* [performance-tuning.html](performance-tuning.html) +* [performance.html](performance.html) +* [periodically-checking-disk-limits.html](periodically-checking-disk-limits.html) +* [persistence-questions.html](persistence-questions.html) +* [persistence.html](persistence.html) +* [pluggable-storage-lockers.html](pluggable-storage-lockers.html) +* [pmc-templates.html](pmc-templates.html) +* [point-to-point-with-multiple-consumers.html](point-to-point-with-multiple-consumers.html) +* [polo-page.data/](polo-page.data/) +* [polo-page.html](polo-page.html) +* [previous-versions.html](previous-versions.html) +* [privacy-policy.html](privacy-policy.html) +* [producer-flow-control.html](producer-flow-control.html) +* [projects-using-activemq.html](projects-using-activemq.html) +* [proposed-c-client-architecture.data/](proposed-c-client-architecture.data/) +* [proposed-c-client-architecture.html](proposed-c-client-architecture.html) +* [protocols.html](protocols.html) +* [pure-master-slave.html](pure-master-slave.html) +* [qos.html](qos.html) +* [quicklinks.html](quicklinks.html) +* [redelivery-policy.html](redelivery-policy.html) +* [release-guide.html](release-guide.html) +* [release-info.html](release-info.html) +* [release-plans.html](release-plans.html) +* [replicated-leveldb-store.data/](replicated-leveldb-store.data/) +* [replicated-leveldb-store.html](replicated-leveldb-store.html) +* [replicated-message-store.html](replicated-message-store.html) +* [resource-adapter-does-not-seem-to-pool-connections.html](resource-adapter-does-not-seem-to-pool-connections.html) +* [resource-adapter-properties.html](resource-adapter-properties.html) +* [resource-adapter.html](resource-adapter.html) +* [rest-protocols.html](rest-protocols.html) +* [rest.html](rest.html) +* [restful-queue.html](restful-queue.html) +* [retroactive-consumer.html](retroactive-consumer.html) +* [rightheader.html](rightheader.html) +* [rss-and-atom.html](rss-and-atom.html) +* [run-broker.html](run-broker.html) +* [running-a-3x-broker.html](running-a-3x-broker.html) +* [runtime-configuration.html](runtime-configuration.html) +* [sample-camel-routes.html](sample-camel-routes.html) +* [sample-report.html](sample-report.html) +* [sandbox.html](sandbox.html) +* [scaling-queues.html](scaling-queues.html) +* [scaling-the-depth-of-a-queue.html](scaling-the-depth-of-a-queue.html) +* [schema/](schema/) +* [schemas/](schemas/) +* [security-advisories.data/](security-advisories.data/) +* [security-advisories.html](security-advisories.html) +* [security.html](security.html) +* [seda.html](seda.html) +* [selectors.html](selectors.html) +* [setting-up-activemq-with-tomcat-559.html](setting-up-activemq-with-tomcat-559.html) +* [shared-file-system-master-slave.data/](shared-file-system-master-slave.data/) +* [shared-file-system-master-slave.html](shared-file-system-master-slave.html) +* [shiro.html](shiro.html) +* [should-i-deploy-enterprise-integration-patterns-in-the-broker-or-another-application.html](should-i-deploy-enterprise-integration-patterns-in-the-broker-or-another-application.html) +* [should-i-deploy-the-broker-inside-my-jvm-or-appserver.html](should-i-deploy-the-broker-inside-my-jvm-or-appserver.html) +* [should-i-run-activemq-on-windows-in-a-directory-with-spaces.html](should-i-run-activemq-on-windows-in-a-directory-with-spaces.html) +* [should-i-use-transactions.html](should-i-use-transactions.html) +* [should-i-use-xa.html](should-i-use-xa.html) +* [site.html](site.html) +* [siteindex.html](siteindex.html) +* [sitemap.html](sitemap.html) +* [sjsas-with-genericjmsra.html](sjsas-with-genericjmsra.html) +* [slow-consumer-handling.html](slow-consumer-handling.html) +* [slow-consumers.html](slow-consumers.html) +* [slow-networks-drop-large-messages.html](slow-networks-drop-large-messages.html) +* [source-xref.html](source-xref.html) +* [source.data/](source.data/) +* [source.html](source.html) +* [sponsorship.html](sponsorship.html) +* [spring-support.html](spring-support.html) +* [sqlserver.html](sqlserver.html) +* [ssl-transport-reference.html](ssl-transport-reference.html) +* [static-transport-reference.html](static-transport-reference.html) +* [statisticsplugin.html](statisticsplugin.html) +* [stomp.html](stomp.html) +* [stp.html](stp.html) +* [structured-message-properties-and-mapmessages.html](structured-message-properties-and-mapmessages.html) +* [styles/](styles/) +* [subscription-recovery-policy.html](subscription-recovery-policy.html) +* [sun-jndi.html](sun-jndi.html) +* [support.html](support.html) +* [supporting-io-streams.html](supporting-io-streams.html) +* [svn.html](svn.html) +* [sybase.html](sybase.html) +* [tcp-transport-reference.data/](tcp-transport-reference.data/) +* [tcp-transport-reference.html](tcp-transport-reference.html) +* [team.html](team.html) +* [terminology.html](terminology.html) +* [test-source-xref.html](test-source-xref.html) +* [thanks.data/](thanks.data/) +* [thanks.html](thanks.html) +* [the-activeblaze-message-type.html](the-activeblaze-message-type.html) +* [the-broker-will-not-start.html](the-broker-will-not-start.html) +* [the-jms-connector.html](the-jms-connector.html) +* [the-proxy-connector.html](the-proxy-connector.html) +* [the-vm-transport-starts-a-broker-before-my-configured-broker-starts.html](the-vm-transport-starts-a-broker-before-my-configured-broker-starts.html) +* [throughput.html](throughput.html) +* [timestampplugin.html](timestampplugin.html) +* [tips-for-getting-help.html](tips-for-getting-help.html) +* [tomcat.html](tomcat.html) +* [tomee.html](tomee.html) +* [tools.html](tools.html) +* [topologies.data/](topologies.data/) +* [topologies.html](topologies.html) +* [total-ordering.html](total-ordering.html) +* [udp-transport-reference.html](udp-transport-reference.html) +* [unix-service.html](unix-service.html) +* [unix-shell-script.html](unix-shell-script.html) +* [unix.html](unix.html) +* [uri-protocols.html](uri-protocols.html) +* [use-cases.html](use-cases.html) +* [user-forum.html](user-forum.html) +* [user-submitted-configurations.html](user-submitted-configurations.html) +* [users.html](users.html) +* [using-activemq-4.html](using-activemq-4.html) +* [using-activemq-5.html](using-activemq-5.html) +* [using-activemq-with-ejb3-jboss-example.html](using-activemq-with-ejb3-jboss-example.html) +* [using-activemq.html](using-activemq.html) +* [using-apache-activemq.html](using-apache-activemq.html) +* [verify-downloads.html](verify-downloads.html) +* [version-5-examples.html](version-5-examples.html) +* [version-5-getting-started.html](version-5-getting-started.html) +* [version-5-hello-world.html](version-5-hello-world.html) +* [version-5-initial-configuration.html](version-5-initial-configuration.html) +* [version-5-installation.html](version-5-installation.html) +* [version-5-performance-tuning.html](version-5-performance-tuning.html) +* [version-5-run-broker.html](version-5-run-broker.html) +* [version-5-topologies.html](version-5-topologies.html) +* [version-5-web-samples.html](version-5-web-samples.html) +* [version-5-xml-configuration.html](version-5-xml-configuration.html) +* [virtual-destinations.html](virtual-destinations.html) +* [visualisation-wish-list.html](visualisation-wish-list.html) +* [visualisation.data/](visualisation.data/) +* [visualisation.html](visualisation.html) +* [visualisation.thumbs/](visualisation.thumbs/) +* [vm-protocol.html](vm-protocol.html) +* [vm-transport-reference.html](vm-transport-reference.html) +* [web-console.data/](web-console.data/) +* [web-console.html](web-console.html) +* [web-console.thumbs/](web-console.thumbs/) +* [web-samples.html](web-samples.html) +* [weblogic-integration.data/](weblogic-integration.data/) +* [weblogic-integration.html](weblogic-integration.html) +* [websockets.html](websockets.html) +* [what-are-administered-objects.html](what-are-administered-objects.html) +* [what-are-those-topics-activemqadvisory.html](what-are-those-topics-activemqadvisory.html) +* [what-happens-when-the-journal-size-is-exceeded.html](what-happens-when-the-journal-size-is-exceeded.html) +* [what-happens-with-a-fast-producer-and-slow-consumer.html](what-happens-with-a-fast-producer-and-slow-consumer.html) +* [what-is-activemq.html](what-is-activemq.html) +* [what-is-the-difference-between-a-virtual-topic-and-a-composite-destination.html](what-is-the-difference-between-a-virtual-topic-and-a-composite-destination.html) +* [what-is-the-difference-between-discovery-multicast-and-zeroconf.html](what-is-the-difference-between-discovery-multicast-and-zeroconf.html) +* [what-is-the-difference-between-persistent-and-non-persistent-delivery.html](what-is-the-difference-between-persistent-and-non-persistent-delivery.html) +* [what-is-the-license.html](what-is-the-license.html) +* [what-is-the-prefetch-limit-for.html](what-is-the-prefetch-limit-for.html) +* [what-jars-do-i-need.html](what-jars-do-i-need.html) +* [what-open-source-integration-solution-works-best-with-activemq-.html](what-open-source-integration-solution-works-best-with-activemq-.html) +* [what-open-source-integration-solution-works-best-with-activemq.html](what-open-source-integration-solution-works-best-with-activemq.html) +* [what-platforms-does-activemq-support.html](what-platforms-does-activemq-support.html) +* [what-version-should-i-use.html](what-version-should-i-use.html) +* [while-posting-large-binary-file-to-activemq-is-there-a-way-to-measure-its-progress.html](while-posting-large-binary-file-to-activemq-is-there-a-way-to-measure-its-progress.html) +* [why-do-i-not-get-all-of-the-messages-i-sent.html](why-do-i-not-get-all-of-the-messages-i-sent.html) +* [why-do-i-not-receive-messages-on-my-durable-topic-subscription.html](why-do-i-not-receive-messages-on-my-durable-topic-subscription.html) +* [why-do-kahadb-log-files-remain-after-cleanup.html](why-do-kahadb-log-files-remain-after-cleanup.html) +* [wildcards.html](wildcards.html) +* [wire-protocol.html](wire-protocol.html) +* [ws-notification.html](ws-notification.html) +* [wsif.html](wsif.html) +* [xbean-xml-reference-41.html](xbean-xml-reference-41.html) +* [xbean-xml-reference-50.html](xbean-xml-reference-50.html) +* [xml-configuration.html](xml-configuration.html) +* [xml-reference.html](xml-reference.html) +* [xmpp.data/](xmpp.data/) +* [xmpp.html](xmpp.html) +* [zeroconf-transport-reference.html](zeroconf-transport-reference.html) +* [zeroconf.html](zeroconf.html) +* [zos.html](zos.html) \ No newline at end of file diff --git a/initial-configuration.md b/initial-configuration.md new file mode 100644 index 0000000..3c7d9e8 --- /dev/null +++ b/initial-configuration.md @@ -0,0 +1,89 @@ +Apache ActiveMQ ™ -- Initial Configuration + +[Using ActiveMQ](using-activemq.html) > [Initial Configuration](initial-configuration.html) + + +Initial Configuration +===================== + +Document Organization +--------------------- + +* [#Required JARs](initial-configuration.html) +* [#Optional JARS](initial-configuration.html) +* [#Persistence Support](initial-configuration.html) +* [#Next steps](initial-configuration.html) +* [#Additional Resources](initial-configuration.html) + * [#Related Reading](initial-configuration.html) + * [#Specifications](initial-configuration.html) + * [#Related open source projects](initial-configuration.html) + +Firstly you need to add the jars to your classpath. + +Required JARs +------------- + +To make ActiveMQ easy to use, the default **activemq-all.jar** comes complete with all the libraries required. If you prefer to have explicit control over all the jars used by ActiveMQ here is the full list of individual jars required + +* activemq-broker.jar +* activemq-client.jar +* activeio-core.jar +* activemq-kahadb-store.jar (if you wish to use persistence) +* slf4j-api.jar +* J2EE APIs which could be the j2ee.jar from Sun or your J2EE container or you could use Geronimo's freely distributable geronimo-spec-j2ee.jar. If you are inside a servlet container and being dependent on the j2ee.jar causes you troubles, the parts of the J2EE jar we are dependent on are as follows... + * geronimo-spec-jms.jar + * geronimo-spec-jta.jar + * geronimo-spec-j2ee-management.jar + +If you want to grab a J2EE specification jar we recommend the Apache [repository](https://dist.apache.org/repos/dist/release/geronimo/) + +Optional JARS +------------- + +* spring.jar - if you wish to use the XML configuration file for configuring the Message Broker + +* if you wish to use message persistence then you need to add a persistent jar to your classpath (see below). If you just want a lightweight message bus with no durability you can leave this step out but we highly recommend persistence for production deployments. + +Persistence Support +------------------- + +We support persistence via [Specialized KahaDB file system message store or JDBC](persistence.html). For full explict control over configuration check out the [Xml Configuration](xml-configuration.html). If you wish to use KahaDB, include kahadb.jar in your classpath. In case of JDBC you'll need to include appropriate database driver. + +If you're just doing some testing or in-VM SEDA based messaging you may wish to disable persistence. You can use the [Xml Configuration](xml-configuration.html) for this. + +In 5.x you can do this by setting the `persistent=false` property to false either in the [Xml Configuration](xml-configuration.html) or on the [broker URL](configuring-transports.html). + +Next steps +---------- + +One of the first things you might want to do is [start a broker](run-broker.html). Once you have a broker running you could try some [example programs](examples.html) + +If you want to write your own application, you can just instantiate an [ActiveMQConnectionFactory](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html), configure its properties directly and then you're ready to use the standard JMS API to create Connections, Sessions, MessageProducer and MessageConsumer instances. + +You can also take a look at our [unit tests](https://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/) for more examples on how to use ActiveMQ. + +Additional Resources +-------------------- + +### Related Reading + +* Sun's [JMS Tutorial](http://java.sun.com/products/jms/tutorial/) is a handy place to start looking at how to use the JMS API directly +* The ActiveMQ [Website](http://activemq.apache.org/) for specifics on how to use ActiveMQ +* [ActiveMQ Topologies](topologies.html) +* [ActiveMQ Clustering](clustering.html) +* [ActiveMQ Network of Brokers](networks-of-brokers.html) +* [Staged Event Driven Architecture (SEDA)](http://www.eecs.harvard.edu/~mdw/proj/seda/) + +### Specifications + +* [Java Connector Architecture 1.5](http://java.sun.com/j2ee/connector/) +* [Java Messaging Service](http://java.sun.com/products/jms/index.jsp) + +### Related open source projects + +* [Apache Camel](http://camel.apache.org) +* [Apache Geronimo](http://geronimo.apache.org/) +* [Hermes JMS](http://www.hermesjms.com/) +* [Stomp](http://stomp.github.com/) is an open wire protocol (similar to HTTP) for communicating with MOMs from different languages. It has clients for languages like C, C#, Python, Perl, Ruby etc. +* [XBean](http://xbean.org/) is used as the default XML configuration mechanism for ActiveMQ + diff --git a/installation.md b/installation.md new file mode 100644 index 0000000..310e062 --- /dev/null +++ b/installation.md @@ -0,0 +1,20 @@ +Apache ActiveMQ ™ -- Installation + +[Using ActiveMQ](using-activemq.html) > [Installation](installation.html) + + +* [Download](download.html) a binary distribution of ActiveMQ and unpack it into some directory. + +* To run an ActiveMQ broker, type the following commands from the directory in which you have just unpacked the ActiveMQ distribution. + +cd bin +activemq + +The ActiveMQ broker should now run. You can configure the broker by specifying an [Xml Configuration](xml-configuration.html) file as a parameter to the _activemq_ command. + +You can now run the [Examples](examples.html) using Ant. + +See the [getting started guide](initial-configuration.html) for details of which jars you need to add to your classpath to start using ActiveMQ in your Java code + +If you want to use JNDI to connect to your JMS provider then please view the [JNDI Support](jndi-support.html). If you are a Spring user you should read about [Spring Support](spring-support.html) + diff --git a/integrating-apache-activemq-with-glassfish.md b/integrating-apache-activemq-with-glassfish.md new file mode 100644 index 0000000..8d1f864 --- /dev/null +++ b/integrating-apache-activemq-with-glassfish.md @@ -0,0 +1,50 @@ +Apache ActiveMQ ™ -- Integrating Apache ActiveMQ with Glassfish + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Integrating Apache ActiveMQ with Glassfish](integrating-apache-activemq-with-glassfish.html) + + +General +======= + +See this article for a description of how to connect Glassfish 3 to an ActiveMQ 5 broker, and consume messages using a Message Driven Bean: [http://geertschuring.wordpress.com/2012/04/20/how-to-connect-glassfish-3-to-activemq-5/](http://geertschuring.wordpress.com/2012/04/20/how-to-connect-glassfish-3-to-activemq-5/) + +Glassfish 4.1 +============= + +1. Add resource adapter + 1. Download the resource-adapter file suitable to your broker version: + [http://repo1.maven.org/maven2/org/apache/activemq/activemq-rar/](http://repo1.maven.org/maven2/org/apache/activemq/activemq-rar/) + 2. Deploy the  resource adapter with the name "activemq-rar" + + bin/asadmin deploy --type rar --name activemq-rar /tmp/activemq-rar-5.11.1.rar + + 3. Configure resource adapter + (Failover Setup) + + bin/asadmin create-resource-adapter-config \ + --property ServerUrl='failover\\:(tcp\\://broker-c1.foobar.local\\:61616,tcp\\://broker-c2.foobar.local\\:61616,tcp\\://broker-c3.foobar.local\\:61616)?initialReconnectDelay\\=2000&jms.useCompression\\=true':UserName='admin':Password='admin' activemq-rar + +2.  Create connector connection pool + + bin/asadmin create-connector-connection-pool \ + --raname activemq-rar \ + --connectiondefinition javax.jms.ConnectionFactory \ + --ping true --isconnectvalidatereq true \ + jms/myConnectionPool + +3. Create a connector resource (JNDI-Mapping for connection pool) + + bin/asadmin create-connector-resource \ + --poolname jms/myConnectionPool \ + jms/myConnectionFactory + +4. Configure JNDI mapping for a queue + + bin/asadmin create-admin-object \ + --raname activemq-rar \ + --restype javax.jms.Queue \ + --property PhysicalName=MY.MAGIC.OUT \ + jms/queue/MY.MAGIC.OUT + +5. Deploy your message driven beans and use the configured jndi names + diff --git a/integrating-apache-activemq-with-jboss.md b/integrating-apache-activemq-with-jboss.md new file mode 100644 index 0000000..bd875a3 --- /dev/null +++ b/integrating-apache-activemq-with-jboss.md @@ -0,0 +1,724 @@ +Apache ActiveMQ ™ -- Integrating Apache ActiveMQ with JBoss + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Integrating Apache ActiveMQ with JBoss](integrating-apache-activemq-with-jboss.html) + + +Integrating Apache ActiveMQ with JBoss +====================================== + +Integration with application servers is a common scenario in the enterprise Java world, especially when it comes to messaging. [ActiveMQ](http://activemq.org/) is a JMS 1.1 compliant, open source, Apache Licensed, message oriented middleware (MOM) with [many](http://activemq.org/site/changes-in-40.html), [many](http://activemq.org/site/new-features-in-41.html) features far beyond the JMS specification. ActiveMQ offers many different [points of connectivity](http://activemq.org/site/connectivity.html), many [cross language clients](http://activemq.org/site/cross-language-clients.html) and many [pluggable transport protocols](http://activemq.org/site/protocols.html) including integration with any J2EE 1.4 application server. + +One of the application servers in the open source world is JBoss. A very common requirement is to configure ActiveMQ as the messaging infrastructure within JBoss. Although there is [a bit of documentation](http://www.activemq.org/site/jboss-integration.html) on this integration, this article seeks to provide much more detail and explanation. So if you have a need to integrate ActiveMQ with JBoss, this article is for you. + +This article explains how to configure JBoss to start up ActiveMQ as part of its lifecycle and how to configure the ActiveMQ resource adapter to handle the messaging and transactionality between ActiveMQ and JBoss. + +Requirements +------------ + +Below are the software requirements for this article with links to download each: + +* [Apache ActiveMQ 4.0.1+](http://activemq.org/site/download.html) +* [JBoss 4.0.4+](http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942&release_id=416591) +* [Sun Java 1.5+](http://www.java.com/en/download/index.jsp) +* [Apache Ant 1.6+](http://ant.apache.org/bindownload.cgi) + +Though this article is using Unix, the installation and integration will work on any platform running Sun Java. It is recommended that each piece of software be downloaded before working through the steps is this article. Once each piece of software has been downloaded, proceed to the first step. + +Install the J2SE 1.5 +-------------------- + +The first step in this process is to install Java 1.5 and verify that it runs correctly. Using the link above, find, download and install the correct version of Java for your platform. Once Java is installed and in the PATH, test it to see that it runs correctly using the following command: + +$ java -version +java version "1.5.0_06" +Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-112) +Java HotSpot(TM) Client VM (build 1.5.0_06-64, mixed mode, sharing) + +Depending upon your platform and the exact build number of Java 1.5, your output may vary slightly. As long as it's Java 1.5 and the version information is output, you should be ready to proceed to the next step. + +Install Apache Ant +------------------ + +The second step is to install Apache Ant. Simply download it using the link above, expand somewhere on your hard drive and place the `bin` directory in the PATH. This will allow you to test it quickly using the commands below: + +$ ant -version +Apache Ant version 1.6.2 compiled on July 16 2004 + +As long as you see the version output above, Ant should be usable. If you did not see the version output or received an error, consult the Ant documentation or mailing list archives to work out the issue. Please note that Ant is not used until the end of this whole exercise to test the integration. + +Install the JBoss Application Server +------------------------------------ + +The third step in this process is to install JBoss and make sure it runs correctly before installing and configuring ActiveMQ. Upon downloading JBoss-4.0.4, expand it in a place where it can create a directory. Next, run the server using the following commands: + +$ cd jboss-4.0.4.GA +$ ./bin/run.sh -c default +========================================================================= + + JBoss Bootstrap Environment + + JBOSS_HOME: /opt/jboss-4.0.4.GA + + JAVA: java + + JAVA_OPTS: -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 +-Dsun.rmi.dgc.server.gcInterval=3600000 -Dprogram.name=run.sh + + CLASSPATH: /opt/jboss-4.0.4.GA/bin/run.jar:/lib/tools.jar + +========================================================================= + +15:34:47,999 INFO \[Server\] Starting JBoss (MX MicroKernel)... +15:34:48,001 INFO \[Server\] Release ID: JBoss \[Zion\] 4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000) +15:34:48,004 INFO \[Server\] Home Dir: /opt/jboss-4.0.4.GA +15:34:48,005 INFO \[Server\] Home URL: file:/opt/jboss-4.0.4.GA/ +15:34:48,007 INFO \[Server\] Patch URL: null +15:34:48,007 INFO \[Server\] Server Name: default +15:34:48,007 INFO \[Server\] Server Home Dir: /opt/jboss-4.0.4.GA/server/default +15:34:48,011 INFO \[Server\] Server Home URL: file:/opt/jboss-4.0.4.GA/server/default/ +15:34:48,012 INFO \[Server\] Server Log Dir: /opt/jboss-4.0.4.GA/server/default/log +15:34:48,017 INFO \[Server\] Server Temp Dir: /opt/jboss-4.0.4.GA/server/default/tmp +15:34:48,022 INFO \[Server\] Root Deployment Filename: jboss-service.xml +... +15:35:17,360 INFO \[Server\] JBoss (MX MicroKernel) \[4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000)\] +Started in 22s:238ms + +The first few lines of output from the JBoss startup indicates the configuration being used but the last line is the most important one. It tells you that JBoss has been started successfully on your system. For an extra measure of assurance, visit [http://localhost:8080/web-console/](http://localhost:8080/web-console/) in a web browser to make sure you are able to see the JBoss web console. If you can see this console, everything should be ready to go. + +As a side note, the left-hand side of the web-console requires that the [Java plugin](http://java.sun.com/products/plugin/) be properly installed. This is supposed to take place when installing the J2SE, so if it did not work correctly for you, I suggest that you consult some documentation about any errors you may be seeing. The Java plugin is not required for JBoss or ActiveMQ to function properly, it is simply for the JBoss web-console. + +Once JBoss is installed properly, shut it down using either the shutdown script or by simply typing ctrl-c to activate the shutdown hook. Once it is shut down, proceed to the next step. + +Prepare for Integrating Apache ActiveMQ with the JBoss Application Server +------------------------------------------------------------------------- + +The fourth step is to prepare your environment for integrating ActiveMQ with JBoss. If you haven't done so already, download Apache ActiveMQ using the link above. As of the writing of this article, the latest released version is 4.0.2-RC4. Upon downloading this archive, expand it in a place where it can create a directory, preferably in the same location where JBoss was expanded. Verify that the ActiveMQ RAR file is included using the following commands: + +$ cd ./incubator-activemq-4.0.2.tar.gz +$ jar tvf /opt/incubator-activemq-4.0.2/lib/optional/activemq-ra-4.0.2.rar + 0 Mon Sep 25 19:00:50 MDT 2006 META-INF/ + 399 Mon Sep 25 19:00:48 MDT 2006 META-INF/MANIFEST.MF + 523 Mon Sep 25 13:07:40 MDT 2006 META-INF/DISCLAIMER.txt + 11359 Mon Sep 25 13:07:40 MDT 2006 META-INF/LICENSE.txt + 20305 Mon Sep 25 13:07:40 MDT 2006 META-INF/ra.xml + 2334 Mon Sep 25 13:07:40 MDT 2006 broker-config.xml + 70023 Mon Sep 25 19:00:48 MDT 2006 activemq-ra-4.0.2.jar +1351744 Mon Sep 25 19:00:14 MDT 2006 activemq-core-4.0.2.jar +232107 Mon Sep 25 18:22:48 MDT 2006 activeio-core-3.0-beta4.jar +2143211 Tue Aug 01 11:44:50 MDT 2006 derby-10.1.1.0.jar +1901653 Tue Aug 01 11:47:08 MDT 2006 spring-1.2.6.jar + 94713 Tue Aug 01 11:47:22 MDT 2006 xbean-spring-2.2.jar + 52915 Tue Aug 01 12:22:16 MDT 2006 commons-logging-1.1.jar + 16030 Tue Aug 01 12:22:32 MDT 2006 geronimo-j2ee-management\_1.0\_spec-1.0.jar +329586 Tue Aug 01 12:22:54 MDT 2006 backport-util-concurrent-2.1.jar +358085 Tue Aug 01 12:23:26 MDT 2006 log4j-1.2.12.jar + 523 Mon Sep 25 19:00:50 MDT 2006 META-INF/DISCLAIMER.txt + 11359 Mon Sep 25 19:00:50 MDT 2006 META-INF/LICENSE.txt + +This is simply a table of contents of the RAR file. There should only be one reason that this will fail - an incomplete download of the ActiveMQ tarball or zip file. Beyond that, depending on the version you download, some of the library versions may be slightly different. + +Now go back to the JBoss installation and create a directory for ActiveMQ in the JBoss deploy directory for the default JBoss context. Below are the commands to achieve this task: + +$ mkdir /opt/jboss-4.0.4.GA/server/default/deploy/activemq-ra.rar +$ cd /opt/jboss-4.0.4.GA/server/default/deploy/activemq-ra.rar +$ pwd +/opt/jboss-4.0.4.GA/server/default/deploy/activemq-ra.rar + +**_NOTE:_** The creation of a directory is not required but is the easiest way to set up the ActiveMQ RAR when you're just getting started. This is due to the flexibility it affords during the development phase for the configuration to be changed very easily. The alternative is to JAR up the directory as a RAR file once the configuration is solid enough that it no longer needs to be changed. But leaving everything in a directory during development is the easiest path. + +Now expand the activemq-ra-4.0.2.rar into the current working directory: + +jar xvf /opt/incubator-activemq-4.0.2/lib/optional/activemq-ra-4.0.2.rar + created: META-INF/ + inflated: META-INF/MANIFEST.MF + inflated: META-INF/DISCLAIMER.txt + inflated: META-INF/LICENSE.txt + inflated: META-INF/ra.xml + inflated: broker-config.xml + inflated: activemq-ra-4.0.2.jar + inflated: activemq-core-4.0.2.jar + inflated: activeio-core-3.0-beta4.jar + inflated: derby-10.1.1.0.jar + inflated: spring-1.2.6.jar + inflated: xbean-spring-2.2.jar + inflated: commons-logging-1.1.jar + inflated: geronimo-j2ee-management\_1.0\_spec-1.0.jar + inflated: backport-util-concurrent-2.1.jar + inflated: log4j-1.2.12.jar + inflated: META-INF/DISCLAIMER.txt + inflated: META-INF/LICENSE.txt + +Below is a quick listing of the contents of that directory: + +$ ls -l +total 12848 +drwxr-xr-x 6 bsnyder bsnyder 204 Oct 16 16:27 META-INF +-rw-r--r-- 1 bsnyder bsnyder 232107 Oct 16 16:27 activeio-core-3.0-beta4.jar +-rw-r--r-- 1 bsnyder bsnyder 1351744 Oct 16 16:27 activemq-core-4.0.2.jar +-rw-r--r-- 1 bsnyder bsnyder 70023 Oct 16 16:27 activemq-ra-4.0.2.jar +-rw-r--r-- 1 bsnyder bsnyder 329586 Oct 16 16:27 backport-util-concurrent-2.1.jar +-rw-r--r-- 1 bsnyder bsnyder 2334 Oct 16 16:27 broker-config.xml +-rw-r--r-- 1 bsnyder bsnyder 52915 Oct 16 16:27 commons-logging-1.1.jar +-rw-r--r-- 1 bsnyder bsnyder 2143211 Oct 16 16:27 derby-10.1.1.0.jar +-rw-r--r-- 1 bsnyder bsnyder 16030 Oct 16 16:27 geronimo-j2ee-management\_1.0\_spec-1.0.jar +-rw-r--r-- 1 bsnyder bsnyder 358085 Oct 16 16:27 log4j-1.2.12.jar +-rw-r--r-- 1 bsnyder bsnyder 1901653 Oct 16 16:27 spring-1.2.6.jar +-rw-r--r-- 1 bsnyder bsnyder 94713 Oct 16 16:27 xbean-spring-2.2.jar + +Now it's time to configure ActiveMQ. + +Configuring Apache ActiveMQ +--------------------------- + +The fifth step is to actually configure ActiveMQ for integration with JBoss. Remember that you should be sitting in the following directory: + +/opt/jboss-4.0.4.GA/server/default/deploy/activemq-ra.rar + +You may or may not have installed JBoss in `/opt`, that doesn't particularly matter. What does matter is that you're sitting in the directory that was created above to hold the contents of the expanded ActiveMQ RAR file. + +**_NOTE:_** A RAR file is a Resource adapter ARchive (RAR). Resource adapters are a concept from the [J2EE Connector Architecture (JCA)](http://java.sun.com/j2ee/connector/) and are used to interface with Enterprise Information Systems (EIS), i.e., systems external to the application server (e.g., relational databases, mainframes, MOMs, accounting systems, etc.). Resource adapters are often referred to as J2EE connectors and are very similar to the concept of a device driver for, say, a printer in that they contain information specific to connecting to a particular system. The difference with JCA is that that connection has been formalized in specification for Java. So the overall concepts of JCA is for connection to any EIS, but what does that mean? JCA 1.5 provides connectivity and more via the following contracts: + +Version 1.0 Contracts + +In version 1.0 of the Connector Architecture, three contracts are defined to address the functions mentioned above: + +* Connection Management Contract: Lets applications connect to an EIS through the resource adapter. It also allows the application server to pool connection requests to the EIS. +* Transaction Management Contract: Allows an application to manage and perform transactional access across one-to-many EIS resource managers. +* Security Contract: Provides support for secure access to the EIS. + +New Contracts in Version 1.5 + +In version 1.5 of the J2EE Connector Architecture, there are more contracts that a resource adapter must support, as new functionality and features made their way into the specification. A resource adapter can support these four new contracts by implementing the required interfaces defined in the specification for each contract. + +* Lifecycle Management Contract: Lets the application server manage the lifecycle – that is, the startup and shutdown functionality – of the resource adapter. +* Work Management Contract: Allows the resource adapter to do work by submitting it to an application server for execution. Since the application server does the work for the resource adapter, the resource adapter needn't worry about thread management. Instead, the application server manages this aspect efficiently and can use thread pooling if necessary. Although the work management contract is not required (the resource adapter can choose to manage its own thread for work), it is definitely recommended. +* Transaction Inflow Contract: Allows a resource adapter to propagate an imported transaction to an application server, as well as flow-in transaction completion and crash recovery initiated by an EIS. +* Message Inflow Contract: Allows the resource adapter to synchronously or asynchronously deliver messages to endpoints in the application server, irrespective of message style, semantics, and infrastructure. + +Quoted from [What's New in the J2EE Connector Architecture 1.5](http://java.sun.com/developer/technicalArticles/J2EE/connectorarch1_5/) + +For more information about JCA, please consult the [J2EE Connector Architecture documentation](http://java.sun.com/j2ee/connector/index.jsp). + +Open the `META-INF/ra.xml` file and look for the following section: + +**META-INF/ra.xml** + + + + The URL to the ActiveMQ server that you want this connection to connect to. If using + an embedded broker, this value should be 'vm://localhost'. + + ServerUrl + java.lang.String + tcp://localhost:61616 +vm://localhost --> + + +The section above is used to tell the ActiveMQ RAR where ActiveMQ is located. By default, the in-VM protocol is commented out in favor of the tcp protocol. This will find ActiveMQ running on any interface on the localhost on port 61616. It's ok to just leave this alone if you don't mind the inefficiency of communicating within the JVM via TCP. However, it is recommended that `vm://` transport be used for an embedded broker, so comment out the `tcp://` transport and uncomment the `vm://` transport. Below is an example of this: + +**META-INF/ra.xml** + + + + The URL to the ActiveMQ server that you want this connection to connect to. If using + an embedded broker, this value should be 'vm://localhost'. + + ServerUrl + java.lang.String + tcp://localhost:61616 --> + vm://localhost + + +Because we're embedding ActiveMQ inside of JBoss, it is more efficient to use the `vm://` transport, rather than to perform messaging over the `tcp://` transport. + +Now look further down the `META-INF/ra.xml` file and locate the following section: + +**META-INF/ra.xml** + + + + Sets the XML configuration file used to configure the embedded ActiveMQ broker via + Spring if using embedded mode. + + BrokerXmlConfig is the filename which is assumed to be on the classpath unless + a URL is specified. So a value of foo/bar.xml would be assumed to be on the + classpath whereas file:dir/file.xml would use the file system. + Any valid URL string is supported. + + BrokerXmlConfig + java.lang.String + + + + +The section above needs to be changed to uncomment the second to last line and remove/replace the empty element that is above it. Below is an example of how this should be changed: + +**META-INF/ra.xml** + + + + Sets the XML configuration file used to configure the embedded ActiveMQ broker via + Spring if using embedded mode. + + BrokerXmlConfig is the filename which is assumed to be on the classpath unless + a URL is specified. So a value of foo/bar.xml would be assumed to be on the + classpath whereas file:dir/file.xml would use the file system. + Any valid URL string is supported. + + BrokerXmlConfig + java.lang.String + xbean:broker-config.xml + + +This change tells the ActiveMQ RAR to read a configuration file named `broker-config.xml` (the `xbean:` that proceeds the filename is simply a hint to class doing the reading of the configuration file) which is located on the CLASSPATH. In this case, the `broker-config.xml` file is located in the `activemq-ra.rar` directory. Save the changes to that file and then open the `broker-config.xml` file. + +The `broker-config.xml` file _is_ the ActiveMQ configuration file. This is the file used to configure ActiveMQ. The default contents of this file are usable, but should be customized to suit your environment. There are several items of note about this configuration. The most prominent sections to note in this file are the `` element and the `` and `` elements as seen below: + +**broker-config.xml** + + + + + ... + + + + + + + + + + + + + + + + + + + + + +The first change to this file is to add the brokerName attribute to the broker element and provide a name: + + + +In addition, this same name is used further down the configuration to provide a name for the `` element: + + + +Now we'll tell ActiveMQ not to initialize JMX because we'll use the existing one that JBoss has: + + + + + + +The `` element should be reconfigured to store its data in an appropriate place. On JBoss, that's most likely within the "data" directory of the server configuration you're using. We're going to set this dynamically using an XBean and Spring feature that allows us to inject system properties values into the configuration. First this needs to be enabled: + + + + +Now, modify the `dataDirectory` attribute of the `journaledJDBC` element to be the following: `${jboss.server.data.dir}/activemq`. + +The `` element is used to advertise the ActiveMQ broker for client-to-broker communications and the `` element advertises the ActiveMQ broker for broker-to-broker communications. The default configuration is to use the ActiveMQ [multicast transport](http://www.activemq.org/site/multicast-transport-reference.html) for both. This is simply an easy configuration under which to get ActiveMQ up and running, so we'll just leave it at that for the time being. + +**_NOTE:_** There are far more configuration options available for ActiveMQ than are noted here. The configuration above is only enough to just get ActiveMQ up and running, nothing more. For more information on the ActiveMQ configuration, see the [ActiveMQ 4.1 XML Reference](http://www.activemq.org/site/xbean-xml-reference-41.html). + +Now we just need to start up JBoss to assure that it comes up correctly without error using the same commands we used previously to start JBoss: + +$ cd jboss-4.0.4.GA +$ ./bin/run.sh -c default +========================================================================= + + JBoss Bootstrap Environment + + JBOSS_HOME: /opt/jboss-4.0.4.GA + + JAVA: java + + JAVA_OPTS: -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 +-Dsun.rmi.dgc.server.gcInterval=3600000 -Dprogram.name=run.sh + + CLASSPATH: /opt/jboss-4.0.4.GA/bin/run.jar:/lib/tools.jar + +========================================================================= + +15:34:47,999 INFO \[Server\] Starting JBoss (MX MicroKernel)... +15:34:48,001 INFO \[Server\] Release ID: JBoss \[Zion\] 4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000) +15:34:48,004 INFO \[Server\] Home Dir: /opt/jboss-4.0.4.GA +15:34:48,005 INFO \[Server\] Home URL: file:/opt/jboss-4.0.4.GA/ +15:34:48,007 INFO \[Server\] Patch URL: null +15:34:48,007 INFO \[Server\] Server Name: default +15:34:48,007 INFO \[Server\] Server Home Dir: /opt/jboss-4.0.4.GA/server/default +15:34:48,011 INFO \[Server\] Server Home URL: file:/opt/jboss-4.0.4.GA/server/default/ +15:34:48,012 INFO \[Server\] Server Log Dir: /opt/jboss-4.0.4.GA/server/default/log +15:34:48,017 INFO \[Server\] Server Temp Dir: /opt/jboss-4.0.4.GA/server/default/tmp +15:34:48,022 INFO \[Server\] Root Deployment Filename: jboss-service.xml +... +15:35:17,360 INFO \[Server\] JBoss (MX MicroKernel) \[4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000)\] +Started in 28s:576ms + +As long as JBoss comes up without error, you're ready to move on to the next step. + +Configuring JBoss +----------------- + +The sixth step is to configure JBoss to initialize and start ActiveMQ whenever JBoss starts up. This is accomplished using an XML file that abides by the [JBoss JCA DTD](http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd) for data sources. Like most other Java application servers on the market, the JBoss architecture uses the J2EE Connector Architecture to manage connections of any kind including JDBC, JMS, etc. and the JBoss JCA DTD denotes the allowed contents for creating an XML data source instance to configure JBoss JCA. Below is an example XML data source instance for use with JBoss: + +**activemq-jms-ds.xml** + + + + + + + + + activemq/QueueConnectionFactory + + + activemq-ra.rar + javax.jms.QueueConnectionFactory + vm://localhost + + 1 + 200 + 30000 + 3 + + + + activemq/TopicConnectionFactory + + + activemq-ra.rar + javax.jms.TopicConnectionFactory + vm://localhost + + 1 + 200 + 30000 + 3 + + + + activemq/queue/outbound + jboss.jca:service=RARDeployment,name='activemq-ra.rar' + javax.jms.Queue + PhysicalName=queue.outbound + + + + activemq/topic/inbound + jboss.jca:service=RARDeployment,name='activemq-ra.rar' + javax.jms.Topic + PhysicalName=topic.inbound + + + + +This XML instance configures a JMS `QueueConnectionFactory` and a JMS `TopicConnectionFactory` and makes them available via JNDI. Also defined in this file are some {{AdminObject}}s which are used to specify a topic and a queue. This file should be dropped into the JBoss deploy directory. Its name (*-ds.xml) will cause it to be picked up by the JBoss deployer upon startup. Speaking of which, once this file is in place, a quick smoke test can be performed by simply starting up the JBoss server. Below is an example of the output that should be seen: + +========================================================================= + + JBoss Bootstrap Environment + + JBOSS_HOME: /opt/jboss + + JAVA: java + + JAVA_OPTS: -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 +-Dsun.rmi.dgc.server.gcInterval=3600000 -Dprogram.name=run.sh + + CLASSPATH: /opt/jboss/bin/run.jar:/lib/tools.jar + +========================================================================= + +22:55:48,686 INFO \[Server\] Starting JBoss (MX MicroKernel)... +22:55:48,688 INFO \[Server\] Release ID: JBoss \[Zion\] 4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000) +22:55:48,690 INFO \[Server\] Home Dir: /opt/jboss-4.0.4.GA +22:55:48,692 INFO \[Server\] Home URL: file:/opt/jboss-4.0.4.GA/ +22:55:48,695 INFO \[Server\] Patch URL: null +22:55:48,697 INFO \[Server\] Server Name: default +22:55:48,698 INFO \[Server\] Server Home Dir: /opt/jboss-4.0.4.GA/server/default +22:55:48,701 INFO \[Server\] Server Home URL: file:/opt/jboss-4.0.4.GA/server/default/ +22:55:48,702 INFO \[Server\] Server Log Dir: /opt/jboss-4.0.4.GA/server/default/log +22:55:48,704 INFO \[Server\] Server Temp Dir: /opt/jboss-4.0.4.GA/server/default/tmp +22:55:48,706 INFO \[Server\] Root Deployment Filename: jboss-service.xml +22:55:49,092 INFO \[ServerInfo\] Java version: 1.5.0_06,Apple Computer, Inc. +22:55:49,101 INFO \[ServerInfo\] Java VM: Java HotSpot(TM) Server VM 1.5.0_06-64,"Apple Computer, Inc." +22:55:49,102 INFO \[ServerInfo\] OS-System: Mac OS X 10.4.8,i386 +22:55:49,803 INFO \[Server\] Core system initialized +22:55:53,379 INFO \[WebService\] Using RMI server codebase: http://rattlesnake:8083/ +22:55:53,400 INFO \[Log4jService$URLWatchTimerTask\] Configuring from URL: resource:log4j.xml +22:55:54,034 INFO \[NamingService\] JNDI bootstrap JNP=/0.0.0.0:1099, RMI=/0.0.0.0:1098, backlog=50, +no client SocketFactory, Server SocketFactory=class +org.jboss.net.sockets.DefaultSocketFactory +22:55:58,475 INFO \[Embedded\] Catalina naming disabled +22:55:58,566 INFO \[ClusterRuleSetFactory\] Unable to find a cluster rule set in the classpath. +Will load the default rule set. +22:55:58,569 INFO \[ClusterRuleSetFactory\] Unable to find a cluster rule set in the classpath. +Will load the default rule set. +22:55:59,110 INFO \[Http11BaseProtocol\] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8080 +22:55:59,114 INFO \[Catalina\] Initialization processed in 545 ms +22:55:59,116 INFO \[StandardService\] Starting service jboss.web +22:55:59,121 INFO \[StandardEngine\] Starting Servlet Engine: Apache Tomcat/5.5.17 +22:55:59,179 INFO \[StandardHost\] XML validation disabled +22:55:59,221 INFO \[Catalina\] Server startup in 105 ms +22:55:59,600 INFO \[TomcatDeployer\] deploy, ctxPath=/invoker, warUrl=.../deploy/http-invoker.sar/invoker.war/ +22:55:59,874 INFO \[WebappLoader\] Dual registration of jndi stream handler: factory already defined +22:56:00,899 INFO \[TomcatDeployer\] deploy, ctxPath=/, warUrl=.../deploy/jbossweb-tomcat55.sar/ROOT.war/ +22:56:01,700 INFO \[TomcatDeployer\] deploy, ctxPath=/jbossws, warUrl=.../tmp/deploy/tmp60528jbossws-exp.war/ +22:56:01,891 INFO \[SubscriptionManager\] Bound event dispatcher to java:/EventDispatcher +22:56:02,203 INFO \[TomcatDeployer\] deploy, ctxPath=/jbossmq-httpil, +warUrl=.../deploy/jms/jbossmq-httpil.sar/jbossmq-httpil.war/ +22:56:04,546 INFO \[TomcatDeployer\] deploy, ctxPath=/web-console, +warUrl=.../deploy/management/console-mgr.sar/web-console.war/ +22:56:05,690 INFO \[MailService\] Mail Service bound to java:/Mail +22:56:07,215 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/activemq-ra.rar/ +22:56:07,452 INFO \[XBeanXmlBeanDefinitionReader\] Loading XML bean definitions from class +path resource \[broker-config.xml\] +22:56:07,750 INFO \[ClassPathXmlApplicationContext\] Bean factory for application context +\[org.apache.xbean.spring.context.ClassPathXmlApplicationContext;hashCode=13887543\]: +org.springframework.beans.factory.support.DefaultListableBeanFactory defining +beans \[org.apache.activemq.xbean.XBeanBrokerService\]; root of BeanFactory hierarchy +22:56:07,765 INFO \[ClassPathXmlApplicationContext\] 1 beans defined in application context +\[org.apache.xbean.spring.context.ClassPathXmlApplicationContext;hashCode=13887543\] +22:56:07,773 INFO \[CollectionFactory\] JDK 1.4+ collections available +22:56:07,778 INFO \[ClassPathXmlApplicationContext\] Unable to locate MessageSource with name +'messageSource': using default +\[org.springframework.context.support.DelegatingMessageSource@5fee96\] +22:56:07,781 INFO \[ClassPathXmlApplicationContext\] Unable to locate ApplicationEventMulticaster +with name 'applicationEventMulticaster': using default +\[org.springframework.context.event.SimpleApplicationEventMulticaster@78c714\] +22:56:07,783 INFO \[DefaultListableBeanFactory\] Pre-instantiating singletons in factory + \[org.springframework.beans.factory.support.DefaultListableBeanFactory +defining beans \[org.apache.activemq.xbean.XBeanBrokerService\]; root of BeanFactory hierarchy\] +22:56:08,181 INFO \[BrokerService\] ActiveMQ 4.0.2 JMS Message Broker (bruce.broker1) is starting +22:56:08,181 INFO \[BrokerService\] For help or more information please see: +http://incubator.apache.org/activemq/ +22:56:09,989 INFO \[JDBCPersistenceAdapter\] Database driver recognized: +\[apache\_derby\_embedded\_jdbc\_driver\] +22:56:11,026 INFO \[JournalPersistenceAdapter\] Journal Recovery Started from: Active Journal: +using 5 x 20.0 Megs at: /opt/jboss-4.0.4.GA/activemq-data/journal +22:56:11,169 INFO \[JournalPersistenceAdapter\] Journal Recovered: 0 message(s) in transactions recovered. +22:56:11,489 INFO \[TransportServerThreadSupport\] Listening for connections at: tcp://rattlesnake:61616 +22:56:11,491 WARN \[MulticastDiscoveryAgent\] brokerName not set +22:56:11,519 INFO \[TransportConnector\] Connector bruce.broker1 Started +22:56:11,522 INFO \[NetworkConnector\] Network Connector bridge Started +22:56:11,522 INFO \[BrokerService\] ActiveMQ JMS Message Broker +(bruce.broker1, ID:rattlesnake-59052-1161060967859-1:0) started +22:56:11,556 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jboss-ha-local-jdbc.rar +22:56:11,599 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jboss-ha-xa-jdbc.rar +22:56:11,623 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jboss-local-jdbc.rar +22:56:11,647 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jboss-xa-jdbc.rar +22:56:11,737 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jms/jms-ra.rar +22:56:11,847 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/mail-ra.rar +22:56:12,251 INFO \[ConnectionFactoryBindingService\] Bound ConnectionManager +'jboss.jca:service=ConnectionFactoryBinding,name=activemq/QueueConnectionFactory' to +JNDI name 'java:activemq/QueueConnectionFactory' +22:56:12,258 INFO \[ConnectionFactoryBindingService\] Bound ConnectionManager +'jboss.jca:service=ConnectionFactoryBinding,name=activemq/TopicConnectionFactory' to +JNDI name 'java:activemq/TopicConnectionFactory' +22:56:12,265 INFO \[AdminObject\] Bound admin object 'org.apache.activemq.command.ActiveMQQueue' +at 'activemq/queue/outbound' +22:56:12,330 INFO \[AdminObject\] Bound admin object 'org.apache.activemq.command.ActiveMQTopic' +at 'activemq/topic/inbound' +22:56:13,246 INFO \[ConnectionFactoryBindingService\] Bound ConnectionManager +'jboss.jca:service=DataSourceBinding,name=DefaultDS' to JNDI name 'java:DefaultDS' +22:56:13,842 INFO \[A\] Bound to JNDI name: queue/A +22:56:13,845 INFO \[B\] Bound to JNDI name: queue/B +22:56:13,846 INFO \[C\] Bound to JNDI name: queue/C +22:56:13,848 INFO \[D\] Bound to JNDI name: queue/D +22:56:13,850 INFO \[ex\] Bound to JNDI name: queue/ex +22:56:13,876 INFO \[testTopic\] Bound to JNDI name: topic/testTopic +22:56:13,879 INFO \[securedTopic\] Bound to JNDI name: topic/securedTopic +22:56:13,880 INFO \[testDurableTopic\] Bound to JNDI name: topic/testDurableTopic +22:56:13,883 INFO \[testQueue\] Bound to JNDI name: queue/testQueue +22:56:13,994 INFO \[UILServerILService\] JBossMQ UIL service available at : /0.0.0.0:8093 +22:56:14,055 INFO \[DLQ\] Bound to JNDI name: queue/DLQ +22:56:14,375 INFO \[ConnectionFactoryBindingService\] Bound ConnectionManager +'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA' +22:56:14,525 INFO \[TomcatDeployer\] deploy, ctxPath=/jmx-console, warUrl=.../deploy/jmx-console.war/ +22:56:14,991 INFO \[Http11BaseProtocol\] Starting Coyote HTTP/1.1 on http-0.0.0.0-8080 +22:56:15,071 INFO \[ChannelSocket\] JK: ajp13 listening on /0.0.0.0:8009 +22:56:15,082 INFO \[JkMain\] Jk running ID=0 time=0/25 config=null +22:56:15,108 INFO \[Server\] JBoss (MX MicroKernel) \[4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000)\] +Started in 26s:398ms + +Note the startup messages from both ActiveMQ and from the `AdminObject}}s creating an {{ActiveMQQueue` and an `ActiveMQTopic`. These are good indications that the configuration is correct, but needs to be verified a bit further. This is covered in the next section. + +Testing the Integration +----------------------- + +The seventh and final step is to perform a slightly more comprehensive smoke test of the integration. This can be accomplished using Apache Ant via the examples that come with the ActiveMQ binary distribution. An Ant build.xml file is included which provides easy access to a simple consumer and a simple producer. The producer will be used to send messages that are received by the consumer. To proceed with this testing, just follow the steps below: + +1. In the first terminal, start up JBoss. The same startup script can be used here as was used above. +2. In the second terminal, use the commands below to run the ActiveMQ consumer: + + $ cd /opt/incubator-activemq-4.0.2/examples #note in activemq v5 the directory is just "example" not "examples" + $ ant consumer + Buildfile: build.xml + + init: + \[mkdir\] Created dir: /opt/incubator-activemq-4.0.2/example/target/classes + \[mkdir\] Created dir: /opt/incubator-activemq-4.0.2/example/src/ddl + + compile: + \[javac\] Compiling 6 source files to /opt/incubator-activemq-4.0.2/example/target/classes + + consumer: + \[echo\] Running consumer against server at $url = tcp://localhost:61616 for subject $subject = TEST.FOO + \[java\] Connecting to URL: tcp://localhost:61616 + \[java\] Consuming queue: TEST.FOO + \[java\] Using non-durable subscription + \[java\] We are about to wait until we consume: 10 message(s) then we will shutdown + +3. In the third terminal, use the commands below to run the ActiveMQ producer: + + $ cd /opt/incubator-activemq-4.0.2/examples + $ ant producer + Buildfile: build.xml + + init: + + compile: + + producer: + \[echo\] Running producer against server at $url = tcp://localhost:61616 for subject $subject = TEST.FOO + \[java\] Connecting to URL: tcp://localhost:61616 + \[java\] Publishing a Message with size 1000 to queue: TEST.FOO + \[java\] Using non-durable publishing + \[java\] Sleeping between publish 0 ms + \[java\] Sending message: Message: 0 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 1 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 2 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 3 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 4 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 5 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 6 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 7 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 8 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 9 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Done. + \[java\] connection { + \[java\] session { + \[java\] messageCount{ count: 10 unit: count startTime: 1161062468001 lastSampleTime: + 1161062468340 description: Number of messages exchanged } + \[java\] messageRateTime{ count: 10 maxTime: 142 minTime: 1 totalTime: 315 averageTime: 31.5 + averageTimeExMinMax: 21.5 averagePerSecond: 31.746031746031747 + averagePerSecondExMinMax: 46.51162790697674 unit: millis startTime: 1161062468002 lastSampleTime: + 1161062468340 description: Time taken to process a message (thoughtput rate) } + \[java\] pendingMessageCount{ count: 0 unit: count startTime: 1161062468001 lastSampleTime: + 1161062468001 description: Number of pending messages } + \[java\] expiredMessageCount{ count: 0 unit: count startTime: 1161062468001 lastSampleTime: + 1161062468001 description: Number of expired messages } + \[java\] messageWaitTime{ count: 0 maxTime: 0 minTime: 0 totalTime: 0 averageTime: 0.0 + averageTimeExMinMax: 0.0 averagePerSecond: 0.0 + averagePerSecondExMinMax: 0.0 unit: millis startTime: 1161062468002 lastSampleTime: 1161062468002 + description: Time spent by a message before being delivered } + \[java\] durableSubscriptionCount{ count: 0 unit: count startTime: 1161062468002 lastSampleTime: + 1161062468002 description: The number of durable + subscriptions } + + \[java\] producers { + \[java\] producer queue://TEST.FOO { + \[java\] messageCount{ count: 10 unit: count startTime: 1161062468025 lastSampleTime: + 1161062468340 description: Number of messages processed } + \[java\] messageRateTime{ count: 10 maxTime: 142 minTime: 1 totalTime: 315 averageTime: + 31.5 averageTimeExMinMax: 21.5 averagePerSecond: + 31.746031746031747 averagePerSecondExMinMax: 46.51162790697674 unit: millis startTime: 1161062468025 + lastSampleTime: 1161062468340 description: Time taken to + process a message (thoughtput rate) } + \[java\] pendingMessageCount{ count: 0 unit: count startTime: 1161062468025 lastSampleTime: + 1161062468025 description: Number of pending messages } + \[java\] messageRateTime{ count: 10 maxTime: 142 minTime: 1 totalTime: 315 averageTime: 31.5 + averageTimeExMinMax: 21.5 averagePerSecond: + 31.746031746031747 averagePerSecondExMinMax: 46.51162790697674 unit: millis startTime: 1161062468025 + lastSampleTime: 1161062468340 description: Time taken to + process a message (thoughtput rate) } + \[java\] expiredMessageCount{ count: 0 unit: count startTime: 1161062468025 lastSampleTime: + 1161062468025 description: Number of expired messages } + \[java\] messageWaitTime{ count: 0 maxTime: 0 minTime: 0 totalTime: 0 averageTime: 0.0 + averageTimeExMinMax: 0.0 averagePerSecond: 0.0 + averagePerSecondExMinMax: 0.0 unit: millis startTime: 1161062468025 lastSampleTime: 1161062468025 + description: Time spent by a message before being delivered } + \[java\] } + \[java\] } + \[java\] consumers { + \[java\] } + \[java\] } + \[java\] } + + +Step 1 above just starts up JBoss. Step 2 above starts up a simple message consumer that comes with ActiveMQ. Step 3 above starts up a simple message producer that comes with ActiveMQ. Though the message consumer and message producer are simple utilities, the each one accepts many parameters making them extremely useful for testing ActiveMQ configurations. + +To paraphrase, what just happened was that the message producer sent 10 messages to the TEST.FOO destination and the message consumer received 10 messages from the TEST.FOO destination. Despite being a simple test, it does utilize the ActiveMQ broker, albeit only on a single machine. The next logical step is to set up a full network of ActiveMQ brokers. + +After setting up one broker within one instance of JBoss, setting up another is made much easier, but requires another machine or operating system instance. But that's a whole separate article and something to address another day. + +Conclusion +---------- + +What has been demonstrated here is the integration of ActiveMQ with the JBoss application server. This integration is quite common and performed by many enterprises. I hope that this was helpful to people interested in the integration of ActiveMQ with JBoss application server. If you have any questions or are interested in consulting services surrounding ActiveMQ, please [contact us](http://www.logicblaze.com/contact.jsp) for more information. + +### Resources + +Below are the configurations for use with both Spring 1.x and Spring 2.x: + + + +  + +[File](integrating-apache-activemq-with-jboss.html?sortBy=name&sortOrder=ascending) + +[Modified](integrating-apache-activemq-with-jboss.html?sortBy=date&sortOrder=descending) + +File [amq-spring-1.2.6.tgz](integrating-apache-activemq-with-jboss.data/amq-spring-1.2.6.tgz?api=v2 "Download") + +Oct 03, 2007 by [Bruce Snyder](https://cwiki.apache.org/confluence/display/~bsnyder) + +Labels + +* No labels +* [Edit Labels](# "Edit Labels") + +Preview + +File [amq-spring-2.0.tgz](integrating-apache-activemq-with-jboss.data/amq-spring-2.0.tgz?api=v2 "Download") + +Oct 03, 2007 by [Bruce Snyder](https://cwiki.apache.org/confluence/display/~bsnyder) + +Labels + +* No labels +* [Edit Labels](# "Edit Labels") + +Preview + +[Download All](/confluence/pages/downloadallattachments.action?pageId=67786 "Download all the latest versions of attachments on this page as single zip file.") + diff --git a/integration-tests.md b/integration-tests.md new file mode 100644 index 0000000..c554e73 --- /dev/null +++ b/integration-tests.md @@ -0,0 +1,55 @@ +Apache ActiveMQ ™ -- Integration Tests + +[Developers](developers.html) > [Integration Tests](integration-tests.html) + + +The Integration Tests validate that ActiveMQ Resource Adapter operate correctly when deployed with a J2EE application running in an Application Server such as Apache Geronimo. + +Getting Ready +------------- + +The instructions on this page reference a few directories that you will need to substitute appropriate values for: + +* _activemq-core_ is where your ActiveMQ source code is located. +* _geronimo-home_ is where your Geronimo home directory is located. + +Building the ActiveMQ Resource Adapter +-------------------------------------- + +The ActiveMQ Resource Adapter allows a J2EE Application Server to provide transaction management, connection pooling and security to ActiveMQ connection when used by EJBs. The Resource Adapter is deployed in the client EAR that will be using the ActiveMQ. + +cd activemq-ra +maven rar:install-snapshot + +Building the Integration Test EJB module +---------------------------------------- + +The Integration Test EJB module provides a set of EJBs that the tests are run against. + +cd systest/itests/ejb +maven + +Building and Deploying the Integration Test EAR module +------------------------------------------------------ + +The EAR module packages up the Resource Adapter and the Integration Tests EJBs into a deployable EAR. + +cd systest/itests/ear +maven -Dgeronimo.home=geronimo-home + +Starting Geronimo with the Integration Test EAR configuration. +-------------------------------------------------------------- + +In a seperate console, issue the following commands + +cd geronimo-home +java -jar bin/server.jar org/activemq/ear/itest + +Building and running the Integration Tests. +------------------------------------------- + +The following builds and runs the integration tests: + +cd systest/itests/client +maven + diff --git a/integration.md b/integration.md new file mode 100644 index 0000000..d7d2df7 --- /dev/null +++ b/integration.md @@ -0,0 +1,66 @@ + ActiveMQ - Continuous Integration + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * **Continuous Integration** + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Continuous Integration +---------------------- + +No continuous integration management system is defined. Please check back at a later date. + diff --git a/interceptors.md b/interceptors.md new file mode 100644 index 0000000..6334e56 --- /dev/null +++ b/interceptors.md @@ -0,0 +1,127 @@ +Apache ActiveMQ ™ -- Interceptors + +[Features](features.html) > [Interceptors](interceptors.html) + + +ActiveMQ has a sophisticated _interceptor stack_ so that you can attach whatever functionality you require into the broker in an easy way without complicating all of the other broker code. This has really helped us keep the code clean and modular while offering powerful extension points. + +For an example of the kinds of things you can do with interceptors see the following pages + +* [Logging Interceptor](logging-interceptor.html) +* [Security](security.html) +* [Visualisation](visualisation.html) +* [TimeStamp on the Broker](timestampplugin.html) +* [Get Statistics via Messages](statisticsplugin.html) +* [Destinations Plugin](destinations-plugin.html) + +### How plugins work + +A plugin is an instance of the interface [BrokerPlugin](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/BrokerPlugin.html) which allows a plugin to add itself into the broker interceptor chain, typically using the [BrokerFilter](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/BrokerFilter.html) as a base class to allow only certain operations to be customized. + +The object that implements the BrokerPlugin interface is called out as a plugin in the message broker's XML configuration file (see example below). Your plugin can then optionally reference other beans that are defined in the XML file. + + + + + + + + + + + + + + + + + + + + + + + + foo + foo2 + + + + + + +You can also define plugins from within the element as this example illustrates. + + + + + + + + + + + + + + + + + + + + + +At startup, the main or core broker calls your plugin's installPlugin() method. This method creates and returns an object that typically extends [BrokerFilter](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/BrokerFilter.html). + +import org.apache.activemq.broker.Broker; +import org.apache.activemq.broker.BrokerPlugin; + +public class MyPlugin implements BrokerPlugin { + + public Broker installPlugin(Broker broker) throws Exception { + return new MyBroker(broker); + } + +} + +The BrokerFilter class is a convenience class that implements the [Broker](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/Broker.html) interface. This interface defines all the main operations (e.g., addConnection, addSession, etc.) that your implementation can intercept. The class that extends BrokerFilter overrides any of the methods that are defined in the Broker interface so that it can intercept the corresponding core engine's operations. Here's an example of a class that extends BrokerFilter and intercepts/overrides the addConnection() and addSession() Broker methods/operations. + +import org.apache.activemq.broker.Broker; +import org.apache.activemq.broker.BrokerFilter; +import org.apache.activemq.broker.ConnectionContext; +import org.apache.activemq.command.ConnectionInfo; + +public class MyBroker extends BrokerFilter { + + public MyBroker(Broker next) { + super(next); + } + + public void addConnection(ConnectionContext context, ConnectionInfo info) + throws Exception { + + // Your code goes here + + // Then call your parent + super.addConnection(context, info); + } + + public void addSession(ConnectionContext context, SessionInfo info) + throws Exception { + + // Your code goes here... + + // Then call your parent + super.addSession(context, info); + } +} + +For more details see [Developing Plugins](developing-plugins.html) + diff --git a/ioexception-could-not-find-class-for-resource.md b/ioexception-could-not-find-class-for-resource.md new file mode 100644 index 0000000..115d7ca --- /dev/null +++ b/ioexception-could-not-find-class-for-resource.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- IOException - could not find class for resource + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [IOException - could not find class for resource](ioexception-could-not-find-class-for-resource.html) + + +If you get an exception looking like this + +Reason: java.io.exception : could not find class for resource: META-INF/services/org/apache/activemq/transport/tcp + +### Cause + +You are probably using the ActiveMQ source code without using the resources + +### Quick fix + +Try one of these + +* use one of the distribution jars for ActiveMQ +* use Maven to run your program +* try adding activemq/src/conf to your classpath + +### Background + +Then it means that the files in META-INF/services could not be found on the classpath. These files are used to support loose coupling on ActiveMQ with the transport protocols (e.g. to avoid a classpath dependency on JXTA) and to allow dynamic protocol enhancement without a change to the core. + +So we're using the META-INF/services files as a way of coupling a protocol used in URL connections to a Java class name. + diff --git a/irc.md b/irc.md new file mode 100644 index 0000000..da41d30 --- /dev/null +++ b/irc.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- IRC + +[Site](site.html) > [Navigation](navigation.html) > [IRC](irc.html) + + +Committers and contributors can often be found hanging out in IRC. Below is the information about the channel that we use:  + +**Server:** irc.freenode.net + +**Channel:** #apache-activemq + +There are many [IRC clients](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) available out there depending on the operating system you are using.  + +Note the IRC channel on codehaus is deprecated as of April 2015; please refrain from using that room.  Likewise, be aware there is a channel named #activemq on the freenode server - please avoid it as well. + diff --git a/is-there-a-specified-size-of-the-journal.md b/is-there-a-specified-size-of-the-journal.md new file mode 100644 index 0000000..d49648c --- /dev/null +++ b/is-there-a-specified-size-of-the-journal.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- Is there a specified size of the journal + +[Community](community.html) > [FAQ](faq.html) > [Persistence Questions](persistence-questions.html) > [Is there a specified size of the journal](is-there-a-specified-size-of-the-journal.html) + + +There is a "preferred" size for each log file of the journal. By default there are 2 20 meg log files. + diff --git a/issue-tracking.md b/issue-tracking.md new file mode 100644 index 0000000..2266313 --- /dev/null +++ b/issue-tracking.md @@ -0,0 +1,66 @@ + ActiveMQ - Issue Tracking + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * **Issue Tracking** + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Issue Tracking +-------------- + +No issue management system is defined. Please check back at a later date. + diff --git a/j2ee.md b/j2ee.md new file mode 100644 index 0000000..beaa48a --- /dev/null +++ b/j2ee.md @@ -0,0 +1,56 @@ +Apache ActiveMQ ™ -- J2EE + +[Connectivity](connectivity.html) > [Containers](containers.html) > [J2EE](j2ee.html) + + +In J2EE 1.4 or later the standard way to integrate with a JMS provider is via JCA 1.5 and a [Resource Adapter](resource-adapter.html). + +Introduction +------------ + +ActiveMQ includes a Java Connector Architecture (JCA) 1.5 Resource Adapter. JCA 1.5 defines the contract between an J2EE application server and external resources such as databases and messaging middleware. It allows the application server to efficiently pool connections, control transactions and manage security. The Resource Adapter allows ActiveMQ to be used from any J2EE 1.4 application server. We have tested that the Resource Adapter works in the following J2EE 1.4 containers + +* [TomEE](http://tomee.apache.org/tomcat-jms.html) 1 +* Geronimo 1 +* GlassFish +* JBoss 4 +* WebLogic 9 +* WebSphere 6 + +Features +-------- + +* Inbound connection delivers messages to MDBs via XA or local transactions. +* Outbound connections support standard container pooling or can reuse the inbound connection/session to avoid XA. +* JTA support: Can be enlisted in XA and local transactions. +* XA transaction recovery via XAResource.recover() supported. +* When used outside a JTA transaction, session transaction settings retain normal JMS semantics so that it be used by your web-app tier. +* Can configure and start up embedded broker. +* Can connect to external ActiveMQ broker or embedded broker. +* Inbound message delivery supports fine grain control of concurrency and prefetching. +* Batching so that multiple messages can be delivered within the same transaction for optimal performances. + +Downloading the RAR +------------------- + +The RAR is available via [maven central](http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22activemq-rar%22) + +Deployment Guides + +* [TomEE](tomee.html) +* [Geronimo](geronimo.html) +* [Integrating Apache ActiveMQ with Glassfish](integrating-apache-activemq-with-glassfish.html) +* [JBoss Integration](jboss-integration.html) + +The use of an Embedded Broker +----------------------------- + +The ActiveMQ Resource Adapter can connect to a remote broker using any of the available transports, or it can start up an embedded broker. As described in the [Resource Adapter Properties](resource-adapter-properties.html), you can enable an embedded broker using the **BrokerXmlConfig** property. + +Configuration Reference +----------------------- + +* [Resource Adapter Properties](resource-adapter-properties.html) +* [Connection Factory Properties](connection-factory-properties.html) +* [Activation Spec Properties](activation-spec-properties.html) + diff --git a/java-service-wrapper.md b/java-service-wrapper.md new file mode 100644 index 0000000..e3d295d --- /dev/null +++ b/java-service-wrapper.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- Java Service Wrapper + +[Tools](tools.html) > [Java Service Wrapper](java-service-wrapper.html) + + +This page provides some useful information on running the ActiveMQ broker as a windows-NT service or a daemon thread in Linux or Unix systems. + +64bit 4gb memory limit + +The ActiveMQ distribution uses an older and free community release of the service wrapper library. This wrapper has a memory limit of 4gb when running on 64bit platforms. You can manually [download a newer release](http://wrapper.tanukisoftware.com/doc/english/download.jsp) of the wrapper library that does not have this limit, from the vendors website at. It us not possible for Apache ActiveMQ to update and distribute a newer release of the service wrapper, as the vendor changed licensing terms, which does not comply with ASF licensing terms. Therefore out of the box the service wrapper is stuck on that older release. + +However you can manually upgrade the library. + +### Windows-NT Service + +Here are the steps to install the ActiveMQ broker as an NT service: + +1. Download the windows binary distribution (i.e. apache-activemq-5.9.0.zip) +2. Go to ACTIVEMQ_HOME/bin/win32 +3. Run InstallService.bat + +After running InstallService.bat, the ActiveMQ service should be added to the list of NT services. It is not started by default. + +To verify, go to control panel -> administrative tools -> services and look for the ActiveMQ service. Here you can start the ActiveMQ service or configure it to start automatically every time the system boots. + +To remove the ActiveMQ service: + +1. Run UninstallService.bat + +### Linux/Mac OS X Daemon + +Here are the steps to run the ActiveMQ broker as a daemon in Linux or Unix systems: + +1. Download the linux/unix binary distribution (i.e. apache-activemq-5.9.0.tar.gz) +2. Go to ACTIVEMQ\_HOME/linux for linux systems or ACTIVEMQ\_HOME/macosx for Mac OS X systems. +3. Run ./activemq start + +To stop the daemon process: + +1. Go to ACTIVEMQ\_HOME/linux for linux systems or ACTIVEMQ\_HOME/macosx for Mac OS X systems. +2. Run ./activemq stop + +###  Configuring the Java Service Wrapper + +ActiveMQ uses the [Java Service Wrapper](http://wrapper.tanukisoftware.org/doc/english/introduction.html) to run the broker. To configure how the Java Service Wrapper starts up, you can edit the wrapper.conf located in the bin/win32, bin/linux, or bin/macosx depending on which system you are running it. For more information on the different properties of the Java Service Wrapper, refer to this [page](http://wrapper.tanukisoftware.org/doc/english/properties.html) + +###  Troubleshooting + +If you are having problems running the service, turn on the wrapper debugging in the corresponding wrapper.conf file via (wrapper.debug=TRUE) + +Each time you run the wrapper, a log file will be created in ACTIVEMQ_HOME/data/wrapper.log  + diff --git a/javadocs.md b/javadocs.md new file mode 100644 index 0000000..4f6da68 --- /dev/null +++ b/javadocs.md @@ -0,0 +1,29 @@ +Apache ActiveMQ ™ -- JavaDocs + +[Overview](overview.html) > [JavaDocs](javadocs.html) + + +JavaDocs for Apache ActiveMQ +---------------------------- + +Versioned JavaDocs for Apache ActiveMQ could be found at + +[http://activemq.apache.org/maven/](http://activemq.apache.org/maven/)x.y.z/apidocs/index.html kind of url, where _x.y.z_ is broker version you're looking for. + +For example [http://activemq.apache.org/maven/5.12.1/apidocs/index.html](http://activemq.apache.org/maven/5.12.1/apidocs/index.html) contains JavaDocs for **5.12.1**. + +Other JavaDocs +-------------- + +* [JMS API](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/package-summary.html) + +CMS and C++ Documentation +------------------------- + +* [CMS and ActiveMQ-CPP](http://activemq.apache.org/cms/) + +NMS and C# Documentation +------------------------ + +* [NMS API](http://activemq.apache.org/nms/) + diff --git a/javaiointerruptedioexception.md b/javaiointerruptedioexception.md new file mode 100644 index 0000000..1cae33a --- /dev/null +++ b/javaiointerruptedioexception.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- java.io.InterruptedIOException + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [java.io.InterruptedIOException](javaiointerruptedioexception.html) + + +The activemq client will throw an [java.io](http://java.io).InterruptedIOException if  the calling thread has been interrupted while the transport (ResponseCorrelator) is waiting for a response. + +Thread interruption while waiting for a response is treated as an IOException and reported to the transport listener. For an ActiveMQConnection, this will force an async close of the transport, closing the underlying socket. + +Because commands are not idempotent and with an interruption, it is not possible to know if the broker received the command, the only safe course of action is to close the connection. + +If the thread has been interrupted before a request is attempted, the interrupted state is cleared and reset after the request has completed. This allows shutdown operations to complete in the interrupted state. + diff --git a/javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.md b/javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.md new file mode 100644 index 0000000..74887d1 --- /dev/null +++ b/javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.md @@ -0,0 +1,83 @@ +Apache ActiveMQ ™ -- java.io.IOException Failed to create database 'derbydb', see the next exception for details + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [java.io.IOException Failed to create database 'derbydb', see the next exception for details](javaioioexception-failed-to-create-database-derbydb-see-the-next-exception-for-details.html) + + +If you get an error like this + +Jun 19, 2006 10:35:27 PM org.apache.activemq.broker.BrokerService getBroker +INFO: ActiveMQ 4.0 JMS Message Broker (localhost) is starting +Jun 19, 2006 10:35:27 PM org.apache.activemq.broker.BrokerService getBroker +INFO: For help or more information please see: +http://incubator.apache.org/activemq/ +java.io.IOException: Failed to create database 'derbydb', see the next +exception for details. + at +org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:42) + at +org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:58) + at +org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.createAdapter(JDBCPersistenceAdapter.java:229) + at +org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getAdapter(JDBCPersistenceAdapter.java:213) + at +org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.start(JDBCPersistenceAdapter.java:139) + at +org.apache.activemq.store.journal.JournalPersistenceAdapter.start(JournalPersistenceAdapter.java:215) + at +org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:930) + at +org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:888) + at +org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:458) + at +org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:143) + at +org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:133) + at +com.ic.ntn.message.HelloWorld$HelloWorldBroker.run(HelloWorld.java:92) + at java.lang.Thread.run(Thread.java:595) +Caused by: SQL Exception: Failed to create database 'derbydb', see the next +exception for details. + at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown +Source) + at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown +Source) + at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown +Source) + at +org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(Unknown +Source) + at org.apache.derby.impl.jdbc.EmbedConnection.(Unknown Source) + at org.apache.derby.impl.jdbc.EmbedConnection30.(Unknown +Source) + at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Unknown +Source) + at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source) + at org.apache.derby.jdbc.EmbeddedDataSource.getConnection(Unknown +Source) + at org.apache.derby.jdbc.EmbeddedDataSource.getConnection(Unknown +Source) + at +org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:54) + ... 11 more + +Then the error is probably that the JDBC driver (Apache Derby by default) could not write to the persistent file area. + +### Workaround + +Create a directory for the broker to write its files. e.g. in Java code call [setDataDirectory](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/broker/BrokerService.html#setDataDirectory(java.io.File)) + +File dir = new File("foo"); +dir.mkdir(); +broker.setDataDirectory(dir); + +or in XML use + +... + +### See + +* [How do I embed a Broker inside a Connection](how-do-i-embed-a-broker-inside-a-connection.html) + diff --git a/javalangnosuchmethoderror.md b/javalangnosuchmethoderror.md new file mode 100644 index 0000000..ba1405f --- /dev/null +++ b/javalangnosuchmethoderror.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- java.lang.NoSuchMethodError + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [java.lang.NoSuchMethodError](javalangnosuchmethoderror.html) + + +If you get an error like + +java.lang.NoSuchMethodError: +javax.jms.Session.createConsumer(Ljavax/jms/Destination;)Ljavax/jms/MessageConsumer; + +or + +java.lang.AbstractMethodError: +javax.jms.ConnectionFactory.createConnection()Ljavax/jms/Connection; + +### Fix + +You probably have old JMS 1.0.2b versions of the JMS API on your classpath. This is because various methods were added in JMS 1.1 to work with destinations in a polymorphic way (such as to create a consumer from a Destination like the above stack trace). + +Please add the JMS 1.1 jars to your container/classpath and try again. + +Add to the correct ClassPath + +If the JMS 1.0.2b classes come from your application server you may need to add the JMS 1.1 to your boot classpath to ensure that the JMS 1.1 classes take precedence to the container supplied classes + +Note that to a user of the JMS API, JMS 1.1 is completely backwards compatible. The only issue with upgrading to JMS 1.1 is that any JMS provider which implements only JMS 1.0.2b and does not implement JMS 1.1 will not work; however if you're using ActiveMQ you should be fine. + diff --git a/javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.md b/javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.md new file mode 100644 index 0000000..9dedb34 --- /dev/null +++ b/javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.md @@ -0,0 +1,39 @@ +Apache ActiveMQ ™ -- java.lang.NoSuchMethodException org.activemq.ra.ActiveMQResourceAdapter.setUseEmbeddedBroker + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [java.lang.NoSuchMethodException org.activemq.ra.ActiveMQResourceAdapter.setUseEmbeddedBroker](javalangnosuchmethodexception-orgactivemqraactivemqresourceadaptersetuseembeddedbroker.html) + + +If you get an error like this + +2005-08-14 17:18:45,618 ERROR \[org.jboss.resource.deployment.RARDeployment\] +Starting failed jboss.jca:service=RARDeployment,name='activemq-ra-3.0.rar' +org.jboss.deployment.DeploymentException: Error for resource adapter class +org.activemq.ra.ActiveMQResourceAdapter accessing property setter +ConfigPropertyMetaData@e62121\[name=UseEmbeddedBroker type=java.lang.Boolean +value=false descriptions=\[DescriptionMetaData@1ad093c\[language=en +description=Boolean to configure if the connector should create an embedded +broker.\]\]\]; - nested throwable: (java.lang.NoSuchMethodException: +org.activemq.ra.ActiveMQResourceAdapter.setUseEmbeddedBroker(java.lang.Boolean)) + at +org.jboss.deployment.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:39) + at +org.jboss.resource.deployment.ResourceAdapterFactory.createResourceAdapter(ResourceAdapterFactory.java:90) + at +org.jboss.resource.deployment.RARDeployment.startService(RARDeployment.java:101) + at +org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:272) + at +org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:222) + at +org.jboss.system.ServiceDynamicMBeanSupport.invoke(ServiceDynamicMBeanSupport.java:110) + at +org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:150) + at +org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644) + at +org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:897) + +### Fix + +You are using 3.0 of ActiveMQ. This bug is fixed in 3.1.x so use 3.1-M6 or later. + diff --git a/javalangoutofmemory.md b/javalangoutofmemory.md new file mode 100644 index 0000000..65c533a --- /dev/null +++ b/javalangoutofmemory.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- java.lang.OutOfMemory + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [java.lang.OutOfMemory](javalangoutofmemory.html) + + +Ok, this is manageable. It is possible to configure just about all of the memory utilisation of ActiveMQ. The first thing to determine is what part of the system is running out of memory. Is it the JVM, the broker, the consumers or the producers? + +This entry refers to ActiveMQ versions 5.1.x and greater. + +#### Memory + +##### JVM Memory + +Try running the broker in a standalone JVM using `bin/activemq`. Note the default JVM heap size option that is passed to the Java executable by the script (the exact options may depend upon the JVM that you are using, the examples are for the Sun JVM). + +* -Xmx: If your OS has more available memory, consider increasing the total heap memory available to the broker JVM. Note that the JVM will require more memory than the -Xmx value. Thread stacks and the JMVs internal classes will consume additional memory. +* -Xss: If you have [massive numbers of threads](javalangoutofmemory.html) in the Broker JVM, consider reducing the default JVM stack size of each thread with the -Xss option. + +If you are running an embedded broker or in a third party container, ensure that the hosting JVM has appropriate values for the maximum heap and stack sizes. + +##### Broker Memory + +The memory that the broker is allowed to use is not determined by the amount of memory allocated to the JVM. Although the broker is constrained by the amount of memory given to the JVM, the broker manages its memory independently. That is, the broker does not just simply use up all of the memory in the JVM and then die with an OutOfMemory exception. This is where you need to understand the [systemUsage](producer-flow-control.html) memory limit and the per destination memory limit. + +The memory in ActiveMQ works in a tiered fashion that flows from the JVM -> Broker -> broker features. E.g., the total amount of destination memory limits placed cannot exceed the memory limit of the broker. + +#### Consumer + +Along with message size, the [prefetch limit](what-is-the-prefetch-limit-for.html) is main reason a consumer will [run out of memory](what-is-the-prefetch-limit-for.html). Reducing the prefetch value will reduce the amount of messages queued/stored in memory on the Consumer. + +#### Producer + +Unless message size exceeds resource limits, a producer should not run out of memory. A producer may notice the effect of memory limit enforcement by the broker in the form of [blocking](my-producer-blocks.html). + +#### Other + +##### Spooling Messages to Disk + +Fast dispatch of messages is only possible when messages are stored in memory. When consumers are slow or absent, memory can quickly become exhausted. +The Broker (using [Message Cursors](message-cursors.html)) will spool non-persistent messages to disk when the default memory usage threshold for a destination is reached. This threshold value is specified to the Broker via the section of the configuration in [activemq.xml](xml-configuration.html). This feature allows producers to continue sending messages when there are slow consumers without exhausting available memory or reverting to [producer flow control](producer-flow-control.html). In the case of multiple destinations, the combined default memory thresholds may be excessive and they may exceed available memory. In such a case it may make sense to reduce the memory usage 'limit' threshold at which messages are spooled to disk. An alternative option is to configure the 'precentUsage' rather than the absolute usage 'limit'. In this way, memory usage can be confined to a fixed percentage of available memory. + +More specific per destination memoryUsage limits can be specified in [activemq.xml](xml-configuration.html) using [Per Destination Policies](per-destination-policies.html). Some further examples of map entries can be found in the [Message Cursors](message-cursors.html) reference. + +##### Number of Threads + +By default, ActiveMQ uses a dedicated thread per destination. If there are large numbers of Destinations there will be a large number of threads and their associated memory resource usage. ActiveMQ can be configured to use a thread pool through the use of the system property: -Dorg.apache.activemq.UseDedicatedTaskRunner=false. This is currently specified in the activemq start script via ACTIVEMQ_OPTS. Using a thread pool can restrict the number of threads required by ActiveMQ and hence reduce memory usage. + +##### Really Large Messages + +When your message are really large such that you can only allow a few messages in memory at at time, the [Per Destination Policies](per-destination-policies.html) maxPageSize and lazyDispatch can help. maxPageSize controls the amount of messages that are paged into memory for dispatch while lazyDispatch augments that value using the prefetch capacity of the current consumer list. With a prefetch of 1, a single consumer and lazyDispatch, only one message at a time would be loaded into memory at a time. + +##### Leaking JMS resources + +This is the most obvious one for Consumers or Producers; repeatedly obtaining a Session or MessageProducer or MessageConsumer and not closing it. With a java.lang.OutOfMemory, verifying (again) that all not in use JMS resources are released, is worth the time. If you have multiple threads in your application, consider using the [PooledConnectionFactory](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/pool/PooledConnectionFactory.html) as this will allow JMS resource to be safely shared among threads that follow the pattern: + +obtainJmsResource(); + +try +{ + useJmsResource() +} finally { + releaseJmsResource(); +} + +If you are using ActiveMQ via [Spring Support](spring-support.html) or with JMSTemplates, be sure to check you are not falling for any of the [JmsTemplate Gotchas](jmstemplate-gotchas.html). It may also be worth recapping on [How do I use JMS efficiently](how-do-i-use-jms-efficiently.html). + diff --git a/javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.md b/javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.md new file mode 100644 index 0000000..f809cea --- /dev/null +++ b/javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.md @@ -0,0 +1,34 @@ +Apache ActiveMQ ™ -- javax.jms.JMSException - Wire format negociation timeout - peer did not send his wire format. + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [javax.jms.JMSException - Wire format negociation timeout - peer did not send his wire format.](javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.html) + + +If you get exception like this: + +javax.jms.JMSException: Wire format negociation timeout: peer did not send his wire format. +at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:58) +at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1185) +at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1263) +at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:449) + +it can mean one of three things: + +1\. You're connecting to the port not used by ActiveMQ TCP transport +==================================================================== + +Make sure to check that you're connecting to the appropriate `host:port` + +2\. You're using log4j JMS appender and doesn't filter out ActiveMQ log messages +================================================================================ + +Be sure to read [How do I use log4j JMS appender with ActiveMQ](how-do-i-use-log4j-jms-appender-with-activemq.html) and more importantly to never send ActiveMQ log messages to JMS appender + +3\. Your broker is probably under heavy load (or network connection is unreliable), so connection setup cannot be completed in a reasonable time +================================================================================================================================================ + +If you experience sporadic exceptions like this, the best solution is to use [failover transport](failover-transport-reference.html), so that your clients can try connecting again if the first attempt fails. If you're getting these kind of exceptions more frequently you can also try extending wire format negotiation period (default 10 sec). You can do that by using `wireFormat.maxInactivityDurationInitalDelay` property on the connection URL in your client. For example + +tcp://localhost:61616?wireFormat.maxInactivityDurationInitalDelay=30000 + +will use 30 sec timeout. + diff --git a/jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.md b/jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.md new file mode 100644 index 0000000..23321ad --- /dev/null +++ b/jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI () needs 2.1 API. + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI () needs 2.1 API.](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-needs-21-api.html) + + +When using JDK 6 (up to JDK 6 Update 3) to run ActiveMQ you can run into this exception. There are two solutions to this: + +* Upgrade to JDK to 1.6.0_04 or above, which includes JAXB 2.1 +* Copy JAXB 2.1 to /lib/endorsed to override the API jars that ship with the JDK + diff --git a/jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.md b/jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.md new file mode 100644 index 0000000..6f4010d --- /dev/null +++ b/jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (xxx) needs 2.1 API + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (xxx) needs 2.1 API](jaxb-20-api-is-being-loaded-from-the-bootstrap-classloader-but-this-ri-xxx-needs-21-api.html) + + +When using JDK 6 (up to JDK 6 Update 3) to run ActiveMQ you can run into this exception. There are two solutions to this: + +* Upgrade to JDK to 1.6.0_04 or above, which includes JAXB 2.1 +* Copy JAXB 2.1 to /lib/endorsed to override the API jars that ship with the JDK + diff --git a/jboss-integration.md b/jboss-integration.md new file mode 100644 index 0000000..e376406 --- /dev/null +++ b/jboss-integration.md @@ -0,0 +1,724 @@ +Apache ActiveMQ ™ -- JBoss Integration + +[Connectivity](connectivity.html) > [Containers](containers.html) > [JBoss Integration](jboss-integration.html) + + +Integrating Apache ActiveMQ with JBoss +====================================== + +Integration with application servers is a common scenario in the enterprise Java world, especially when it comes to messaging. [ActiveMQ](http://activemq.org/) is a JMS 1.1 compliant, open source, Apache Licensed, message oriented middleware (MOM) with [many](http://activemq.org/site/changes-in-40.html), [many](http://activemq.org/site/new-features-in-41.html) features far beyond the JMS specification. ActiveMQ offers many different [points of connectivity](http://activemq.org/site/connectivity.html), many [cross language clients](http://activemq.org/site/cross-language-clients.html) and many [pluggable transport protocols](http://activemq.org/site/protocols.html) including integration with any J2EE 1.4 application server. + +One of the application servers in the open source world is JBoss. A very common requirement is to configure ActiveMQ as the messaging infrastructure within JBoss. Although there is [a bit of documentation](http://www.activemq.org/site/jboss-integration.html) on this integration, this article seeks to provide much more detail and explanation. So if you have a need to integrate ActiveMQ with JBoss, this article is for you. + +This article explains how to configure JBoss to start up ActiveMQ as part of its lifecycle and how to configure the ActiveMQ resource adapter to handle the messaging and transactionality between ActiveMQ and JBoss. + +Requirements +------------ + +Below are the software requirements for this article with links to download each: + +* [Apache ActiveMQ 4.0.1+](http://activemq.org/site/download.html) +* [JBoss 4.0.4+](http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=16942&release_id=416591) +* [Sun Java 1.5+](http://www.java.com/en/download/index.jsp) +* [Apache Ant 1.6+](http://ant.apache.org/bindownload.cgi) + +Though this article is using Unix, the installation and integration will work on any platform running Sun Java. It is recommended that each piece of software be downloaded before working through the steps is this article. Once each piece of software has been downloaded, proceed to the first step. + +Install the J2SE 1.5 +-------------------- + +The first step in this process is to install Java 1.5 and verify that it runs correctly. Using the link above, find, download and install the correct version of Java for your platform. Once Java is installed and in the PATH, test it to see that it runs correctly using the following command: + +$ java -version +java version "1.5.0_06" +Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-112) +Java HotSpot(TM) Client VM (build 1.5.0_06-64, mixed mode, sharing) + +Depending upon your platform and the exact build number of Java 1.5, your output may vary slightly. As long as it's Java 1.5 and the version information is output, you should be ready to proceed to the next step. + +Install Apache Ant +------------------ + +The second step is to install Apache Ant. Simply download it using the link above, expand somewhere on your hard drive and place the `bin` directory in the PATH. This will allow you to test it quickly using the commands below: + +$ ant -version +Apache Ant version 1.6.2 compiled on July 16 2004 + +As long as you see the version output above, Ant should be usable. If you did not see the version output or received an error, consult the Ant documentation or mailing list archives to work out the issue. Please note that Ant is not used until the end of this whole exercise to test the integration. + +Install the JBoss Application Server +------------------------------------ + +The third step in this process is to install JBoss and make sure it runs correctly before installing and configuring ActiveMQ. Upon downloading JBoss-4.0.4, expand it in a place where it can create a directory. Next, run the server using the following commands: + +$ cd jboss-4.0.4.GA +$ ./bin/run.sh -c default +========================================================================= + + JBoss Bootstrap Environment + + JBOSS_HOME: /opt/jboss-4.0.4.GA + + JAVA: java + + JAVA_OPTS: -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 +-Dsun.rmi.dgc.server.gcInterval=3600000 -Dprogram.name=run.sh + + CLASSPATH: /opt/jboss-4.0.4.GA/bin/run.jar:/lib/tools.jar + +========================================================================= + +15:34:47,999 INFO \[Server\] Starting JBoss (MX MicroKernel)... +15:34:48,001 INFO \[Server\] Release ID: JBoss \[Zion\] 4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000) +15:34:48,004 INFO \[Server\] Home Dir: /opt/jboss-4.0.4.GA +15:34:48,005 INFO \[Server\] Home URL: file:/opt/jboss-4.0.4.GA/ +15:34:48,007 INFO \[Server\] Patch URL: null +15:34:48,007 INFO \[Server\] Server Name: default +15:34:48,007 INFO \[Server\] Server Home Dir: /opt/jboss-4.0.4.GA/server/default +15:34:48,011 INFO \[Server\] Server Home URL: file:/opt/jboss-4.0.4.GA/server/default/ +15:34:48,012 INFO \[Server\] Server Log Dir: /opt/jboss-4.0.4.GA/server/default/log +15:34:48,017 INFO \[Server\] Server Temp Dir: /opt/jboss-4.0.4.GA/server/default/tmp +15:34:48,022 INFO \[Server\] Root Deployment Filename: jboss-service.xml +... +15:35:17,360 INFO \[Server\] JBoss (MX MicroKernel) \[4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000)\] +Started in 22s:238ms + +The first few lines of output from the JBoss startup indicates the configuration being used but the last line is the most important one. It tells you that JBoss has been started successfully on your system. For an extra measure of assurance, visit [http://localhost:8080/web-console/](http://localhost:8080/web-console/) in a web browser to make sure you are able to see the JBoss web console. If you can see this console, everything should be ready to go. + +As a side note, the left-hand side of the web-console requires that the [Java plugin](http://java.sun.com/products/plugin/) be properly installed. This is supposed to take place when installing the J2SE, so if it did not work correctly for you, I suggest that you consult some documentation about any errors you may be seeing. The Java plugin is not required for JBoss or ActiveMQ to function properly, it is simply for the JBoss web-console. + +Once JBoss is installed properly, shut it down using either the shutdown script or by simply typing ctrl-c to activate the shutdown hook. Once it is shut down, proceed to the next step. + +Prepare for Integrating Apache ActiveMQ with the JBoss Application Server +------------------------------------------------------------------------- + +The fourth step is to prepare your environment for integrating ActiveMQ with JBoss. If you haven't done so already, download Apache ActiveMQ using the link above. As of the writing of this article, the latest released version is 4.0.2-RC4. Upon downloading this archive, expand it in a place where it can create a directory, preferably in the same location where JBoss was expanded. Verify that the ActiveMQ RAR file is included using the following commands: + +$ cd ./incubator-activemq-4.0.2.tar.gz +$ jar tvf /opt/incubator-activemq-4.0.2/lib/optional/activemq-ra-4.0.2.rar + 0 Mon Sep 25 19:00:50 MDT 2006 META-INF/ + 399 Mon Sep 25 19:00:48 MDT 2006 META-INF/MANIFEST.MF + 523 Mon Sep 25 13:07:40 MDT 2006 META-INF/DISCLAIMER.txt + 11359 Mon Sep 25 13:07:40 MDT 2006 META-INF/LICENSE.txt + 20305 Mon Sep 25 13:07:40 MDT 2006 META-INF/ra.xml + 2334 Mon Sep 25 13:07:40 MDT 2006 broker-config.xml + 70023 Mon Sep 25 19:00:48 MDT 2006 activemq-ra-4.0.2.jar +1351744 Mon Sep 25 19:00:14 MDT 2006 activemq-core-4.0.2.jar +232107 Mon Sep 25 18:22:48 MDT 2006 activeio-core-3.0-beta4.jar +2143211 Tue Aug 01 11:44:50 MDT 2006 derby-10.1.1.0.jar +1901653 Tue Aug 01 11:47:08 MDT 2006 spring-1.2.6.jar + 94713 Tue Aug 01 11:47:22 MDT 2006 xbean-spring-2.2.jar + 52915 Tue Aug 01 12:22:16 MDT 2006 commons-logging-1.1.jar + 16030 Tue Aug 01 12:22:32 MDT 2006 geronimo-j2ee-management\_1.0\_spec-1.0.jar +329586 Tue Aug 01 12:22:54 MDT 2006 backport-util-concurrent-2.1.jar +358085 Tue Aug 01 12:23:26 MDT 2006 log4j-1.2.12.jar + 523 Mon Sep 25 19:00:50 MDT 2006 META-INF/DISCLAIMER.txt + 11359 Mon Sep 25 19:00:50 MDT 2006 META-INF/LICENSE.txt + +This is simply a table of contents of the RAR file. There should only be one reason that this will fail - an incomplete download of the ActiveMQ tarball or zip file. Beyond that, depending on the version you download, some of the library versions may be slightly different. + +Now go back to the JBoss installation and create a directory for ActiveMQ in the JBoss deploy directory for the default JBoss context. Below are the commands to achieve this task: + +$ mkdir /opt/jboss-4.0.4.GA/server/default/deploy/activemq-ra.rar +$ cd /opt/jboss-4.0.4.GA/server/default/deploy/activemq-ra.rar +$ pwd +/opt/jboss-4.0.4.GA/server/default/deploy/activemq-ra.rar + +**_NOTE:_** The creation of a directory is not required but is the easiest way to set up the ActiveMQ RAR when you're just getting started. This is due to the flexibility it affords during the development phase for the configuration to be changed very easily. The alternative is to JAR up the directory as a RAR file once the configuration is solid enough that it no longer needs to be changed. But leaving everything in a directory during development is the easiest path. + +Now expand the activemq-ra-4.0.2.rar into the current working directory: + +jar xvf /opt/incubator-activemq-4.0.2/lib/optional/activemq-ra-4.0.2.rar + created: META-INF/ + inflated: META-INF/MANIFEST.MF + inflated: META-INF/DISCLAIMER.txt + inflated: META-INF/LICENSE.txt + inflated: META-INF/ra.xml + inflated: broker-config.xml + inflated: activemq-ra-4.0.2.jar + inflated: activemq-core-4.0.2.jar + inflated: activeio-core-3.0-beta4.jar + inflated: derby-10.1.1.0.jar + inflated: spring-1.2.6.jar + inflated: xbean-spring-2.2.jar + inflated: commons-logging-1.1.jar + inflated: geronimo-j2ee-management\_1.0\_spec-1.0.jar + inflated: backport-util-concurrent-2.1.jar + inflated: log4j-1.2.12.jar + inflated: META-INF/DISCLAIMER.txt + inflated: META-INF/LICENSE.txt + +Below is a quick listing of the contents of that directory: + +$ ls -l +total 12848 +drwxr-xr-x 6 bsnyder bsnyder 204 Oct 16 16:27 META-INF +-rw-r--r-- 1 bsnyder bsnyder 232107 Oct 16 16:27 activeio-core-3.0-beta4.jar +-rw-r--r-- 1 bsnyder bsnyder 1351744 Oct 16 16:27 activemq-core-4.0.2.jar +-rw-r--r-- 1 bsnyder bsnyder 70023 Oct 16 16:27 activemq-ra-4.0.2.jar +-rw-r--r-- 1 bsnyder bsnyder 329586 Oct 16 16:27 backport-util-concurrent-2.1.jar +-rw-r--r-- 1 bsnyder bsnyder 2334 Oct 16 16:27 broker-config.xml +-rw-r--r-- 1 bsnyder bsnyder 52915 Oct 16 16:27 commons-logging-1.1.jar +-rw-r--r-- 1 bsnyder bsnyder 2143211 Oct 16 16:27 derby-10.1.1.0.jar +-rw-r--r-- 1 bsnyder bsnyder 16030 Oct 16 16:27 geronimo-j2ee-management\_1.0\_spec-1.0.jar +-rw-r--r-- 1 bsnyder bsnyder 358085 Oct 16 16:27 log4j-1.2.12.jar +-rw-r--r-- 1 bsnyder bsnyder 1901653 Oct 16 16:27 spring-1.2.6.jar +-rw-r--r-- 1 bsnyder bsnyder 94713 Oct 16 16:27 xbean-spring-2.2.jar + +Now it's time to configure ActiveMQ. + +Configuring Apache ActiveMQ +--------------------------- + +The fifth step is to actually configure ActiveMQ for integration with JBoss. Remember that you should be sitting in the following directory: + +/opt/jboss-4.0.4.GA/server/default/deploy/activemq-ra.rar + +You may or may not have installed JBoss in `/opt`, that doesn't particularly matter. What does matter is that you're sitting in the directory that was created above to hold the contents of the expanded ActiveMQ RAR file. + +**_NOTE:_** A RAR file is a Resource adapter ARchive (RAR). Resource adapters are a concept from the [J2EE Connector Architecture (JCA)](http://java.sun.com/j2ee/connector/) and are used to interface with Enterprise Information Systems (EIS), i.e., systems external to the application server (e.g., relational databases, mainframes, MOMs, accounting systems, etc.). Resource adapters are often referred to as J2EE connectors and are very similar to the concept of a device driver for, say, a printer in that they contain information specific to connecting to a particular system. The difference with JCA is that that connection has been formalized in specification for Java. So the overall concepts of JCA is for connection to any EIS, but what does that mean? JCA 1.5 provides connectivity and more via the following contracts: + +Version 1.0 Contracts + +In version 1.0 of the Connector Architecture, three contracts are defined to address the functions mentioned above: + +* Connection Management Contract: Lets applications connect to an EIS through the resource adapter. It also allows the application server to pool connection requests to the EIS. +* Transaction Management Contract: Allows an application to manage and perform transactional access across one-to-many EIS resource managers. +* Security Contract: Provides support for secure access to the EIS. + +New Contracts in Version 1.5 + +In version 1.5 of the J2EE Connector Architecture, there are more contracts that a resource adapter must support, as new functionality and features made their way into the specification. A resource adapter can support these four new contracts by implementing the required interfaces defined in the specification for each contract. + +* Lifecycle Management Contract: Lets the application server manage the lifecycle – that is, the startup and shutdown functionality – of the resource adapter. +* Work Management Contract: Allows the resource adapter to do work by submitting it to an application server for execution. Since the application server does the work for the resource adapter, the resource adapter needn't worry about thread management. Instead, the application server manages this aspect efficiently and can use thread pooling if necessary. Although the work management contract is not required (the resource adapter can choose to manage its own thread for work), it is definitely recommended. +* Transaction Inflow Contract: Allows a resource adapter to propagate an imported transaction to an application server, as well as flow-in transaction completion and crash recovery initiated by an EIS. +* Message Inflow Contract: Allows the resource adapter to synchronously or asynchronously deliver messages to endpoints in the application server, irrespective of message style, semantics, and infrastructure. + +Quoted from [What's New in the J2EE Connector Architecture 1.5](http://java.sun.com/developer/technicalArticles/J2EE/connectorarch1_5/) + +For more information about JCA, please consult the [J2EE Connector Architecture documentation](http://java.sun.com/j2ee/connector/index.jsp). + +Open the `META-INF/ra.xml` file and look for the following section: + +**META-INF/ra.xml** + + + + The URL to the ActiveMQ server that you want this connection to connect to. If using + an embedded broker, this value should be 'vm://localhost'. + + ServerUrl + java.lang.String + tcp://localhost:61616 +vm://localhost --> + + +The section above is used to tell the ActiveMQ RAR where ActiveMQ is located. By default, the in-VM protocol is commented out in favor of the tcp protocol. This will find ActiveMQ running on any interface on the localhost on port 61616. It's ok to just leave this alone if you don't mind the inefficiency of communicating within the JVM via TCP. However, it is recommended that `vm://` transport be used for an embedded broker, so comment out the `tcp://` transport and uncomment the `vm://` transport. Below is an example of this: + +**META-INF/ra.xml** + + + + The URL to the ActiveMQ server that you want this connection to connect to. If using + an embedded broker, this value should be 'vm://localhost'. + + ServerUrl + java.lang.String + tcp://localhost:61616 --> + vm://localhost + + +Because we're embedding ActiveMQ inside of JBoss, it is more efficient to use the `vm://` transport, rather than to perform messaging over the `tcp://` transport. + +Now look further down the `META-INF/ra.xml` file and locate the following section: + +**META-INF/ra.xml** + + + + Sets the XML configuration file used to configure the embedded ActiveMQ broker via + Spring if using embedded mode. + + BrokerXmlConfig is the filename which is assumed to be on the classpath unless + a URL is specified. So a value of foo/bar.xml would be assumed to be on the + classpath whereas file:dir/file.xml would use the file system. + Any valid URL string is supported. + + BrokerXmlConfig + java.lang.String + + + + +The section above needs to be changed to uncomment the second to last line and remove/replace the empty element that is above it. Below is an example of how this should be changed: + +**META-INF/ra.xml** + + + + Sets the XML configuration file used to configure the embedded ActiveMQ broker via + Spring if using embedded mode. + + BrokerXmlConfig is the filename which is assumed to be on the classpath unless + a URL is specified. So a value of foo/bar.xml would be assumed to be on the + classpath whereas file:dir/file.xml would use the file system. + Any valid URL string is supported. + + BrokerXmlConfig + java.lang.String + xbean:broker-config.xml + + +This change tells the ActiveMQ RAR to read a configuration file named `broker-config.xml` (the `xbean:` that proceeds the filename is simply a hint to class doing the reading of the configuration file) which is located on the CLASSPATH. In this case, the `broker-config.xml` file is located in the `activemq-ra.rar` directory. Save the changes to that file and then open the `broker-config.xml` file. + +The `broker-config.xml` file _is_ the ActiveMQ configuration file. This is the file used to configure ActiveMQ. The default contents of this file are usable, but should be customized to suit your environment. There are several items of note about this configuration. The most prominent sections to note in this file are the `` element and the `` and `` elements as seen below: + +**broker-config.xml** + + + + + ... + + + + + + + + + + + + + + + + + + + + + +The first change to this file is to add the brokerName attribute to the broker element and provide a name: + + + +In addition, this same name is used further down the configuration to provide a name for the `` element: + + + +Now we'll tell ActiveMQ not to initialize JMX because we'll use the existing one that JBoss has: + + + + + + +The `` element should be reconfigured to store its data in an appropriate place. On JBoss, that's most likely within the "data" directory of the server configuration you're using. We're going to set this dynamically using an XBean and Spring feature that allows us to inject system properties values into the configuration. First this needs to be enabled: + + + + +Now, modify the `dataDirectory` attribute of the `journaledJDBC` element to be the following: `${jboss.server.data.dir}/activemq`. + +The `` element is used to advertise the ActiveMQ broker for client-to-broker communications and the `` element advertises the ActiveMQ broker for broker-to-broker communications. The default configuration is to use the ActiveMQ [multicast transport](http://www.activemq.org/site/multicast-transport-reference.html) for both. This is simply an easy configuration under which to get ActiveMQ up and running, so we'll just leave it at that for the time being. + +**_NOTE:_** There are far more configuration options available for ActiveMQ than are noted here. The configuration above is only enough to just get ActiveMQ up and running, nothing more. For more information on the ActiveMQ configuration, see the [ActiveMQ 4.1 XML Reference](http://www.activemq.org/site/xbean-xml-reference-41.html). + +Now we just need to start up JBoss to assure that it comes up correctly without error using the same commands we used previously to start JBoss: + +$ cd jboss-4.0.4.GA +$ ./bin/run.sh -c default +========================================================================= + + JBoss Bootstrap Environment + + JBOSS_HOME: /opt/jboss-4.0.4.GA + + JAVA: java + + JAVA_OPTS: -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 +-Dsun.rmi.dgc.server.gcInterval=3600000 -Dprogram.name=run.sh + + CLASSPATH: /opt/jboss-4.0.4.GA/bin/run.jar:/lib/tools.jar + +========================================================================= + +15:34:47,999 INFO \[Server\] Starting JBoss (MX MicroKernel)... +15:34:48,001 INFO \[Server\] Release ID: JBoss \[Zion\] 4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000) +15:34:48,004 INFO \[Server\] Home Dir: /opt/jboss-4.0.4.GA +15:34:48,005 INFO \[Server\] Home URL: file:/opt/jboss-4.0.4.GA/ +15:34:48,007 INFO \[Server\] Patch URL: null +15:34:48,007 INFO \[Server\] Server Name: default +15:34:48,007 INFO \[Server\] Server Home Dir: /opt/jboss-4.0.4.GA/server/default +15:34:48,011 INFO \[Server\] Server Home URL: file:/opt/jboss-4.0.4.GA/server/default/ +15:34:48,012 INFO \[Server\] Server Log Dir: /opt/jboss-4.0.4.GA/server/default/log +15:34:48,017 INFO \[Server\] Server Temp Dir: /opt/jboss-4.0.4.GA/server/default/tmp +15:34:48,022 INFO \[Server\] Root Deployment Filename: jboss-service.xml +... +15:35:17,360 INFO \[Server\] JBoss (MX MicroKernel) \[4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000)\] +Started in 28s:576ms + +As long as JBoss comes up without error, you're ready to move on to the next step. + +Configuring JBoss +----------------- + +The sixth step is to configure JBoss to initialize and start ActiveMQ whenever JBoss starts up. This is accomplished using an XML file that abides by the [JBoss JCA DTD](http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd) for data sources. Like most other Java application servers on the market, the JBoss architecture uses the J2EE Connector Architecture to manage connections of any kind including JDBC, JMS, etc. and the JBoss JCA DTD denotes the allowed contents for creating an XML data source instance to configure JBoss JCA. Below is an example XML data source instance for use with JBoss: + +**activemq-jms-ds.xml** + + + + + + + + + activemq/QueueConnectionFactory + + + activemq-ra.rar + javax.jms.QueueConnectionFactory + vm://localhost + + 1 + 200 + 30000 + 3 + + + + activemq/TopicConnectionFactory + + + activemq-ra.rar + javax.jms.TopicConnectionFactory + vm://localhost + + 1 + 200 + 30000 + 3 + + + + activemq/queue/outbound + jboss.jca:service=RARDeployment,name='activemq-ra.rar' + javax.jms.Queue + PhysicalName=queue.outbound + + + + activemq/topic/inbound + jboss.jca:service=RARDeployment,name='activemq-ra.rar' + javax.jms.Topic + PhysicalName=topic.inbound + + + + +This XML instance configures a JMS `QueueConnectionFactory` and a JMS `TopicConnectionFactory` and makes them available via JNDI. Also defined in this file are some {{AdminObject}}s which are used to specify a topic and a queue. This file should be dropped into the JBoss deploy directory. Its name (*-ds.xml) will cause it to be picked up by the JBoss deployer upon startup. Speaking of which, once this file is in place, a quick smoke test can be performed by simply starting up the JBoss server. Below is an example of the output that should be seen: + +========================================================================= + + JBoss Bootstrap Environment + + JBOSS_HOME: /opt/jboss + + JAVA: java + + JAVA_OPTS: -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 +-Dsun.rmi.dgc.server.gcInterval=3600000 -Dprogram.name=run.sh + + CLASSPATH: /opt/jboss/bin/run.jar:/lib/tools.jar + +========================================================================= + +22:55:48,686 INFO \[Server\] Starting JBoss (MX MicroKernel)... +22:55:48,688 INFO \[Server\] Release ID: JBoss \[Zion\] 4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000) +22:55:48,690 INFO \[Server\] Home Dir: /opt/jboss-4.0.4.GA +22:55:48,692 INFO \[Server\] Home URL: file:/opt/jboss-4.0.4.GA/ +22:55:48,695 INFO \[Server\] Patch URL: null +22:55:48,697 INFO \[Server\] Server Name: default +22:55:48,698 INFO \[Server\] Server Home Dir: /opt/jboss-4.0.4.GA/server/default +22:55:48,701 INFO \[Server\] Server Home URL: file:/opt/jboss-4.0.4.GA/server/default/ +22:55:48,702 INFO \[Server\] Server Log Dir: /opt/jboss-4.0.4.GA/server/default/log +22:55:48,704 INFO \[Server\] Server Temp Dir: /opt/jboss-4.0.4.GA/server/default/tmp +22:55:48,706 INFO \[Server\] Root Deployment Filename: jboss-service.xml +22:55:49,092 INFO \[ServerInfo\] Java version: 1.5.0_06,Apple Computer, Inc. +22:55:49,101 INFO \[ServerInfo\] Java VM: Java HotSpot(TM) Server VM 1.5.0_06-64,"Apple Computer, Inc." +22:55:49,102 INFO \[ServerInfo\] OS-System: Mac OS X 10.4.8,i386 +22:55:49,803 INFO \[Server\] Core system initialized +22:55:53,379 INFO \[WebService\] Using RMI server codebase: http://rattlesnake:8083/ +22:55:53,400 INFO \[Log4jService$URLWatchTimerTask\] Configuring from URL: resource:log4j.xml +22:55:54,034 INFO \[NamingService\] JNDI bootstrap JNP=/0.0.0.0:1099, RMI=/0.0.0.0:1098, backlog=50, +no client SocketFactory, Server SocketFactory=class +org.jboss.net.sockets.DefaultSocketFactory +22:55:58,475 INFO \[Embedded\] Catalina naming disabled +22:55:58,566 INFO \[ClusterRuleSetFactory\] Unable to find a cluster rule set in the classpath. +Will load the default rule set. +22:55:58,569 INFO \[ClusterRuleSetFactory\] Unable to find a cluster rule set in the classpath. +Will load the default rule set. +22:55:59,110 INFO \[Http11BaseProtocol\] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8080 +22:55:59,114 INFO \[Catalina\] Initialization processed in 545 ms +22:55:59,116 INFO \[StandardService\] Starting service jboss.web +22:55:59,121 INFO \[StandardEngine\] Starting Servlet Engine: Apache Tomcat/5.5.17 +22:55:59,179 INFO \[StandardHost\] XML validation disabled +22:55:59,221 INFO \[Catalina\] Server startup in 105 ms +22:55:59,600 INFO \[TomcatDeployer\] deploy, ctxPath=/invoker, warUrl=.../deploy/http-invoker.sar/invoker.war/ +22:55:59,874 INFO \[WebappLoader\] Dual registration of jndi stream handler: factory already defined +22:56:00,899 INFO \[TomcatDeployer\] deploy, ctxPath=/, warUrl=.../deploy/jbossweb-tomcat55.sar/ROOT.war/ +22:56:01,700 INFO \[TomcatDeployer\] deploy, ctxPath=/jbossws, warUrl=.../tmp/deploy/tmp60528jbossws-exp.war/ +22:56:01,891 INFO \[SubscriptionManager\] Bound event dispatcher to java:/EventDispatcher +22:56:02,203 INFO \[TomcatDeployer\] deploy, ctxPath=/jbossmq-httpil, +warUrl=.../deploy/jms/jbossmq-httpil.sar/jbossmq-httpil.war/ +22:56:04,546 INFO \[TomcatDeployer\] deploy, ctxPath=/web-console, +warUrl=.../deploy/management/console-mgr.sar/web-console.war/ +22:56:05,690 INFO \[MailService\] Mail Service bound to java:/Mail +22:56:07,215 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/activemq-ra.rar/ +22:56:07,452 INFO \[XBeanXmlBeanDefinitionReader\] Loading XML bean definitions from class +path resource \[broker-config.xml\] +22:56:07,750 INFO \[ClassPathXmlApplicationContext\] Bean factory for application context +\[org.apache.xbean.spring.context.ClassPathXmlApplicationContext;hashCode=13887543\]: +org.springframework.beans.factory.support.DefaultListableBeanFactory defining +beans \[org.apache.activemq.xbean.XBeanBrokerService\]; root of BeanFactory hierarchy +22:56:07,765 INFO \[ClassPathXmlApplicationContext\] 1 beans defined in application context +\[org.apache.xbean.spring.context.ClassPathXmlApplicationContext;hashCode=13887543\] +22:56:07,773 INFO \[CollectionFactory\] JDK 1.4+ collections available +22:56:07,778 INFO \[ClassPathXmlApplicationContext\] Unable to locate MessageSource with name +'messageSource': using default +\[org.springframework.context.support.DelegatingMessageSource@5fee96\] +22:56:07,781 INFO \[ClassPathXmlApplicationContext\] Unable to locate ApplicationEventMulticaster +with name 'applicationEventMulticaster': using default +\[org.springframework.context.event.SimpleApplicationEventMulticaster@78c714\] +22:56:07,783 INFO \[DefaultListableBeanFactory\] Pre-instantiating singletons in factory + \[org.springframework.beans.factory.support.DefaultListableBeanFactory +defining beans \[org.apache.activemq.xbean.XBeanBrokerService\]; root of BeanFactory hierarchy\] +22:56:08,181 INFO \[BrokerService\] ActiveMQ 4.0.2 JMS Message Broker (bruce.broker1) is starting +22:56:08,181 INFO \[BrokerService\] For help or more information please see: +http://incubator.apache.org/activemq/ +22:56:09,989 INFO \[JDBCPersistenceAdapter\] Database driver recognized: +\[apache\_derby\_embedded\_jdbc\_driver\] +22:56:11,026 INFO \[JournalPersistenceAdapter\] Journal Recovery Started from: Active Journal: +using 5 x 20.0 Megs at: /opt/jboss-4.0.4.GA/activemq-data/journal +22:56:11,169 INFO \[JournalPersistenceAdapter\] Journal Recovered: 0 message(s) in transactions recovered. +22:56:11,489 INFO \[TransportServerThreadSupport\] Listening for connections at: tcp://rattlesnake:61616 +22:56:11,491 WARN \[MulticastDiscoveryAgent\] brokerName not set +22:56:11,519 INFO \[TransportConnector\] Connector bruce.broker1 Started +22:56:11,522 INFO \[NetworkConnector\] Network Connector bridge Started +22:56:11,522 INFO \[BrokerService\] ActiveMQ JMS Message Broker +(bruce.broker1, ID:rattlesnake-59052-1161060967859-1:0) started +22:56:11,556 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jboss-ha-local-jdbc.rar +22:56:11,599 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jboss-ha-xa-jdbc.rar +22:56:11,623 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jboss-local-jdbc.rar +22:56:11,647 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jboss-xa-jdbc.rar +22:56:11,737 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/jms/jms-ra.rar +22:56:11,847 INFO \[RARDeployment\] Required license terms exist, view META-INF/ra.xml in +.../deploy/mail-ra.rar +22:56:12,251 INFO \[ConnectionFactoryBindingService\] Bound ConnectionManager +'jboss.jca:service=ConnectionFactoryBinding,name=activemq/QueueConnectionFactory' to +JNDI name 'java:activemq/QueueConnectionFactory' +22:56:12,258 INFO \[ConnectionFactoryBindingService\] Bound ConnectionManager +'jboss.jca:service=ConnectionFactoryBinding,name=activemq/TopicConnectionFactory' to +JNDI name 'java:activemq/TopicConnectionFactory' +22:56:12,265 INFO \[AdminObject\] Bound admin object 'org.apache.activemq.command.ActiveMQQueue' +at 'activemq/queue/outbound' +22:56:12,330 INFO \[AdminObject\] Bound admin object 'org.apache.activemq.command.ActiveMQTopic' +at 'activemq/topic/inbound' +22:56:13,246 INFO \[ConnectionFactoryBindingService\] Bound ConnectionManager +'jboss.jca:service=DataSourceBinding,name=DefaultDS' to JNDI name 'java:DefaultDS' +22:56:13,842 INFO \[A\] Bound to JNDI name: queue/A +22:56:13,845 INFO \[B\] Bound to JNDI name: queue/B +22:56:13,846 INFO \[C\] Bound to JNDI name: queue/C +22:56:13,848 INFO \[D\] Bound to JNDI name: queue/D +22:56:13,850 INFO \[ex\] Bound to JNDI name: queue/ex +22:56:13,876 INFO \[testTopic\] Bound to JNDI name: topic/testTopic +22:56:13,879 INFO \[securedTopic\] Bound to JNDI name: topic/securedTopic +22:56:13,880 INFO \[testDurableTopic\] Bound to JNDI name: topic/testDurableTopic +22:56:13,883 INFO \[testQueue\] Bound to JNDI name: queue/testQueue +22:56:13,994 INFO \[UILServerILService\] JBossMQ UIL service available at : /0.0.0.0:8093 +22:56:14,055 INFO \[DLQ\] Bound to JNDI name: queue/DLQ +22:56:14,375 INFO \[ConnectionFactoryBindingService\] Bound ConnectionManager +'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA' +22:56:14,525 INFO \[TomcatDeployer\] deploy, ctxPath=/jmx-console, warUrl=.../deploy/jmx-console.war/ +22:56:14,991 INFO \[Http11BaseProtocol\] Starting Coyote HTTP/1.1 on http-0.0.0.0-8080 +22:56:15,071 INFO \[ChannelSocket\] JK: ajp13 listening on /0.0.0.0:8009 +22:56:15,082 INFO \[JkMain\] Jk running ID=0 time=0/25 config=null +22:56:15,108 INFO \[Server\] JBoss (MX MicroKernel) \[4.0.4.GA (build: CVSTag=JBoss\_4\_0\_4\_GA date=200605151000)\] +Started in 26s:398ms + +Note the startup messages from both ActiveMQ and from the `AdminObject}}s creating an {{ActiveMQQueue` and an `ActiveMQTopic`. These are good indications that the configuration is correct, but needs to be verified a bit further. This is covered in the next section. + +Testing the Integration +----------------------- + +The seventh and final step is to perform a slightly more comprehensive smoke test of the integration. This can be accomplished using Apache Ant via the examples that come with the ActiveMQ binary distribution. An Ant build.xml file is included which provides easy access to a simple consumer and a simple producer. The producer will be used to send messages that are received by the consumer. To proceed with this testing, just follow the steps below: + +1. In the first terminal, start up JBoss. The same startup script can be used here as was used above. +2. In the second terminal, use the commands below to run the ActiveMQ consumer: + + $ cd /opt/incubator-activemq-4.0.2/examples #note in activemq v5 the directory is just "example" not "examples" + $ ant consumer + Buildfile: build.xml + + init: + \[mkdir\] Created dir: /opt/incubator-activemq-4.0.2/example/target/classes + \[mkdir\] Created dir: /opt/incubator-activemq-4.0.2/example/src/ddl + + compile: + \[javac\] Compiling 6 source files to /opt/incubator-activemq-4.0.2/example/target/classes + + consumer: + \[echo\] Running consumer against server at $url = tcp://localhost:61616 for subject $subject = TEST.FOO + \[java\] Connecting to URL: tcp://localhost:61616 + \[java\] Consuming queue: TEST.FOO + \[java\] Using non-durable subscription + \[java\] We are about to wait until we consume: 10 message(s) then we will shutdown + +3. In the third terminal, use the commands below to run the ActiveMQ producer: + + $ cd /opt/incubator-activemq-4.0.2/examples + $ ant producer + Buildfile: build.xml + + init: + + compile: + + producer: + \[echo\] Running producer against server at $url = tcp://localhost:61616 for subject $subject = TEST.FOO + \[java\] Connecting to URL: tcp://localhost:61616 + \[java\] Publishing a Message with size 1000 to queue: TEST.FOO + \[java\] Using non-durable publishing + \[java\] Sleeping between publish 0 ms + \[java\] Sending message: Message: 0 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 1 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 2 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 3 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 4 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 5 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 6 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 7 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 8 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Sending message: Message: 9 sent at: Mon Oct 16 23:21:08 MDT 2006 ... + \[java\] Done. + \[java\] connection { + \[java\] session { + \[java\] messageCount{ count: 10 unit: count startTime: 1161062468001 lastSampleTime: + 1161062468340 description: Number of messages exchanged } + \[java\] messageRateTime{ count: 10 maxTime: 142 minTime: 1 totalTime: 315 averageTime: 31.5 + averageTimeExMinMax: 21.5 averagePerSecond: 31.746031746031747 + averagePerSecondExMinMax: 46.51162790697674 unit: millis startTime: 1161062468002 lastSampleTime: + 1161062468340 description: Time taken to process a message (thoughtput rate) } + \[java\] pendingMessageCount{ count: 0 unit: count startTime: 1161062468001 lastSampleTime: + 1161062468001 description: Number of pending messages } + \[java\] expiredMessageCount{ count: 0 unit: count startTime: 1161062468001 lastSampleTime: + 1161062468001 description: Number of expired messages } + \[java\] messageWaitTime{ count: 0 maxTime: 0 minTime: 0 totalTime: 0 averageTime: 0.0 + averageTimeExMinMax: 0.0 averagePerSecond: 0.0 + averagePerSecondExMinMax: 0.0 unit: millis startTime: 1161062468002 lastSampleTime: 1161062468002 + description: Time spent by a message before being delivered } + \[java\] durableSubscriptionCount{ count: 0 unit: count startTime: 1161062468002 lastSampleTime: + 1161062468002 description: The number of durable + subscriptions } + + \[java\] producers { + \[java\] producer queue://TEST.FOO { + \[java\] messageCount{ count: 10 unit: count startTime: 1161062468025 lastSampleTime: + 1161062468340 description: Number of messages processed } + \[java\] messageRateTime{ count: 10 maxTime: 142 minTime: 1 totalTime: 315 averageTime: + 31.5 averageTimeExMinMax: 21.5 averagePerSecond: + 31.746031746031747 averagePerSecondExMinMax: 46.51162790697674 unit: millis startTime: 1161062468025 + lastSampleTime: 1161062468340 description: Time taken to + process a message (thoughtput rate) } + \[java\] pendingMessageCount{ count: 0 unit: count startTime: 1161062468025 lastSampleTime: + 1161062468025 description: Number of pending messages } + \[java\] messageRateTime{ count: 10 maxTime: 142 minTime: 1 totalTime: 315 averageTime: 31.5 + averageTimeExMinMax: 21.5 averagePerSecond: + 31.746031746031747 averagePerSecondExMinMax: 46.51162790697674 unit: millis startTime: 1161062468025 + lastSampleTime: 1161062468340 description: Time taken to + process a message (thoughtput rate) } + \[java\] expiredMessageCount{ count: 0 unit: count startTime: 1161062468025 lastSampleTime: + 1161062468025 description: Number of expired messages } + \[java\] messageWaitTime{ count: 0 maxTime: 0 minTime: 0 totalTime: 0 averageTime: 0.0 + averageTimeExMinMax: 0.0 averagePerSecond: 0.0 + averagePerSecondExMinMax: 0.0 unit: millis startTime: 1161062468025 lastSampleTime: 1161062468025 + description: Time spent by a message before being delivered } + \[java\] } + \[java\] } + \[java\] consumers { + \[java\] } + \[java\] } + \[java\] } + + +Step 1 above just starts up JBoss. Step 2 above starts up a simple message consumer that comes with ActiveMQ. Step 3 above starts up a simple message producer that comes with ActiveMQ. Though the message consumer and message producer are simple utilities, the each one accepts many parameters making them extremely useful for testing ActiveMQ configurations. + +To paraphrase, what just happened was that the message producer sent 10 messages to the TEST.FOO destination and the message consumer received 10 messages from the TEST.FOO destination. Despite being a simple test, it does utilize the ActiveMQ broker, albeit only on a single machine. The next logical step is to set up a full network of ActiveMQ brokers. + +After setting up one broker within one instance of JBoss, setting up another is made much easier, but requires another machine or operating system instance. But that's a whole separate article and something to address another day. + +Conclusion +---------- + +What has been demonstrated here is the integration of ActiveMQ with the JBoss application server. This integration is quite common and performed by many enterprises. I hope that this was helpful to people interested in the integration of ActiveMQ with JBoss application server. If you have any questions or are interested in consulting services surrounding ActiveMQ, please [contact us](http://www.logicblaze.com/contact.jsp) for more information. + +### Resources + +Below are the configurations for use with both Spring 1.x and Spring 2.x: + + + +  + +[File](integrating-apache-activemq-with-jboss.html?sortBy=name&sortOrder=ascending) + +[Modified](integrating-apache-activemq-with-jboss.html?sortBy=date&sortOrder=descending) + +File [amq-spring-1.2.6.tgz](jboss-integration.data/amq-spring-1.2.6.tgz?api=v2 "Download") + +Oct 03, 2007 by [Bruce Snyder](https://cwiki.apache.org/confluence/display/~bsnyder) + +Labels + +* No labels +* [Edit Labels](# "Edit Labels") + +Preview + +File [amq-spring-2.0.tgz](jboss-integration.data/amq-spring-2.0.tgz?api=v2 "Download") + +Oct 03, 2007 by [Bruce Snyder](https://cwiki.apache.org/confluence/display/~bsnyder) + +Labels + +* No labels +* [Edit Labels](# "Edit Labels") + +Preview + +[Download All](/confluence/pages/downloadallattachments.action?pageId=67786 "Download all the latest versions of attachments on this page as single zip file.") + diff --git a/jca-container.md b/jca-container.md new file mode 100644 index 0000000..e180bbf --- /dev/null +++ b/jca-container.md @@ -0,0 +1,58 @@ +Apache ActiveMQ ™ -- JCA Container + +[Connectivity](connectivity.html) > [Containers](containers.html) > [JCA Container](jca-container.html) + + +The JCA Container is moving + +We will continune to support the ActiveMQ JCA Container up until ActiveMQ 3.1. + +After that point we will be moving to [Jencks](http://jencks.codehaus.org/) which is a migration of the ActiveMQ codebase together with code [Geronimo](http://geronimo.apache.org) and from some other contributors. + +Jencks is completely logically equivalent to the ActiveMQ JCA Container and migrating to it is pretty simple (mostly just a class name change for the JCA container) - though the benefits of Jencks are that it supports full XA recovery and works well with Geronimo's TransactionManager and WorkManager. + +So we do recommend you migrate to [Jencks](http://jencks.codehaus.org/) whenever its easy for you to do so; projects such as [Lingo](http://lingo.codehaus.org/) and [ServiceMix](http://servicemix.org/) already have and it was an easy migration. + +We have a lightweight, easily embeddable Spring based JCA container which allows us to provide MDB like functionality inside any Java application without requiring a full EJB container. + +This allows us to support _message driven pojos_ using dependency injection for efficient JMS consumption together with pooling of the pojos using lightweight containers rather than relying on EJB. + +The JCA container also makes it easy to programatically at runtime create new message driven pojos rather than relying on the fixed deployment-time only option with EJB. + +Example +------- + +Here is [an example](http://docs.codehaus.org/download/attachments/23776/spring.xml) of the Spring XML to deploy a pojo (EchoBean) on an inbound JMS subscription, on a topic in this particular example. + +Firstly we can create as many JCAContainer instances as we need; currently we create one per JCA [Resource Adapter](resource-adapter.html) (i.e. JMS provider). The JCAContainer also uses a WorkManager which is JCA speak for a bunch of thread pools. We can share the WorkManager across JCAContainer instances or create one per JCAContainer. + +Once we have a JCAContainer we can add as many JCAConnector instances to it, via the **addConnector** factory method, each one representing a JMS subscription and providing a pool of POJOs to process the message. The subscription details are specified by an activationSpec property which is a bean typically dependent on the JMS provider; this allows providers to add new extensions while leaving your application code pure JMS. + +Notice that the regular Spring pooling mechanism, the **targetSource** property, is used to pool the actual POJO and that Spring uses Dependency Injection to construct instances of the POJO. + +**Note** you must set the **singleton** flag to false for the POJOs if they are not thread safe. + +Requirements +------------ + +To be able to use the JCA container, you just need the following jars on your classpath + +* [required ActiveMQ jars](initial-configuration.html) if you are using ActiveMQ as your JMS provider - or your provider's jars if not +* activemq-container.jar +* spring.jar +* J2EE.jar (for the JCA APIs). If you are inside Tomcat, it doesn't like j2ee.jar on the classpath, so use the individual jars from Geronimo - e.g. geronimo-spec-j2ee-connector-*.jar for the JCA APIs +* commons-collections.jar +* commons-pool.jar +* aopalliance.jar (a temporary dependency introduced by Spring's use of the TargetSource, we should be able to remove this dependency later on). + +**Note** the classes and resources in activemq-container.jar are not included in activemq.jar + +To use the JCA Container please use the 2.x code release. Several problems were found and fixed with the 1.x branch of code. + +Things to watch +--------------- + +By default the ActiveMQ [Resource Adapter](resource-adapter.html) will try to connect to a remote broker (ie. tcp://localhost:61616). Also if you want to set how the broker is configured via XML then try the _brokerXmlConfig_ property. + +_Note:_ In AMQ 3.x the default behavior is the ActiveMQ resource adapter will create an embedded broker + diff --git a/jdbc-master-slave.md b/jdbc-master-slave.md new file mode 100644 index 0000000..9803c52 --- /dev/null +++ b/jdbc-master-slave.md @@ -0,0 +1,131 @@ +Apache ActiveMQ ™ -- JDBC Master Slave + +[Features](features.html) > [Clustering](clustering.html) > [MasterSlave](masterslave.html) > [JDBC Master Slave](jdbc-master-slave.html) + + +JDBC Master Slave +----------------- + +First supported in ActiveMQ version 4.1 + +If you are using pure JDBC and not using the high performance journal then you are generally relying on your database as your single point of failure and persistence engine. If you do not have really high performance requirements this approach can make a lot of sense as you have a single persistence engine to backup and manage etc. + +### Startup + +When using just JDBC as the data source you can use a Master Slave approach, running as many brokers as you wish as this diagram shows. On startup one master grabs an exclusive lock in the broker database - all other brokers are slaves and pause waiting for the exclusive lock. + +![](jdbc-master-slave.data/Startup.png) + +Clients should be using the [Failover Transport](failover-transport-reference.html) to connect to the available brokers. e.g. using a URL something like the following + +failover:(tcp://broker1:61616,tcp://broker2:61616,tcp://broker3:61616) + +Only the master broker starts up its transport connectors and so the clients can only connect to the master. + +### Master failure + +If the master looses connection to the database or looses the exclusive lock then it immediately shuts down. If a master shuts down or fails, one of the other slaves will grab the lock and so the topology switches to the following diagram + +![](jdbc-master-slave.data/MasterFailed.png) + +One of the other other slaves immediately grabs the exclusive lock on the database to them commences becoming the master, starting all of its transport connectors. + +Clients loose connection to the stopped master and then the failover transport tries to connect to the available brokers - of which the only one available is the new master. + +### Master restart + +At any time you can restart other brokers which join the cluster and start as slaves waiting to become a master if the master is shutdown or a failure occurs. So the following topology is created after a restart of an old master... + +![](jdbc-master-slave.data/MasterRestarted.png) + +### Configuring JDBC Master Slave + +By default if you use the **** to avoid the high performance journal you will be using JDBC Master Slave by default. You just need to run more than one broker and point the client side URIs to them to get master/slave. This works because they both try an acquire an exclusive lock on a shared table in the database and only one will succeed. + +The following example shows how to configure the ActiveMQ broker in JDBC Master Slave mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + --\> + + + + + + + + + + + + + + + + + + + + + + \-\-> + + + + + + + + + + \-\-\> + + + + + + + + --\> + + + diff --git a/jdbc-support.md b/jdbc-support.md new file mode 100644 index 0000000..51638c8 --- /dev/null +++ b/jdbc-support.md @@ -0,0 +1,78 @@ +Apache ActiveMQ ™ -- JDBC Support + +[Features](features.html) > [Persistence](persistence.html) > [JDBC Support](jdbc-support.html) + + +We support a range of SQL databases for message persistence such as + +* Apache Derby +* Axion +* DB2 +* HSQL +* Informix +* MaxDB +* MySQL +* Oracle +* Postgresql +* [SQLServer](sqlserver.html) +* [Sybase](sybase.html) + +as well as a number of generic JDBC providers. + +### Auto-discovery of your JDBC provider + +We try to auto-detect from the JDBC driver which JDBCAdapter to use via these [config files](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tree;f=activemq-jdbc-store/src/main/resources/META-INF/services/org/apache/activemq/store/jdbc) and the return string from the JDBC driver. + +If you have a JDBC database which we don't support then please let us know what JDBC driver string you're getting and [drop us a note](discussion-forums.html) or raise an issue in our [support database](http://issues.apache.org/activemq/browse/AMQ) and we'll fix it pretty quickly. + +If your database is not in the above list it is normally a matter of tweaking the StatementProvider to ensure that the JDBCMessageStore uses the right flavour of SQL. So normally most databases support one of these providers... + +* org.activemq.store.jdbc.adapter.BlobJDBCAdapter +* org.activemq.store.jdbc.adapter.BytesJDBCAdapter +* org.activemq.store.jdbc.adapter.DefaultJDBCAdapter +* org.activemq.store.jdbc.adapter.ImageJDBCAdapter + +You can explicitly specify the JDBC adaptor using its xbean identifier, inside the activemq.xml... + + + +### Customizing the SQL DDL + +You can confiugure the various SQL datatypes - such as column sizes and so forth - using the statements element + + + + + + + + + + + + + +For more info on what attributes can be set on the statements element, see the [Statements class](http://activemq.apache.org/maven/apidocs/org/apache/activemq/store/jdbc/Statements.html). All the settable bean properties can be used as attributes of the element. + +### Using MySQL + +If you are using MySQL then you should set the **relaxAutoCommit** flag to be true. e.g. + + + + + + + + + +To see this in action see the [default configuration file](http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/conf/activemq.xml) + +### For AMQ 3.x + +In 3.x you can specify the adapter as follows + + + ... + + diff --git a/jmeter-performance-tests.md b/jmeter-performance-tests.md new file mode 100644 index 0000000..390c70d --- /dev/null +++ b/jmeter-performance-tests.md @@ -0,0 +1,83 @@ +Apache ActiveMQ ™ -- JMeter Performance Tests + +[Developers](developers.html) > [JMeter Performance Tests](jmeter-performance-tests.html) + + +### JMeter performance test + +You can use JMeter to test the performance of your ActiveMQ Server. Please refer to the [JMeter site](http://jakarta.apache.org/jmeter/) for detailed instructions on using this software. + +### Downloading the JMeter Performance Test Binary + +You can download the latest activemq-jmeter-*.zip distribution from the following + +* [Apache ActiveMQ versions](http://people.apache.org/repository/incubator-activemq/distributions/) +* [3.x versions of ActiveMQ](http://dist.codehaus.org/activemq/distributions/). + +### Building the JMeter Performance Test from source + +1\. Check out the latest head version of ActiveMQ from [Source](source.html). Build from source. + +2\. Run maven from the JMeter directory. This will build JMeter into the target directory. + +3\. Run JMeter.bat from the \\bin directory to start JMeter. + +4\. There are sample Test Plans located at \\bin\\testfiles directory that you could open to test ActiveMQ. + +### Building a Test Plan + +For a Producer Sampler +1\. Add a Thread Group. +2\. Add the producer sampler "Producer Sampler" from the Sampler menu. +3\. Highlight the Producer Sampler then right click to add the producer listener "View Producer Results" from the Listener menu. +4\. Go to the Thread Group element and set the Number of Threads, Ramp-Up Period and Loop Count to 1. + +For a Consumer Sampler +1\. Add a Thread Group. +2\. Add the consumer sampler "Consumer Sampler" from the Sampler menu. +3\. Highlight the Consumer Sampler then right click to add the consumer listener "View Consumer Results" from the Listener menu. +4\. Go to the Thread Group element and set the Number of Threads, Ramp-Up Period and Loop Count to 1. + +### The JMeter Performance Test Module consists of: + +1\. JMeter Producer Sampler + +* A JMeter Sampler tells JMeter to send requests to the server. Pluggable Samplers allow unlimited testing capabilities. + +* The Producer Sampler will send messages to an ActiveMQ Server. + +The Producer Sampler has the following parameters: + +* Server URL - defines the server url i.e. tcp://localhost:61616 +* Duration (min) - the duration of the test. +* Ramp Up (min) - the time in which the Producer will reach it's stable/peak state. +* No. of Producer - The number of Producer that would be sending the message. +* No. of Subject - The number of Subject that would be created then send. Note that the number of Subject should be less than or equal to the No. of Producer. +* Message Size (bytes) - The size of the message to send. +* Delivery Mode - Default is Non-Persistent. +* Messaging Domain - Default is Topic +* Message Interval - Default/Custom Interval. When Custom Interval was Selected user must provide Interval Value (mins). +* Message Queue Servers - List of available MQ Servers. + +2\. JMeter Producer Listener + +* Listeners provide access to the information JMeter gathers about the test cases while JMeter runs. +* The Producer Listener would provide statistics with the number of messages sent and average messages per second. + +3\. JMeter Consumer Sampler + +The Consumer Sampler has the following parameters: + +* Server URL - defines the server url i.e. tcp://localhost:61616 +* Duration (min) - the duration of the test. +* Ramp Up (min) - the time in which the Producer will reach it's stable/peak state. +* No. of Consumer - The number of Consumer that would be sending the message. +* No. of Subject - The number of Subject that would be created then send. Note that the number of Subject should be less than or equal to the No. of Consumer. +* Delivery Mode - Default is non-Durable. +* Messaging Domain - Default is Topic. +* Message Queue Servers - List of available MQ Servers. + +4\. JMeter Consumer Listener + +* The Consumer Listener would provide statistics with the number of messages received and average messages per second. + diff --git a/jmeter-system-tests.md b/jmeter-system-tests.md new file mode 100644 index 0000000..b0691a6 --- /dev/null +++ b/jmeter-system-tests.md @@ -0,0 +1,58 @@ +Apache ActiveMQ ™ -- JMeter System Tests + +[Developers](developers.html) > [JMeter System Tests](jmeter-system-tests.html) + + +### JMeter System Tests + +You can use JMeter to test your ActiveMQ Server. Please refer to the JMeter site for detailed instructions on using this software. +The Test would check for duplicate messages and the order of messages received. + +### Building a Test Plan + +For a Producer System Test Sampler +1\. Add a Thread Group. +2\. Add the producer sampler "Producer System Test Sampler" from the Sampler menu. +3\. Go to the Thread Group element and set the Number of Threads, Ramp-Up Period and Loop Count to 1. + +For a Consumer Sampler +1\. Add the consumer sampler "Consumer System Test Sampler" from the Sampler menu. +2\. Highlight te Consumer Sampler then right click to add the consumer listener "View Producer System Test Results" from the Listener menu. + +### The JMeter System Test Module is consist of: + +1\. JMeter Producer System Test Sampler + +* A JMeter Sampler tells JMeter to send requests to the server. Pluggable Samplers allow unlimited testing capabilities. + +* The Producer System Test Sampler will send messages to an ActiveMQ Server. + +The Producer System Test Sampler has the following parameters: + +* Server URL - defines the server url i.e. tcp://localhost:61616 +* No. of Producer - The number of Producer that would be sending the message. +* No. of Subject - The number of Subject that would be created then send. Note that the number of Subject should be less than or equal to the No. of Producer. +* Number of Message - The number of the messages to send. +* Delivery Mode - Default is Non-Persistent. +* Messaging Domain - Default is Topic + +2\. JMeter Consumer System Test Sampler + +The Consumer Sampler has the following parameters: + +* Server URL - defines the server url i.e. tcp://localhost:61616 +* No. of Consumer - The number of Consumer that would be sending the message. +* No. of Subject - The number of Subject that would be created then send. Note that the number of Subject should be less than or equal to the No. of Consumer. +* Delivery Mode - Default is non-Durable. +* Messaging Domain - Default is Topic. + +3\. JMeter Producer System Test Listener + +* Listeners provide access to the information JMeter gathers about the test cases while JMeter runs. +* The Producer System Test Listener would provide the Consumer Identifier, Producer Name, Message and Message Count. + +* Consumer Identifier - Identifies the Consumer that received the message. +* Producer Name - Producer name that send the message. +* Message - The message body received. +* Message Count - The number of messages received. + diff --git a/jms-and-jdbc-operations-in-one-transaction.md b/jms-and-jdbc-operations-in-one-transaction.md new file mode 100644 index 0000000..b4b7ad0 --- /dev/null +++ b/jms-and-jdbc-operations-in-one-transaction.md @@ -0,0 +1,155 @@ +Apache ActiveMQ ™ -- JMS and JDBC operations in one transaction + +[Using ActiveMQ](using-activemq.html) > [User Submitted Configurations](user-submitted-configurations.html) > [JMS and JDBC operations in one transaction](jms-and-jdbc-operations-in-one-transaction.html) + + +### JMS and JDBC operations in one transaction with Spring/Jencks/ActiveMQ + +Spring beans: + + + + + + + + tcp://localhost:5000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tcp://localhost:5000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Java code: + +public class EchoBean implements MessageListener { + + private Log log = LogFactory.getLog(getClass()); + + private JdbcTemplate jdbcTemplate; + private JmsTemplate jmsTemplate; + + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public void setJmsTemplate(JmsTemplate jmsTemplate) { + this.jmsTemplate = jmsTemplate; + } + + public void onMessage(Message message) { + log.debug(message); + if (message instanceof TextMessage) { + try { + String messageText = ((TextMessage)message).getText(); + log.debug("execute JMS operation"); + jmsTemplate.convertAndSend("messages.ouptut", messageText); + log.debug("execute JDBC operation"); + jdbcTemplate.execute("insert into t1 values('"+messageText+"')"); + } catch (JMSException e) { + e.printStackTrace(); + } + } + } +} + diff --git a/jms-bridge-with-local-broker.md b/jms-bridge-with-local-broker.md new file mode 100644 index 0000000..dbe7c58 --- /dev/null +++ b/jms-bridge-with-local-broker.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- JMS Bridge With Local Broker + +[Using ActiveMQ](using-activemq.html) > [User Submitted Configurations](user-submitted-configurations.html) > [JMS Bridge With Local Broker](jms-bridge-with-local-broker.html) + + +### Example of a configuration that shows how to use a BridgeConnector to make a connection to the local ActiveMQ broker. + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jms-bridge-with-oracle-aq.md b/jms-bridge-with-oracle-aq.md new file mode 100644 index 0000000..c0f1d98 --- /dev/null +++ b/jms-bridge-with-oracle-aq.md @@ -0,0 +1,115 @@ +Apache ActiveMQ ™ -- JMS Bridge With Oracle AQ + +[Using ActiveMQ](using-activemq.html) > [User Submitted Configurations](user-submitted-configurations.html) > [JMS Bridge With Oracle AQ](jms-bridge-with-oracle-aq.html) + + +### Example of a configuration that shows how to connect to Oracle AQ queues and topics. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS\_LIST ....... (SERVICE\_NAME = myDbService))) + + + + + + + + + jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS\_LIST ....... (SERVICE\_NAME = myDbService))) + + + + + + + + + + + + foo + + + bar + + + + + + + + + foo + + + bar + + + + + + + + + + + + +If you run in an OSGi environment such as [ServiceMix 4](http://servicemix.apache.org) then take a look at [this discussion](http://servicemix.396122.n5.nabble.com/ServiceMix-4-2-Camel-OracleAQ-td421214.html#a421214) how to install the OracleAQ Client in the OSGi container. + +#### Oracle SQL code + +You may need to setup OracleAQ, and here is a sample code + +BEGIN + DBMS\_AQADM.CREATE\_QUEUE\_TABLE( queue\_table => 'queue\_message\_table', queue\_payload\_type => 'SYS.AQ$\_JMS\_TEXT_MESSAGE'); +END; + +BEGIN + DBMS\_AQADM.CREATE\_QUEUE( queue\_name => 'ORACLE\_QUEUE', queue\_table => 'queue\_message_table'); +END; + +BEGIN + DBMS\_AQADM.START\_QUEUE(queue\_name => 'ORACLE\_QUEUE'); +END; + +You can also find more information about OracleAQ and using JMS at: [http://docs.oracle.com/cd/B13789\_01/server.101/b10785/jm\_exmpl.htm](http://docs.oracle.com/cd/B13789_01/server.101/b10785/jm_exmpl.htm) + diff --git a/jms-bridge-with-remote-broker.md b/jms-bridge-with-remote-broker.md new file mode 100644 index 0000000..14136fe --- /dev/null +++ b/jms-bridge-with-remote-broker.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- JMS Bridge With Remote Broker + +[Using ActiveMQ](using-activemq.html) > [User Submitted Configurations](user-submitted-configurations.html) > [JMS Bridge With Remote Broker](jms-bridge-with-remote-broker.html) + + +### Example of a configuration that shows how to use a BridgeConnector to make a connection to a remote ActiveMQ broker. + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jms-bridge-with-remote-tibco-broker.md b/jms-bridge-with-remote-tibco-broker.md new file mode 100644 index 0000000..a3aa58e --- /dev/null +++ b/jms-bridge-with-remote-tibco-broker.md @@ -0,0 +1,41 @@ +Apache ActiveMQ ™ -- JMS Bridge With Remote TIBCO Broker + +[Using ActiveMQ](using-activemq.html) > [User Submitted Configurations](user-submitted-configurations.html) > [JMS Bridge With Remote TIBCO Broker](jms-bridge-with-remote-tibco-broker.html) + + +### Example of a configuration that shows how to use a BridgeConnector to make a connection to a remote TIBCO EMS broker. + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jms-streams.md b/jms-streams.md new file mode 100644 index 0000000..14e5e79 --- /dev/null +++ b/jms-streams.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- JMS Streams + +[Features](features.html) > [Message Features](message-features.html) > [JMS Streams](jms-streams.html) + + +**deprecated** + +This feature is deprecated, and end users is encouraged to **not** use it. This feature will be removed in a later ActiveMQ release. + +Sometimes you need to send truly massive files (many Gb) around the network in a reliable manner. The JMS API expects JMS clients to be able to keep a message in memory at one time, so sending > 1Gb messages around ends up using way too much RAM on the client side. + +To solve this problem ActiveMQ supports regular [InputStream](http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html) and [OutputStream](http://java.sun.com/j2se/1.4.2/docs/api/java/io/OutputStream.html) abstractions which work with regular JMS producers and consumers. + +This allows you to use the familar streams from Java to send or receive messages of any size at all (providing your file system can handle them ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) while keeping a low memory overhead. + +For Users of 4.2 + +If you are using 4.2 onwards of ActiveMQ we highly recommend you try out [Blob Messages](blob-messages.html) which offers a more flexible mechanism for dealing wtih massive files and fully supports out-of-band transfer using HTTP/FTP as well as allowing external resources to be sent around the JMS network. + +### Using JMS Streams + +To use the streams just create an input or output stream depending on if you are reading or writing using the [connection.createInputStream()](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html#createInputStream(javax.jms.Destination)) or +[connection.createOutputStream()](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html#createOutputStream(javax.jms.Destination)) methods. + +e.g. + +ActiveMQConnection connection = ...; +Destination destination = new ActiveMQQueue("FOO.BAR"); + +OutputStream out = connection.createOutputStream(destination); + +// write the file to out +out.close(); + +Or to consume a large message + +ActiveMQConnection connection = ...; +Destination destination = new ActiveMQQueue("FOO.BAR"); + +InputStream in = connection.createInputStream(destination) + +// read the stream... +in.close(); + +There are overloaded createInputStream/createOutputStream methods which support additional paramateres to be passed. + +For further reference see the javadoc. + +* [ActiveMQInputStream](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQInputStream.html) +* [ActiveMQOutputStream](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQOutputStream.html) + +_Note:_ +The counterpart classes in AMQ 3.x are : + +* JMSInputStream +* JMSOutputStream + diff --git a/jms-to-jms-bridge.md b/jms-to-jms-bridge.md new file mode 100644 index 0000000..873c2b1 --- /dev/null +++ b/jms-to-jms-bridge.md @@ -0,0 +1,559 @@ +Apache ActiveMQ ™ -- JMS to JMS Bridge + +[Connectivity](connectivity.html) > [JMS to JMS Bridge](jms-to-jms-bridge.html) + + +### Introduction + +Warning, try Camel first! + +Note that we recommend you look at using [Apache Camel](http://camel.apache.org/) for bridging ActiveMQ to or from any message broker (or indeed [any other technology, protocol or middleware](http://camel.apache.org/components.html)) as its much easier to: + +* keep things flexible; its very easy to map different queue/topic to one or more queues or topics on the other provider +* perform content based routing, filtering and other [Enterprise Integration Patterns](http://camel.apache.org/enterprise-integration-patterns.html) +* allows you to work with [any technology, protocol or middleware](http://camel.apache.org/components.html), not just JMS providers + +e.g. in your Spring XML file just add: + + + + + + + + +ActiveMQ provides bridging functionality to other JMS providers that implement the JMS 1.0.2 and above specification. +A JMS bridge can be co-located with an ActiveMQ broker or run remotely. +In order to support JMS 1.0.2 there is seperation between Queues and Topics. + +temporary destinations and replyTo destinations in the inbound message exchanges are automatically handled, enabling an ActiveMQ service to handle a foreign JMS TopicRequestor or QueueResquestor exchanges. + +### properties + +**JMS Bridge Topic Connector** + +property name + +default value + +description + +localTopicConnection + +null + +if set will be used to connect to ActiveMQ + +localTopicConnectionFactory + +null + +used to initialize the ActiveMQ JMS Connection if localTopicConnection is not set + +localClientId + +null + +set the id of the local connection + +outboundClientId + +null + +set the id of the outbound connection + +jndiLocalTemplate + +Spring default template + +used for locating the Connection Factory for the ActiveMQ Connection if the localTopicConnection or localTopicConnectionFactory is not set + +outboundTopicConnection + +null + +if set will be used to connect to the foreign JMS provider + +outboundTopicConnectionFactory + +null + +used to initialize the foreign JMS Connection if outboundTopicConnection is not set + +jndiOutboundTemplate + +Spring default template + +used for locating the Connection Factory for the ActiveMQ Connection if the localTopicConnection or localTopicConnectionFactory is not set + +localUsername + +null + +if set will be used for authentication to the ActiveMQ JMS provider + +localPassword + +null + +if set will be used for authentication to the ActiveMQ JMS provider + +outboundUsername + +null + +if set will be used for authentication to the foreign JMS provider + +outboundPassword + +null + +if set will be used for authentication to the foreign JMS provider + +inboundMessageConvertor + +null + +if set will be used for converting foreign JMS Messages to a format for ActiveMQ + +outboundMessageConvertor + +null + +if set will be used for converting ActiveMQ messages to a format for the foriegn JMS provider + +inboundTopicBridges + +null + +an array of InboundTopicBridge instances - used for defining inbound (subscribe to) traffic from the foreign JMS provider + +outboundTopicBridges + +null + +an array of OutboundTopicBridge instances - used for defining destinations that will be published to the foreign JMS provider + +**JMS Bridge Queue Connector** + +property name + +default value + +description + +localQueueConnection + +null + +if set will be used to connect to ActiveMQ + +localQueueConnectionFactory + +null + +used to initialize the ActiveMQ JMS Connection if localQueueConnection is not set + +localClientId + +null + +set the id of the local connection + +outboundClientId + +null + +set the id of the outbound connection + +jndiLocalTemplate + +Spring default template + +used for locating the Connection Factory for the ActiveMQ Connection if the localQueueConnection or localQueueConnectionFactory is not set + +outboundQueueConnection + +null + +if set will be used to connect to the foreign JMS provider + +outboundQueueConnectionFactory + +null + +used to initialize the foreign JMS Connection if localQueueConnection is not set + +jndiOutboundTemplate + +Spring default template + +used for locating the Connection Factory for the ActiveMQ Connection if the localQueueConnection or localQueueConnectionFactory is not set + +localUsername + +null + +if set will be used for authentication to the ActiveMQ JMS provider + +localPassword + +null + +if set will be used for authentication to the ActiveMQ JMS provider + +outboundUsername + +null + +if set will be used for authentication to the foreign JMS provider + +outboundPassword + +null + +if set will be used for authentication to the foreign JMS provider + +inboundMessageConvertor + +null + +if set will be used for converting foreign JMS Messages to a format for ActiveMQ + +outboundMessageConvertor + +null + +if set will be used for converting ActiveMQ messages to a format for the foriegn JMS provider + +inboundQueueBridges + +null + +an array of InboundQueueBridge instances - used for defining inbound (subscribe to) traffic from the foreign JMS provider + +outboundQueueBridges + +null + +an array of OutboundQueueBridge instances - used for defining destinations that will be forwarded to the foreign JMS provider + +#### Topic Bridges + +**InboundTopicBridge** + +property name + +default value + +description + +localTopicName + +null + +the name of the local ActiveMQ Queue + +inboundTopicName + +null + +the foreign topic name to subscribe to + +selector + +null + +selector to use - if any + +consumerName + +null + +if set will create a durable consumer + +**OutboundTopicBridge** + +property name + +default value + +description + +localTopicName + +null + +the name of the local ActiveMQ Queue + +outboundTopicName + +null + +the foreign topic name to publish to + +#### Queue Bridges + +**InboundQueueBridge** + +property name + +default value + +description + +localQueueName + +null + +the name of the local ActiveMQ Queue + +inboundQueueName + +null + +the foreign queue name to receive from + +selector + +null + +selector to use - if any + + +**OutboundQueueBridge** + +property name + +default value + +description + +localQueueName + +null + +the name of the local ActiveMQ Queue + +outboundQueueName + +null + +the foreign queue name to send to + +### Example XBean Configuration + +The following [example config file](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/network/jms/queue-xbean.xml) shows how to use the regular [Xml Configuration](xml-configuration.html) to configure a JMS to JMS bridge. + + + + + + + + + + + + + + + + + + +### Example pure Spring Configuration + +The following example shows how to use raw Spring XML to wire together a broker - bridging to a Foreign JMS provider + + + + + + + + tcp://localhost:61234 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +### Example XBean Configuration to Bridge ActiveMQ to Provider With No URL Setter + +Some JMS providers, WebLogic for instance, do not expose a setter for connection properties like host and port (setBrokerUrl) on their ConnectionFactory object. In this case you need to set outboundQueueConnectionFactoryName and jndiOutboundTemplate in your activemq.xml config file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + weblogic.jndi.WLInitialContextFactory + t3://:7001 + + + + + + + + + + + + + + +### Example pure Spring Configuration for sending messages to external ActiveMQ destination through bridge + +Spring beans: + + + + + + + + + + + + tcp://localhost:7000 + + + + + + + + + + tcp://localhost:7001 + + + + + + + + + + + + + + + + + + + + + + + + +Java code: + +public class BridgeTest { + + public BridgeTest() throws Exception { + + Log log = LogFactory.getLog(getClass()); + + new ClassPathXmlApplicationContext("bridge/context-bridge.xml"); + + ActiveMQConnection connection = ActiveMQConnection.makeConnection("tcp://localhost:7001"); + connection.start(); + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + Destination destination = session.createQueue("messages.input"); + MessageProducer producer = session.createProducer(destination); + producer.send(session.createTextMessage("Test Message")); + log.debug("send message"); + session.close(); + connection.close(); + + connection = ActiveMQConnection.makeConnection("tcp://localhost:7000"); + connection.start(); + session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + destination = session.createQueue("messages.input"); + MessageConsumer consumer = session.createConsumer(destination); + log.debug("receive message"); + Message message = consumer.receive(5000); + log.debug("Received: " + message); + session.close(); + connection.close(); + } + + public static void main(String\[\] args) throws Exception { + new BridgeTest(); + } + +} + diff --git a/jms.md b/jms.md new file mode 100644 index 0000000..424ad47 --- /dev/null +++ b/jms.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- JMS + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) + + +Questions on using the JMS API and [MOM](mom.html) in general + +* [Can I modify messages on a queue](can-i-modify-messages-on-a-queue.html) +* [Can I send and receive messages concurrently on one JMS Connection](can-i-send-and-receive-messages-concurrently-on-one-jms-connection.html) +* [Can you browse a topic](can-you-browse-a-topic.html) +* [How do durable queues and topics work](how-do-durable-queues-and-topics-work.html) +* [How does a Queue compare to a Topic](how-does-a-queue-compare-to-a-topic.html) +* [How does ConnectionFactory relate to the Broker](how-does-connectionfactory-relate-to-the-broker.html) +* [How does JMS compare with email](how-does-jms-compare-with-email.html) +* [How do I consume a specific message](how-do-i-consume-a-specific-message.html) +* [How do I get started with JMS](how-do-i-get-started-with-jms.html) +* [How do I make messages durable](how-do-i-make-messages-durable.html) +* [How do I send messages to different Destinations from a single MessageProducer](how-do-i-send-messages-to-different-destinations-from-a-single-messageproducer.html) +* [How do I use JMS efficiently](how-do-i-use-jms-efficiently.html) +* [How should I implement request response with JMS](how-should-i-implement-request-response-with-jms.html) +* [How To Unit Test JMS Code](how-to-unit-test-jms-code.html) +* [Multiple consumers on a queue](multiple-consumers-on-a-queue.html) +* [Should I use transactions](should-i-use-transactions.html) +* [Should I use XA](should-i-use-xa.html) +* [What are administered objects](what-are-administered-objects.html) + diff --git a/jmstemplate-gotchas.md b/jmstemplate-gotchas.md new file mode 100644 index 0000000..a144375 --- /dev/null +++ b/jmstemplate-gotchas.md @@ -0,0 +1,29 @@ +Apache ActiveMQ ™ -- JmsTemplate Gotchas + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Spring Support](spring-support.html) > [JmsTemplate Gotchas](jmstemplate-gotchas.html) + + +The thing to remember is JmsTemplate is designed for use in EJBs using the EJB containers JMS pooling abstraction. So every method will typically create a connection, session, producer or consumer, do something, then close them all down again. The idea being that this will use the J2EE containers pooling mechanism to pool the JMS resources under the covers. Without using a pooled JMS provider from the EJB container this is the worst possible way of working with JMS; since typically each create/close of a connection, producer/consumer results in a request-response with the JMS broker. + +User Story + +We had a bug once in ActiveMQ where if you created 65535 MessageProducer instances within the space of a few seconds, we'd get an exception thrown in the broker. Its a kinda silly thing to do, to create that many producers in a small space of time (one for each message to be sent) - JMS is designed for resources like producers and consumers to be created up front and reused across many message exchanges. The bug was highlighted by a user using JmsTemplate without a JMS pool underneath. Well at least it helped find our bug which I'm glad to say is now fixed, but it didn't help their performance too much ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) + +You should only use JmsTemplate with a pooled JMS provider. In J2EE 1.4 or later that typically means a JCA based JMS ConnectionFactory. If you are in an EJB then make sure you use your J2EE containers ConnectionFactory, never a plain-old-connection factory. If you are not inside an EJB Then you should use our [PooledConnectionFactory](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/pool/PooledConnectionFactory.html), then things will be nicely pooled. If you need to take part in XA transactions then look into our spring based [JCA Container](jca-container.html). + +Another gotcha I've seen folks do is to create a MessageConsumer inside one of the SessionCallback methods then wonder why messages are not being received. After the SessionCallback is called, the session will be closed; which will close your consumers too ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png). So if you want to create a MessageConsumer you should create a connection, session and consumer yourself. + +Another problem I've seen is folks using the JmsTemplate.receive() method; as I've said above if you're not in an EJB using the J2EE containers ConnnectionFactory, a connection, session & consumer will be create and closed for each receive() method. This is all fine and well - if painfully slow unless you are using pooling - but be aware that this mechanism, without pooling, may well miss messages. If you are consuming on a topic which has messages sent with NON_PERSISTENT delivery mode then chances are you will miss messages, since each receive() call is a brand new consumer which will not receive any messages sent before the consumer existed. To receive messages efficiently you should use Spring's [MessageListenerContainer](http://static.springsource.org/spring/docs/2.5.x/reference/jms.html#jms-mdp). + +New in 4.x + +In ActiveMQ [4.x](changes-in-40.html) we have a new feature called [Subscription Recovery Policy](subscription-recovery-policy.html) which even in non-durable delivery mode allows a new consumer to go back in time and receive messages delivered within a window (a fixed amount of RAM or time window). e.g. if your broker dies you have 2 minutes to reconnect to another broker and not miss any messages - even without durable delivery. + +### Recommendations for using JmsTemplate + +* Never use a regular ConnectionFactory unless you are totally sure it does all the pooling you need +* If using in an EJB ensure you use the EJB containers ConnectionFactory +* If you are only publishing messages and you are not in an EJB container and you are using ActiveMQ, then you can use either the [PooledConnectionFactory](http://activemq.codehaus.org/maven/apidocs/org/activemq/pool/PooledConnectionFactory.html) or the [Spring CachingConnectionFactory](http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jms/connection/CachingConnectionFactory.html) +* If you are consuming messages its probably simpler & more efficient & less likely to lose messages to avoid using the receive() method and use Spring's [MessageListenerContainer](http://static.springsource.org/spring/docs/2.5.x/reference/jms.html#jms-mdp) instead +* See also [Using Spring to Send JMS Messages](http://bsnyderblog.blogspot.com/2010/02/using-spring-jmstemplate-to-send-jms.html) and [Using Spring to Receive JMS Messages](http://bsnyderblog.blogspot.com/2010/02/using-spring-to-receive-jms-messages.html) + diff --git a/jmsxuserid.md b/jmsxuserid.md new file mode 100644 index 0000000..2d5c1d1 --- /dev/null +++ b/jmsxuserid.md @@ -0,0 +1,30 @@ +Apache ActiveMQ ™ -- JMSXUserID + +[Features](features.html) > [JMSXUserID](jmsxuserid.html) + + +JMSXUserID support +------------------ + +It is sometimes useful to know the authenticated username of the sender of a message. This is not added by default but you can enable it by setting the **populateJMSXUserID** property on the broker via Java code + +BrokerService broker = new BrokerService(); +broker.setPopulateJMSXUserID(true); +broker.start(); + +Or via the [Xml Configuration](xml-configuration.html) + + +... + + +Or via the [Broker Configuration URI](broker-configuration-uri.html). + +Once enabled this feature adds the JMS property **JMSXUserID** to each JMS message so that a consumer can know exactly who the sender was using the broker's authentication policy. i.e. it is not possibile for a producer to spoof this value if this feature is enabled since the broker attaches the property to the message after the senders connection is authenticated. + +If you allow anonymous access, you MUST also add the + +useAuthenticatedPrincipalForJMSXUserID="true" + +property of the broker element. Otherwise, anonymous clients can spoof identities by setting the JMSXUserID property on from the client. This property is available in version 5.5 or 5.5-SNAPSHOT > March 12th. Note, though, that for SSL certificate based authentication, e.g., when using TextFileCertificateLoginModule JAAS module, this will change the semantics of the broker-provided JMSXUserID. Instead of returning the DN of the certificate, it will provide the name the DN is mapped to by the JAAS module. + diff --git a/jmx-support.md b/jmx-support.md new file mode 100644 index 0000000..3600197 --- /dev/null +++ b/jmx-support.md @@ -0,0 +1,66 @@ +Apache ActiveMQ ™ -- JMX Support + +[Features](features.html) > [JMX](jmx.html) > [JMX Support](jmx-support.html) + + +This page describes the JMX management requirements. + +Required MBeans +--------------- + +### Broker MBeans + +We need MBeans for the core Broker types in the activemq.broker package to allow folks to see a broker's configuration, its connectors, currently connected clients & disconnect clients etc. + +e.g. MBeans for + +MBean + +Description + +Broker/BrokerContainer + +The Message Broker itself + +BrokerConnector + +The inbound connector listening to new client connections + +BrokerClient + +A specific client connection + +We have an old BrokerAdmin interface we should replace with proper MBeans ASAP. + +In addition, we need to get access to the MessageContainer instances inside the Broker. These are a container per destination and QoS (e.g. 1 for Durable queue Foo and one for non-durable queue Foo). + +So we'll need some way of viewing and looking up of thesse MC MBeans as they are created dynamically as users start using different destionations. + +### Statistics + +We implement J2EE Management Stats which add stats to each JMS resource; Connection, Session, Consumer, Producer (and we've added support to Destination too). So we need to expose those somehow in JMX so users can watch/view stats for JMS clients + +Use cases +--------- + +Here's a list of end user use cases we need to support easily... + +* browsing the throughputs of connections/sessions/producers/consumers at the client side +* browsing the throughputs of brokers on a per broker/destination/client basis +* looking at the status of queues/topics (outstanding messages) to check for things filling up +* emptying queues +* replaying messsages from the dead letter queues +* deleting messages on a queue/topic using a message ID +* disconnecting clients on a broker; stopping a broker connection (to stop new inbound connections etc) +* stopping brokers + +The following are more nice to haves, but would be nice + +* viewing contents of queues/topics +* starting/stopping remote brokers + +Issues +------ + +* do we need/want an MBean per JMS Connection/Session/Producer/Consumer? Am not sure why other than a way to grab stats; if so maybe some kinda stats MBean instead? + diff --git a/jmx.md b/jmx.md new file mode 100644 index 0000000..bd35335 --- /dev/null +++ b/jmx.md @@ -0,0 +1,342 @@ +Apache ActiveMQ ™ -- JMX + +[Features](features.html) > [JMX](jmx.html) + + +JMX +--- + +Apache ActiveMQ has extensive support for JMX to allow you to monitor and control the behavior of the broker via the [JMX MBeans](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/jmx/package-summary.html). + +### Using JMX to monitor Apache ActiveMQ + +You can enable/disable JMX support as follows... + +1\. [Run a broker](run-broker.html) setting the broker property useJmx to true (enabled by default) i.e. + +For xbean configuration + + +... + + +2\. Run a JMX console + +$ jconsole + +3\. The ActiveMQ broker should appear in the list of local connections, if you are running JConsole on the same host as ActiveMQ. + +**JMX remote access** + +Remote connections to JMX are not enabled by default in the activemq.xml for security reasons. Please refer to [Java Management guide](http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html) to configure the broker for remote management. + +Using the Apache ActiveMQ version on OS X it appears as follows: + +![](jmx.data/activemq-jmx.png) +  + +### ActiveMQ MBeans Reference + +For additional references provided below is a brief hierarchy of the mbeans and a listing of the properties, attributes, and operations of each mbeans. + + Mbean Type + +Properties / ObjectName  + +Attributes  + +Operations  + + Broker + +* **type**=Broker +* **brokerName**= + +* BrokerId +* TotalEnqueueCount +* TotalDequeueCount +* TotalConsumerCount +* TotalMessageCount +* TotalConnectionsCount +* TotalConsumerCount +* TotalProducerCount +* MemoryLimit +* MemoryPercentUsage +* StoreLimit +* StorePercentUsage + +* start +* stop +* terminateJVM +* resetStatistics +* gc + + Destination + +* **type**=Broker +* **brokerName**= +* **destinationType**=Queue|Topic +* **destinationName**= + +* AverageEnqueueTime +* ConsumerCount +* DequeueCount +* EnqueueCount +* ExpiredCount +* InFlightCount +* MemoryLimit +* MemoryPercentUsage +* Name +* QueueSize (queues only) + +* browseMessages +* gc +* purge +* resetStatistics + + NetworkConnector + +* **type**=Broker +* **brokerName**= +* **connector**=networkConnectors +* **networkConnectorName**= + +* Name +* Duplex +* DynamicOnly +* BridgeTempDestinations +* ConduitSubscriptions +* DecreaseNetworkConsumerPriority +* DispatchAsync +* DynamicOnly +* NetworkTTL +* Password +* PrefetchSize + +* start +* stop + + Connector + +* **type**=Broker +* **brokerName**= +* **connector**=clientConnectors +* **ConnectorName**= + +* StatisticsEnabled + +* start +* stop +* resetStatistics +* enableStatistics +* disableStatistics +* connectionCount + + Connection + +* **type**=Broker +* **brokerName**= +* **connectionViewType**=clientId +* **connectionName**= + +* DispatchQueueSize +* Active +* Blocked +* Connected +* Slow +* Consumers +* Producers +* RemoteAddress +* UserName +* ClientId + +* start +* stop +* resetStatistics + +  PersistenceAdapter + +* **type**=Broker +* **brokerName**= +* **Service**=PersistenceAdapter +* **InstanceName**= + +* Name +* Size +* Data +* Transactions + + Health + +* **type**=Broker +* **brokerName**= +* **Service**=Health + +* CurrentStatus + +* health + +Command line utilities are also available to let you monitor ActiveMQ. Refer to [ActiveMQ Command Line Tools Reference](activemq-command-line-tools-reference.html) for usage information. + +JMX API is also exposed via [REST management API](rest.html) + +### Password Protecting the JMX Connector + +(For Java 1.5+) + +1\. Make sure JMX is enabled, but tell ActiveMQ **not** create its own connector so that it will use the default JVM JMX connector. + + + + ... + + + + + + ... + + + +2\. Create access and password files + +conf/jmx.access: + +\# The "monitorRole" role has readonly access. +\# The "controlRole" role has readwrite access. +monitorRole readonly +controlRole readwrite + +conf/jmx.password: + +\# The "monitorRole" role has password "abc123". +\# The "controlRole" role has password "abcd1234". +monitorRole abc123 +controlRole abcd1234 + +(Make sure both files are not world readable - more info can be find [here](http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html#auth) to protect files) + +For more details you can see the [Monitoring Tomcat Document](http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html) + +3\. Modify the "activemq" startup script (in bin) to enable the Java 1.5+ JMX connector + +Find the "ACTIVEMQ\_SUNJMX\_START=" line and change it too the following: (note that in previous versions of ActiveMQ this property was called SUNJMX in some scripts.  As of v5.12.0 all scripts use ACTIVEMQ\_SUNJMX\_START): + +1\. Windows + + ACTIVEMQ\_SUNJMX\_START=-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.ssl=false \ + -Dcom.sun.management.jmxremote.password.file=%ACTIVEMQ_BASE%/conf/jmx.password \ + -Dcom.sun.management.jmxremote.access.file=%ACTIVEMQ_BASE%/conf/jmx.access + +2\. Unix + + ACTIVEMQ\_SUNJMX\_START="-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.ssl=false \ + -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_BASE}/conf/jmx.password \ + -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_BASE}/conf/jmx.access" + +This could be set in /etc/activemq.conf instead (if you have root access): + +1\. Windows + +ACTIVEMQ\_HOME=DRIVE\_LETTER:/where/ActiveMQ/is/installed +ACTIVEMQ\_BASE=%ACTIVEMQ\_HOME% +ACTIVEMQ\_SUNJMX\_START=-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.ssl=false \ + -Dcom.sun.management.jmxremote.password.file=%ACTIVEMQ_BASE%/conf/jmx.password \ + -Dcom.sun.management.jmxremote.access.file=%ACTIVEMQ_BASE%/conf/jmx.access + +2\. Unix + +ACTIVEMQ\_HOME=DRIVE\_LETTER:/where/ActiveMQ/is/installed +ACTIVEMQ\_BASE=${ACTIVEMQ\_HOME} +ACTIVEMQ\_SUNJMX\_START="-Dcom.sun.management.jmxremote.port=1616 -Dcom.sun.management.jmxremote.ssl=false \ + -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_BASE}/conf/jmx.password \ + -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_BASE}/conf/jmx.access" + +4\. Start ActiveMQ + +You should be able to connect to JMX on the JMX URL + +service:jmx:rmi:///jndi/rmi://:1616/jmxrmi + +And you will be forced to login. + +### Selective MBean registration + +In situations where you need to scale your broker to large number of connections, destinations and consumers it can become very expensive to keep JMX MBeans for all those objects. Instead of turning off JMX completely, starting with 5.12.0, you can selectively suppress registration of some types of MBeans and thus help your broker scale, while still having a basic view of the broker state. + +For example, the following configuration will exclude all dynamic producers, consumers, connections and advisory topics from registering their MBeans + + + + + +#### ManagementContext Properties Reference + +Property Name + +Default Value + +Description + +useMBeanServer + +true + +If true then it avoids creating a new MBean server if a MBeanServer has already been created in the JVM + +jmxDomainName + +org.apache.activemq + +The jmx domain that all objects names will use + +createMBeanServer + +true + +If we should create the MBeanServer is none is found. + +createConnector + +false + +Please refer to [Java Management guide](http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html) to configure the server for remote management and lock down the endpoint serialisation with an appropriate [jdk.serialFilter](http://openjdk.java.net/jeps/290) + +connectorPort + +1099 + +The port that the JMX connector will use + +connectorHost + +localhost + +The host that the JMX connector and RMI server (if rmiServerPort>0) will use + +rmiServerPort + +0 + +The RMI server port, handy if port usage needs to be restricted behind a firewall + +connectorPath + +/jmxrmi + +The path that JMX connector will be registered under + +findTigerMBeanServer + +true + +Enables/disables the searching for the Java 5 platform MBeanServer + +suppressMBean + +  + +List of MBean name patters to ignore + diff --git a/jndi-support.md b/jndi-support.md new file mode 100644 index 0000000..fb2e288 --- /dev/null +++ b/jndi-support.md @@ -0,0 +1,86 @@ +Apache ActiveMQ ™ -- JNDI Support + +[Connectivity](connectivity.html) > [Containers](containers.html) > [JNDI Support](jndi-support.html) + + +ActiveMQ will work with any JNDI provider capable of storing Java objects. However it is common to require a JNDI initial context to be able to run many JMS example programs, like [Sun's JMS tutorial.](http://java.sun.com/products/jms/tutorial/1_3_1-fcs/doc/jms_tutorialTOC.html) + +So we provide a simple JNDI **`InitialContextFactory`** which can be used to lookup JMS connection factory objects as well as Destination objects. For example if you place this [jndi.properties](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/jndi.properties) file on your classpath, you can look inside the **`InitialContext`** and lookup **`ConnectionFactory`** objects and **`Destinations`** etc. + +java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory # Use the following property to configure the default connector java.naming.provider.url = vm://localhost # Use the following property to specify the JNDI name the connection factory # should appear as. #connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry # Register some queues in JNDI using the form: # queue.\[jndiName\] = \[physicalName\] queue.MyQueue = example.MyQueue # Register some topics in JNDI using the form: # topic.\[jndiName\] = \[physicalName\] topic.MyTopic = example.MyTopic + +You can edit the **`jndi.properties`** file to configure the **`ActiveMQConnectionFactory`**'s properties such as **`brokerURL`** and whether or not there should be an embedded broker etc. See [how to embed a broker in a connection](how-do-i-embed-a-broker-inside-a-connection.html) for more details. + +### ActiveMQ JNDI Tutorial + +This is a quick one page tutorial on how to setup and use JNDI to create a connection to ActiveMQ. The first thing is ActiveMQ does not provide a full JNDI server. This means JMS clients need to use properties files to create a JNDI **`IntialContextFactory`**. If you need an example properties file, you can look the source distribution [https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/resources/jndi.properties](https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/resources/jndi.properties). Before we proceed, here are the properties. + +Name + +Value + +`java.naming.factory.initial` + +`org.apache.activemq.jndi.ActiveMQInitialContextFactory` + +`java.naming.provider.url` + +`tcp://hostname:61616` + +`topic.MyTopic` + +`example.MyTopic` + +Make sure to add **`activemq-__.jar`** and **`spring-1.x.jar`** to your classpath. If the libraries are not in the classpath, you will get a **`ClassNotFoundException`** at runtime. If you get **`ClassNotFoundException`**, try printing out the classpath and check it is present. You can also run ActiveMQ with **`-verbose`** option to verify the jar was loaded correctly. + +**Sample Code** + +java// Create a new intial context, which loads from jndi.properties file: javax.naming.Context ctx = new javax.naming.InitialContext(); // Lookup the connection factory: javax.jms.TopicConnectionFactory factory = (javax.jms.TopicConnectionFactory)ctx.lookup("ConnectionFactory"); // Create a new TopicConnection for pub/sub messaging: javax.jms.TopicConnection conn = factory.getTopicConnection(); // Lookup an existing topic: javax.jms.Topic mytopic = (javax.jms.Topic)ctx.lookup("MyTopic"); // Create a new TopicSession for the client: javax.jms.TopicSession session = conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE); // Create a new subscriber to receive messages: javax.jms.TopicSubscriber subscriber = session.createSubscriber(mytopic); + +Notice the name of the topic in the sample is **`MyTopic`**. ActiveMQ will read the **`jndi.properties`** files and creates the topics and queues in a lazy fashion. The prefix topic and queue is stripped, so the JNDI name begins after the prefix. + +Once you have the **`jndi.properties`** edited and ready, it needs to be accessible to your application. The easiest way is to add **`jndi.properties`** to a jar file. When **`new InitialContext()`** is called, it will scan the resources and find the file. If you get **`javax.naming.NamingException`**, it usually means the **`jndi.properties`** file is not accessible. + +You can also try to create a new initial context using either an instance of properties file or a map. For example, the approach recommended by JMS specification will work just fine. + +Example Recommended by Specification + +javaProperties props = new Properties(); props.setProperty(Context.INITIAL\_CONTEXT\_FACTORY,"org.apache.activemq.jndi.ActiveMQInitialContextFactory"); props.setProperty(Context.PROVIDER_URL,"tcp://hostname:61616"); javax.naming.Context ctx = new InitialContext(props);|| + +If ActiveMQ is embedded within an EJB container, you will need to look at the containers documentation for the correct JNDI values. + +### Dynamically Creating Destinations + +For the easiest possible configuration with JNDI based programs, there are two dynamic contexts, namely: + +* **`dynamicQueues`** +* **`dynamicTopics`** + +These allow you to lookup queues and topics using JNDI without any configuration. + +For example, if you use the following name to lookup into JNDI: + +dynamicQueues/FOO.BAR + +you will get back an **`ActiveMQQueue`** of the name **`FOO.BAR`**. This can be very handy if you can easily reconfigure the JNDI name to use to lookup something in JNDI, but don't want to have to double configure a **`jndi.properties`** to match. + +### Working With Embedded Brokers + +It is often useful to use an embedded broker in the same JVM as the JMS client. For this see [How do I embed a Broker inside a Connection](how-do-i-embed-a-broker-inside-a-connection.html). + +If you want to use an embedded broker with your JNDI provider you can just use the [VM Transport](vm-transport-reference.html) to connect to the broker in your URL. e.g. to create a purely in JVM broker use this URI + +vm://locahost + +If you want to customize the broker use something like this: + +vm:broker:(tcp://localhost:61616) + +More options are available in the [VM Transport Reference](vm-transport-reference.html) + +### Example Java Code + +Once you have configured JNDI on the classpath you can run any normal JMS application such as the following [example](http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/demo/SimpleProducer.java). Notice that the Java code just uses pure JMS APIs and is not in any way ActiveMQ specific + +java/\*\* \* The SimpleQueueSender class consists only of a main method, * which sends several messages to a queue. * * Run this program in conjunction with SimpleQueueReceiver. * Specify a queue name on the command line when you run the * program. By default, the program sends one message. Specify * a number after the queue name to send that number of messages. */ package org.apache.activemq.demo; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * A simple polymorphic JMS producer which can work with Queues or Topics which * uses JNDI to lookup the JMS connection factory and destination. */ public final class SimpleProducer { private static final Logger LOG = LoggerFactory.getLogger(SimpleProducer.class); private SimpleProducer() {}  /** * @param args the destination name to send to and optionally, the number of * messages to send */ public static void main(String\[\] args) { Context jndiContext; ConnectionFactory connectionFactory; Connection connection; Session session; Destination destination; MessageProducer producer; String destinationName; final int numMsgs;  if ((args.length < 1) || (args.length > 2)) { LOG.info("Usage: java SimpleProducer \[\]"); System.exit(1); }  destinationName = args\[0\]; LOG.info("Destination name is " + destinationName); if (args.length == 2) { numMsgs = (new Integer(args\[1\])).intValue(); } else { numMsgs = 1; } /* * Create a JNDI API InitialContext object */ try { jndiContext = new InitialContext(); } catch (NamingException e) { LOG.info("Could not create JNDI API context: " + e.toString()); System.exit(1); }  /* * Look up connection factory and destination. */ try { connectionFactory = (ConnectionFactory)jndiContext.lookup("ConnectionFactory"); destination = (Destination)jndiContext.lookup(destinationName); } catch (NamingException e) { LOG.info("JNDI API lookup failed: " + e); System.exit(1); }  /* * Create connection. Create session from connection; false means * session is not transacted. Create sender and text message. Send * messages, varying text slightly. Send end-of-messages message. * Finally, close the connection. */ try { connection = connectionFactory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); producer = session.createProducer(destination); TextMessage message = session.createTextMessage();  for (int i = 0; i < numMsgs; i++) { message.setText("This is message " + (i + 1)); LOG.info("Sending message: " + message.getText()); producer.send(message); }  /* * Send a non-text control message indicating end of messages. */ producer.send(session.createMessage()); } catch (JMSException e) { LOG.info("Exception occurred: " + e); } finally { if (connection != null) { try { connection.close(); } catch (JMSException ignored) {} } } } } + diff --git a/journal-is-already-opened-by-this-application.md b/journal-is-already-opened-by-this-application.md new file mode 100644 index 0000000..6a7e3d0 --- /dev/null +++ b/journal-is-already-opened-by-this-application.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- Journal is already opened by this application + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [Journal is already opened by this application](journal-is-already-opened-by-this-application.html) + + +### Error + +You get something like this + +java.io.IOException: Journal is already opened by this application. + at +org.apache.activeio.journal.active.ControlFile.lock(ControlFile.java:71) + at +org.apache.activeio.journal.active.LogFileManager.initialize(LogFileManager.java:120) + at +org.apache.activeio.journal.active.LogFileManager.(LogFileManager.java:101) + at +org.apache.activeio.journal.active.JournalImpl.(JournalImpl.java:99) + at +org.apache.activemq.store.DefaultPersistenceAdapterFactory.createJournal(DefaultPersistenceAdapterFactory.java:198) + at +org.apache.activemq.store.DefaultPersistenceAdapterFactory.getJournal(DefaultPersistenceAdapterFactory.java:134) + +### Description + +Each broker needs to have its own directory to store its journal files etc. The error indicates that you have 2 brokers sharing the same files. + +A common cause of this exception is that you are running two brokers on one machine using the same config file pointing to the same directory. So a work around is to parameterise the directory name via Spring's property syntax - or just create another configuration file so that the second broker uses a different directory. + +Another cause of this problem is if you are using the vm://localhost style transport in a JMS client with the JMS connection starting before you have initialised your broker. If you create a vm transport connection, it will auto-create a broker if there is not one running already; so you can end up creating 2 brokers by accident. The work around is to make sure that the JMS connection factory you are using depends on the broker you are configuring (e.g. in Spring use a **depends-on** attribute on the connection factory to make it depend on the broker). This will ensure that the broker is initialized first before the connection factory. + +Be careful with broker names and URIs + +Make sure you do not use any strange characters in the names of brokers as they are converted to URIs which [do not allow things like underscores](http://java.sun.com/j2se/1.4.2/docs/api/java/net/URI.html) in them etc. + +This problem could also be caused by [a bad OS and JVM combination](the-broker-will-not-start.html) + diff --git a/junit-reports.md b/junit-reports.md new file mode 100644 index 0000000..39a3ab6 --- /dev/null +++ b/junit-reports.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- JUnit Reports + +[Developers](developers.html) > [JUnit Reports](junit-reports.html) + + +The latest test reports are visible via the [Hudson ActiveMQ continuous integration builds](https://hudson.apache.org/hudson/job/ActiveMQ/) + diff --git a/kaha-persistence.md b/kaha-persistence.md new file mode 100644 index 0000000..46a48a7 --- /dev/null +++ b/kaha-persistence.md @@ -0,0 +1,38 @@ +Apache ActiveMQ ™ -- Kaha Persistence + +[Features](features.html) > [Persistence](persistence.html) > [Kaha Persistence](kaha-persistence.html) + + +Kaha Persistence +---------------- + +Kaha Peristence is a storage solution written especially for message persistence and is part of the ActiveMQ project. It's tuned to provide optimal performance for typical message usage patterns, which involves writing/reading and discarding messages that are persisted very quickly. + +Data stored in Kaha is appended to data logs - the log files are discarded once there is no longer interest in the data contained in the log. + +### Configuring Kaha Persistence + +In the broker XML specify the persistence adaptor to be Kaha e.g. + +ActiveMQ 5.0 and above: + + + + + + + + + + +ActiveMQ 4.1 and earlier: + + + + + + + + + + diff --git a/kahadb-master-slave.md b/kahadb-master-slave.md new file mode 100644 index 0000000..93a4bcf --- /dev/null +++ b/kahadb-master-slave.md @@ -0,0 +1,233 @@ +Apache ActiveMQ ™ -- KahaDB Master Slave + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Features](features.html) > [Clustering](clustering.html) > [MasterSlave](masterslave.html) > [KahaDB Master Slave](kahadb-master-slave.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.8.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +![](https://cwiki.apache.org/confluence/images/icons/emoticons/forbidden.gif) + +**Note** +This is under review - and not currently supported. + +Overview +-------- + +The new KahaDB store supports a very fast and flexible replication system. It features: + +* Journal level replication (The translates into lower overhead to the master to replicate records). +* Support for multiple slaves. +* Support to dynamically add slaves at runtime. +* Uses multiple concurrent data transfer sessions to do an initial slave synchronization. +* Big slave synchronizations can be resumed so synchronization progress is not lost if a slave is restarted. +* A configurable minimum number of replicas allows you to pause processing until the data has been guaranteed to be replicated enough times. + +Master Election +--------------- + +KahaDB supports a pluggable Master Election algorithm but the only current implementation is one based on [ZooKeeper](http://hadoop.apache.org/zookeeper). + +ZooKeeper is used to implement the master election algorithm. ZooKeeper is a very fast, replicated, in memory database with features that make it easy to implement cluster control algorithms. It is an Apache project which you can [freely download](http://hadoop.apache.org/zookeeper/releases.html). You must installed and have at least one ZooKeeper server running before setting up a KahaDB Master Slave configuration. + +Configuring a Broker: +--------------------- + +The ActiveMQ binary distribution includes a KahaDB HA broker configuration at **$ACTIVEMQ_HOME/conf/ha.xml**. + +It it setup to look for a ZooKeeper 3.0.0 server on localhost at port 2181. Edit the configuration if this is not where you are running your ZooKeeper server. + +Start the configuation up by running: + + + +The actual contents of the configuration file follows: + +Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20 + +Understanding the kahadbReplication XML element +----------------------------------------------- + +### The brokerURI Attribute + +Notice that the the brokerURI attribute points at another broker configuration file. The ha-broker.xml contains the actual broker configuration that the broker uses when the node take over as master. The ha-broker.xml configuration file is a standard broker configuration except in these aspects: + +* It MUST set the start="false" attribute on the broker element. +* It MUST not configure a persistenceAdapter. + +The above rules allows the replication system to inject the replicated KahaDB store into the Master when it's starting up. + +### The minimumReplicas Attribute + +The minimumReplicas specifies how many copies of the database are required before synchronous update operations are deemed successful. Setting this to 0 allows a broker to continue operating even if there are no slaves attached. If the value is set to 1 or greater, and there are no slaves attached, the brokers persistent message processing will be suspended until the minimum number of slaves are attached and the data synchronized. + +### The uri Attribute + +The uri attribute should always be configured with a **kdbr://** based URI. KDBR stands for 'KahaDB Replication' and this is the replication protocol used between the masters and the slaves. The master binds the specified port with slaves subsequently connect to and establish replication sessions. The host name in the uri MUST get updated to the actual machine's host name since this is also used to identify the nodes in the cluster. + +### The directory Attribute + +This is the data directory where the KahaDB will store it's persistence files. + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/kahadb-replication-experimental.md b/kahadb-replication-experimental.md new file mode 100644 index 0000000..7e75b1e --- /dev/null +++ b/kahadb-replication-experimental.md @@ -0,0 +1,65 @@ +Apache ActiveMQ ™ -- KahaDB Replication (Experimental) + +[Features](features.html) > [Clustering](clustering.html) > [MasterSlave](masterslave.html) > [KahaDB Replication (Experimental)](kahadb-replication-experimental.html) + + +Note + +This is under review - and not currently supported. + +Overview +-------- + +The new KahaDB store supports a very fast and flexible replication system. It features: + +* Journal level replication (The translates into lower overhead to the master to replicate records). +* Support for multiple slaves. +* Support to dynamically add slaves at runtime. +* Uses multiple concurrent data transfer sessions to do an initial slave synchronization. +* Big slave synchronizations can be resumed so synchronization progress is not lost if a slave is restarted. +* A configurable minimum number of replicas allows you to pause processing until the data has been guaranteed to be replicated enough times. + +Master Election +--------------- + +KahaDB supports a pluggable Master Election algorithm but the only current implementation is one based on [ZooKeeper](http://hadoop.apache.org/zookeeper). + +ZooKeeper is used to implement the master election algorithm. ZooKeeper is a very fast, replicated, in memory database with features that make it easy to implement cluster control algorithms. It is an Apache project which you can [freely download](http://hadoop.apache.org/zookeeper/releases.html). You must installed and have at least one ZooKeeper server running before setting up a KahaDB Master Slave configuration. + +Configuring a Broker: +--------------------- + +The ActiveMQ binary distribution includes a KahaDB HA broker configuration at **$ACTIVEMQ_HOME/conf/ha.xml**. + +It it setup to look for a ZooKeeper 3.0.0 server on localhost at port 2181. Edit the configuration if this is not where you are running your ZooKeeper server. + +Start the configuation up by running: + +prompt> $ACTIVEMQ_HOME/bin/activemq xbean:ha.xml + +The actual contents of the configuration file follows:{snippet:lang=xml|id=example|url=activemq/trunk/assembly/src/release/conf/ha.xml} + +Understanding the kahadbReplication XML element +----------------------------------------------- + +### The brokerURI Attribute + +Notice that the the brokerURI attribute points at another broker configuration file. The ha-broker.xml contains the actual broker configuration that the broker uses when the node take over as master. The ha-broker.xml configuration file is a standard broker configuration except in these aspects: + +* It MUST set the start="false" attribute on the broker element. +* It MUST not configure a persistenceAdapter. + +The above rules allows the replication system to inject the replicated KahaDB store into the Master when it's starting up. + +### The minimumReplicas Attribute + +The minimumReplicas specifies how many copies of the database are required before synchronous update operations are deemed successful. Setting this to 0 allows a broker to continue operating even if there are no slaves attached. If the value is set to 1 or greater, and there are no slaves attached, the brokers persistent message processing will be suspended until the minimum number of slaves are attached and the data synchronized. + +### The uri Attribute + +The uri attribute should always be configured with a **kdbr://** based URI. KDBR stands for 'KahaDB Replication' and this is the replication protocol used between the masters and the slaves. The master binds the specified port with slaves subsequently connect to and establish replication sessions. The host name in the uri MUST get updated to the actual machine's host name since this is also used to identify the nodes in the cluster. + +### The directory Attribute + +This is the data directory where the KahaDB will store it's persistence files. + diff --git a/kahadb.md b/kahadb.md new file mode 100644 index 0000000..e7a77d0 --- /dev/null +++ b/kahadb.md @@ -0,0 +1,298 @@ +Apache ActiveMQ ™ -- KahaDB + +[Features](features.html) > [Persistence](persistence.html) > [KahaDB](kahadb.html) + + +KahaDB is a file based persistence database that is local to the message broker that is using it. It has been optimized for fast persistence. It is the the default storage mechanism since **ActiveMQ 5.4**. KahaDB uses less file descriptors and provides faster recovery than its predecessor, the [AMQ Message Store](amq-message-store.html). + +Configuration +------------- + +To use KahaDB as the broker's persistence adapter configure ActiveMQ as follows (example): + + + + + + + +### KahaDB Properties + +Property + +Default + +Comments + +`archiveCorruptedIndex` + +`false` + +If **`true`**, corrupted indexes found at startup will be archived (not deleted). + +`archiveDataLogs` + +`false` + +If **`true`**, will move a message data log to the archive directory instead of deleting it. + +`checkForCorruptJournalFiles` + +`false` + +If **`true`**, will check for corrupt journal files on startup and try and recover them. + +`checkpointInterval` + +`5000` + +Time (ms) before check-pointing the journal. + +`checksumJournalFiles` + +`true` + +Create a checksum for a journal file. The presence of a checksum is required in order for the persistence adapter to be able to detect corrupt journal files. + +Before **ActiveMQ 5.9.0**: the default is **`false`**. + +`cleanupInterval` + +`30000` + +The interval (in ms) between consecutive checks that determine which journal files, if any, are eligible for removal from the message store. An eligible journal file is one that has no outstanding references. + +`compactAcksAfterNoGC` + +`10` + +From **ActiveMQ 5.14.0**: when the acknowledgement compaction feature is enabled this value controls how many store GC cycles must be completed with no other files being cleaned up before the compaction logic is triggered to possibly compact older acknowledgements spread across journal files into a new log file.  The lower the value set the faster the compaction may occur which can impact performance if it runs to often. + +`compactAcksIgnoresStoreGrowth` + +`false` + +From **ActiveMQ 5.14.0**: when the acknowledgement compaction feature is enabled this value controls whether compaction is run when the store is still growing or if it should only occur when the store has stopped growing (either due to idle or store limits reached).  If enabled the compaction runs regardless of the store still having room or being active which can decrease overall performance but reclaim space faster.  + +`concurrentStoreAndDispatchQueues` + +`true` + +Enable the dispatching of Queue messages to interested clients to happen concurrently with message storage. + +`concurrentStoreAndDispatchTopics` + +`false` + +Enable the dispatching of Topic messages to interested clients to happen concurrently with message storage + +Enabling this property is not recommended. + +`directory` + +`activemq-data` + +The path to the directory to use to store the message store data and log files. + +`directoryArchive` + +`null` + +Define the directory to move data logs to when they all the messages they contain have been consumed. + +`enableAckCompaction` + +`true` + +From **ActiveMQ 5.14.0**: this setting controls whether the store will perform periodic compaction of older journal log files that contain only Message acknowledgements. By compacting these older acknowledgements into new journal log files the older files can be removed freeing space and allowing the message store to continue to operate without hitting store size limits. + +`enableIndexWriteAsync` + +`false` + +If **`true`**, the index is updated asynchronously. + +`enableJournalDiskSyncs` + +`true` + +Ensure every journal write is followed by a disk sync (JMS durability requirement). + +This property is deprecated as of **ActiveMQ** **5.14.0**. + +From **ActiveMQ** **5.14.0**: see **`journalDiskSyncStrategy`**. + +`ignoreMissingJournalfiles` + +`false` + +If **`true`**, reports of missing journal files are ignored. + +`indexCacheSize` + +`10000` + +Number of index pages cached in memory. + +`indexDirectory` + +  + +From **ActiveMQ 5.10.0**: If set, configures where the KahaDB index files (**`db.data`** and **`db.redo`**) will be stored. If not set, the index files are stored in the directory specified by the **`directory`** attribute. + +`indexWriteBatchSize` + +`1000` + +Number of indexes written in a batch. + +`journalDiskSyncInterval` + +`1000` + +Interval (ms) for when to perform a disk sync when **`journalDiskSyncStrategy=periodic`**. A sync will only be performed if a write has occurred to the journal since the last disk sync or when the journal rolls over to a new journal file. + +`journalDiskSyncStrategy` + +`always` + +From **ActiveMQ 5.14.0**: this setting configures the disk sync policy. The list of available sync strategies are (in order of decreasing safety, and increasing performance): + +* **`always`** Ensure every journal write is followed by a disk sync (JMS durability requirement). This is the safest option but is also the slowest because it requires a sync after every message write. This is equivalent to the deprecated property **`enableJournalDiskSyncs=true`**. + +* **`periodic`** The disk will be synced at set intervals (if a write has occurred) instead of after every journal write which will reduce the load on the disk and should improve throughput. The disk will also be synced when rolling over to a new journal file. The default interval is 1 second. The default interval offers very good performance, whilst being safer than **`never`** disk syncing, as data loss is limited to a maximum of 1 second's worth. See **`journalDiskSyncInterval`** to change the frequency of disk syncs. + +* **`never`** A sync will never be explicitly called and it will be up to the operating system to flush to disk. This is equivalent to setting the deprecated property **`enableJournalDiskSyncs=false`**. This is the fastest option but is the least safe as there's no guarantee as to when data is flushed to disk. Consequently message loss _can_ occur on broker failure. + + +`journalMaxFileLength` + +`32mb` + +A hint to set the maximum size of the message data logs. + +`maxAsyncJobs` + +`10000` + +The maximum number of asynchronous messages that will be queued awaiting storage (should be the same as the number of concurrent MessageProducers). + +`preallocationScope` + +`entire_journal` + +From **ActiveMQ 5.14.0**: this setting configures how journal data files are preallocated. The default strategy preallocates the journal file on first use using the appender thread.  + +* **`entire_journal_async`** will use preallocate ahead of time in a separate thread. + +* **`none`** disables preallocation. + + +On SSD, using **`entire_journal_async`** avoids delaying writes pending preallocation on first use. + +**Note**: on HDD the additional thread contention for disk has a negative impact. Therefore use the default. + +`preallocationStrategy` + +`sparse_file` + +From **ActiveMQ 5.12.0**: This setting configures how the broker will try to preallocate the journal files when a new journal file is needed. + +* **`sparse_file`** \- sets the file length, but does not populate it with any data. + +* **`os_kernel_copy`** \- delegates the preallocation to the Operating System. + +* **`zeros`**  \- each preallocated journal file contains nothing but **`0x00`** throughout. + + +`storeOpenWireVersion` + +`11` + +Determines the version of OpenWire commands that are marshaled to the KahaDB journal.  + +Before **ActiveMQ 5.12.0**: the default value is **`6`**. + +Some features of the broker depend on information stored in the OpenWire commands from newer protocol revisions and these may not work correctly if the store version is set to a lower value.  KahaDB stores from broker versions greater than 5.9.0 will in many cases still be readable by the broker but will cause the broker to continue using the older store version meaning newer features may not work as intended.  + +For KahaDB stores that were created in versions prior to **ActiveMQ 5.9.0** it will be necessary to manually set **`storeOpenWireVersion="6"`** in order to start a broker without error. + +For tuning locking properties see the options listed at [Pluggable storage lockers.](pluggable-storage-lockers.html) + +### Slow File System Access Diagnostic Logging + +You can configure a non zero threshold in milliseconds for database updates. If database operation is slower than that threshold (for example if you set it to **`500`**), you may see messages like: + +`Slow KahaDB access: cleanup took 1277 | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker` + +You can configure a threshold used to log these messages by using a system property and adjust it to your disk speed so that you can easily pick up runtime anomalies. + +`-Dorg.apache.activemq.store.kahadb.LOG_SLOW_ACCESS_TIME=1500` + +Multi(m) kahaDB Persistence Adapter +=================================== + +From **ActiveMQ 5.6**: it's possible to distribute destinations stores across multiple kahdb persistence adapters. When would you do this? If you have one fast producer/consumer destination and another periodic producer destination that has irregular batch consumption then disk usage can grow out of hand as unconsumed messages become distributed across multiple journal files. Having a separate journal for each ensures minimal journal usage. Also, some destination may be critical and require disk synchronization while others may not. In these cases you can use the **`mKahaDB`** persistence adapter and filter destinations using wildcards, just like with destination policy entries. + +### Transactions + +Transactions can span multiple journals if the destinations are distributed. This means that two phase completion is necessary, which does impose a performance (additional disk sync) penalty to record the commit outcome. This penalty is only imposed if more than one journal is involved in a transaction. + +### Configuration + +Each instance of **`kahaDB`** can be configured independently. If no destination is supplied to a **`filteredKahaDB`**, the implicit default value will match any destination, queue or topic. This is a handy catch all. If no matching persistence adapter can be found, destination creation will fail with an exception. The **`filteredKahaDB`** shares its wildcard matching rules with [Per Destination Policies](per-destination-policies.html). + +From ActiveMQ 5.15, **`filteredKahaDB`** support a StoreUsage attribute named **`usage`**. This allows individual disk limits to be imposed on matching queues. + + + +  + + + + + + + + + + + + + + + + + + + + + + + + +### Automatic Per Destination Persistence Adapter + +Set **`perDestination="true"`** on the catch all, i.e., when no explicit destination is set, **`filteredKahaDB`** entry. Each matching destination will be assigned its own **`kahaDB`** instance. + + + +  + + + + + + + + + + + + + + +Specifying both **`perDestination="true"`** _and_ **`queue=">"`** on the same **`filteredKahaDB`** entry has not been tested. It _may_ result in the following exception being raised: + +`Reason: java.io.IOException: File '/opt/java/apache-activemq-5.9.0/data/mKahaDB/lock' could not be locked as lock is already held for this jvm` + diff --git a/known-bad-os-and-jvm-combinations.md b/known-bad-os-and-jvm-combinations.md new file mode 100644 index 0000000..eef1953 --- /dev/null +++ b/known-bad-os-and-jvm-combinations.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Known Bad OS and JVM Combinations + +[Using ActiveMQ](using-activemq.html) > [Known Bad OS and JVM Combinations](known-bad-os-and-jvm-combinations.html) + + +Operating System + +Java Virtual Machine + +Problem description + +Red Hat Linux Advanced Server release 2.1AS (Pensacola) kernel 2.4.9-e.62smp + +j2sdk1.4.0_01 + +Broker could not start up due to error with journal + diff --git a/latency.md b/latency.md new file mode 100644 index 0000000..69bcb20 --- /dev/null +++ b/latency.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- Latency + +[Community](community.html) > [FAQ](faq.html) > [Terminology](terminology.html) > [Latency](latency.html) + + +Latency + +We typically use this term when talking about the elapsed time it takes to process a single message. When using Request-Response message topologies its often means the round trip time for a message to flow to a service and for the reply to be recieved. + diff --git a/ldap-broker-discovery-mechanism.md b/ldap-broker-discovery-mechanism.md new file mode 100644 index 0000000..8af4e26 --- /dev/null +++ b/ldap-broker-discovery-mechanism.md @@ -0,0 +1,291 @@ +Apache ActiveMQ ™ -- LDAP Broker Discovery Mechanism + +[Using ActiveMQ 5](using-activemq-5.html) > [LDAP Broker Discovery Mechanism](ldap-broker-discovery-mechanism.html) + + +Configuring network topologies can be quite tedious when the number of brokers in the system is large. To help ease the configuration overhead for these types of situations, a broker can be configured to look up its broker connections using a LDAP v3 directory server. + +Note + +The basic feature was added to satisfy [AMQ-358](https://issues.apache.org/activemq/browse/AMQ-358). There are known problems and limitations with this implementation. These deficiencies have been addressed in [AMQ-1587](https://issues.apache.org/activemq/browse/AMQ-1587). The features discussed on this page require the patch attached to JIRA issue [AMQ-1587](https://issues.apache.org/activemq/browse/AMQ-1587). This patch should apply cleanly to the ActiveMQ 5.0.0 release or the current development trunk. + +LDAP v3 Directory Server Compliance +----------------------------------- + +The following table lists a known subset of directory servers and their compliance to work with the LDAP discovery feature. Most LDAP v3 directory servers will support this feature if they properly implement the [RFC2307](http://www.ietf.org/rfc/rfc2307.txt) schemas. In order to support the persistent search capabilities the server must implement the extension defined in [draft-ietf-ldapext-psearch-03.txt](http://www.ietf.org/proceedings/01aug/I-D/draft-ietf-ldapext-psearch-03.txt). + +Vendor + +Product + +Version + +[RFC2307](http://www.ietf.org/rfc/rfc2307.txt) + +[draft-ietf-ldapext-psearch-03.txt](http://www.ietf.org/proceedings/01aug/I-D/draft-ietf-ldapext-psearch-03.txt) + +Apache + +ApacheDS + +1.0.x + +![(tick)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png) + +![(tick)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png) + +Microsoft + +Active Directory + +Windows 2000 +Windows 2003 + +![(warning)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/warning.png) + +![(error)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/error.png) + +Microsoft + +Active Directory + +Windows 2003 R2 + +![(tick)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png) + +![(error)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/error.png) + +Sun + +OpenDS + +0.9.x + +![(tick)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png) + +![(tick)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png) + +OpenLDAP + +OpenLDAP + +2.3.x +2.4.x + +![(tick)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png) + +![(error)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/error.png) + +![(warning)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/warning.png) LDAP v3 directory server which do not support [RFC2307](http://www.ietf.org/rfc/rfc2307.txt) by default. Support can be added by manually importing them. See vendor specific setup requirements on how to do this. +![(error)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/error.png) LDAP v3 directory servers which do not support the [draft-ietf-ldapext-psearch-03.txt](http://www.ietf.org/proceedings/01aug/I-D/draft-ietf-ldapext-psearch-03.txt). + +LDAP Network Connector Properties +--------------------------------- + +Property + +Default + +Required + +Description + +uri + +null + +**Yes** + +The URI of the LDAP v3 Server to connect to (i.e. ldap://host:port, failover://(ldap://host1:port,ldap://host2:port). + +base + +null + +**Yes** + +The RDN base used as the root for the search criteria. + +user + +null + +**Yes**, if not using anonymousAuthentication + +The username needed to bind to the server. + +password + +null + +**Yes**, if not using anonymousAuthentication + +The password needed to bind to the server. + +anonymousAuthentication + +false + +**Yes**, if not using user/password + +Enable if you want to bind to the server anonymously. This is recommended over using user/password properties since your login credentials will not be stored in an unencrypted XML file. + +searchEventListener + +false + +No + +Enable if you want the broker to stay in sync with changes made to entries matching the search criteria. + +searchScope + +ONELEVEL_SCOPE + +No + +Can be any of search scopes defined by javax.naming.directory.SearchControls class. +OBJECT_SCOPE - search the named object defined by base. +ONELEVEL_SCOPE - search one level of the base. +SUBTREE_SCOPE - search entire subtree rooted at the base. + +searchFilter + +(&(objectClass=ipHost)(objectClass=ipService)) + +No + +Can be any filter that conforms to [RFC2254](http://www.ietf.org/rfc/rfc2254.txt). If a custom one is specified the actual search filter used will be (&(&(objectClass=ipHost)(objectClass=ipService))(USER CUSTOM)) + +Other Properties + +All of the properties defined in [Networks of Brokers](http://activemq.apache.org/networks-of-brokers.html) are also available to the ldapNetworkConnector. Any of the properties defined for a normal networkConnector will be used as connection parameters to any discovered brokers matching the search criteria. + +Example 1: Simple Network of Brokers +------------------------------------ + +### Network Configuration + +Topology + +LDAP v3 Directory Structure + +Entry + +![](ldap-broker-discovery-mechanism.data/Example1-Topology.jpg) + +![](ldap-broker-discovery-mechanism.data/Example1-DirectoryStructure.jpg) + +![](ldap-broker-discovery-mechanism.data/Example1-Entry.jpg) + +### ActiveMQ Configuration (activemq.xml) + +**srv-a.mydomain.com** + + + ... + + + + + + ... + + +**srv-b.mydomain.com** + + + ... + + + + + + ... + + +Example 2: Larger Network of Brokers +------------------------------------ + +### Network Configuration + +Topology + +LDAP v3 Directory Structure + +![](ldap-broker-discovery-mechanism.data/Example2-Topology.jpg) + +![](ldap-broker-discovery-mechanism.data/Example2-DirectoryStructure.jpg) + +### ActiveMQ Configuration (activemq.xml) + +**srv-a.mydomain.com** + + + ... + + + + + + + ... + + +**srv-b.mydomain.com** + + + ... + + + + + + ... + + +**srv-c.mydomain.com** + + + ... + + + + + + ... + + +**srv-d.mydomain.com** + + + ... + + + + + + ... + + diff --git a/leftheader.md b/leftheader.md new file mode 100644 index 0000000..f062782 --- /dev/null +++ b/leftheader.md @@ -0,0 +1,172 @@ +Apache ActiveMQ ™ -- LeftHeader + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [LeftHeader](leftheader.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +[![](http://www.logicblaze.com/images/logos/products/ActiveMQ/ActiveMQ_logo_200.jpg)](http://activemq.org) + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/leveldb-store.md b/leveldb-store.md new file mode 100644 index 0000000..b504ce5 --- /dev/null +++ b/leveldb-store.md @@ -0,0 +1,127 @@ +Apache ActiveMQ ™ -- LevelDB Store + +[Features](features.html) > [Persistence](persistence.html) > [LevelDB Store](leveldb-store.html) + + +Warning + +The LevelDB store has been deprecated and is no longer supported or recommended for use. The recommended store is [KahaDB](kahadb.html) + +Version Compatibility + +Available in ActiveMQ 5.8.0 and newer + +The LevelDB Store is a file based persistence database that is local to the message broker that is using it. It has been optimized to provide even faster persistence than KahaDB. It's similar to KahahDB but instead of using a custom B-Tree implementation to index the write ahead logs, it uses [LevelDB](https://code.google.com/p/leveldb/) based indexes which have several nice properties due to the 'append only' files access patterns : + +* Fast updates (No need to do random disk updates) +* Concurrent reads +* Fast index snapshots using hard links + +Both KahaDB and the LevelDB store have to do periodic garbage collection cycles to determine which log files can deleted. In the case of KahaDB, this can be quite expensive as you increase the amount of data stored and can cause read/write stalls while the collection occurs. The LevelDB store uses a much cheaper algorithm to determine when log files can be collected and avoids those stalls. + +Configuration +------------- + +You can configure ActiveMQ to use LevelDB for its persistence adapter - like below : + + + ... + + + + ... + + +### LevelDB Properties + +property name + +default value + +Comments + +directory + +"LevelDB" + +The directory which the store will use to hold it's data files. The store will create the directory if it does not already exist. + +sync + +true + +If set to false, then the store does not sync logging operations to disk + +logSize + +104857600 (100 MB) + +The max size (in bytes) of each data log file before log file rotation occurs. + +verifyChecksums + +false + +Set to true to force checksum verification of all data that is read from the file system. + +paranoidChecks + +false + +Make the store error out as soon as possible if it detects internal corruption. + +indexFactory + +org.fusesource.leveldbjni.JniDBFactory, org.iq80.leveldb.impl.Iq80DBFactory + +The factory classes to use when creating the LevelDB indexes + +indexMaxOpenFiles + +1000 + +Number of open files that can be used by the index. + +indexBlockRestartInterval + +16 + +Number keys between restart points for delta encoding of keys. + +indexWriteBufferSize + +6291456 (6 MB) + +Amount of index data to build up in memory before converting to a sorted on-disk file. + +indexBlockSize + +4096 (4 K) + +The size of index data packed per block. + +indexCacheSize + +268435456 (256 MB) + +The maximum amount of off-heap memory to use to cache index blocks. + +indexCompression + +snappy + +The type of compression to apply to the index blocks. Can be snappy or none. + +logCompression + +none + +The type of compression to apply to the log records. Can be snappy or none. + +For tuning locking properties please take a look at [Pluggable storage lockers](pluggable-storage-lockers.html) + +Also See +-------- + +* [Replicated LevelDB Store](replicated-leveldb-store.html) An extended version of this store which self replicates to other broker nodes to increase message availability. + diff --git a/license.md b/license.md new file mode 100644 index 0000000..545f16d --- /dev/null +++ b/license.md @@ -0,0 +1,273 @@ + ActiveMQ - Project License + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * **Project License** + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Overview +-------- + +Typically the licenses listed for the project are that of the project itself, and not of dependencies. + +Project License +--------------- + +### The Apache Software License, Version 2.0 + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1\. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2\. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3\. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4\. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5\. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6\. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7\. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8\. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9\. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "\[\]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright \[yyyy\] \[name of copyright owner\] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/life-cycle.md b/life-cycle.md new file mode 100644 index 0000000..1da5145 --- /dev/null +++ b/life-cycle.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- Life Cycle + +[Features](features.html) > [ActiveMQ Real Time](activemq-real-time.html) > [Life Cycle](life-cycle.html) + + +Life cycle of Channels +---------------------- + +Blaze Channels are in one of five states: + +### Constructed - the Channel isn't initialized or has been shutDown + +### initialized - + +you can explicitly initialize a Channel by invoking its init() method. At this point its Configuration is set + + BlazeChannelFactory factory = new BlazeChannelFactory(); + BlazeChannel channel = factory.createChannel(); + channel.init(); + +### started - + +this will implicitly initialize the channel and start the Channel's underlying communication with its peers: + + BlazeChannelFactory factory = new BlazeChannelFactory(); + BlazeChannel channel = factory.createChannel(); + channel.start(); + +### stopped - + +this will stop communication - however you are able to re-start the channel at a latter point + + BlazeChannelFactory factory = new BlazeChannelFactory(); + BlazeChannel channel = factory.createChannel(); + channel.stop(); + // do something else + ... + //re-start + channel.start(); + +### shut down + +* this will implicitly call stop() - and de-construct the channel. It is possible to re-initialize the channel again - and it is recommend that to apply configuration changes to the channel - it be shut down and re-started - e.g. + + BlazeChannelFactory factory = new BlazeChannelFactory(); + BlazeChannel channel = factory.createChannel(); + channel.shutDown(); + // change the congiguration + channel.getConfiguration().setBroadcastURI("tcp://localhost:60661"); + //re-start + channel.start(); + diff --git a/load-testing-with-camel.md b/load-testing-with-camel.md new file mode 100644 index 0000000..d5bbbb0 --- /dev/null +++ b/load-testing-with-camel.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- Load Testing with Camel + +[Features](features.html) > [Performance](performance.html) > [Load Testing with Camel](load-testing-with-camel.html) + + +Load Testing with Camel +----------------------- + +It is preferable at the time of writing to check out the source of ActiveMQ and Camel and perform local builds first. + +Then run a broker either via the **bin/activemq** script or you could be untar/unzip the **assembly/target/apache-activemq**.tar.gz* file first then run its **bin/activemq** script. + +Now to run a load test type + +activemq/activemq-camel-loadtest> mvn test -Dtest=LocalBrokerParallelProducerLoadTest + +If you want to tinker with the configuration of ActiveMQ and Camel then edit the LocalBrokerParallelProducerLoadTest-context.xml file. + diff --git a/log4j-warn-no-appenders-could-be-found-for-logger.md b/log4j-warn-no-appenders-could-be-found-for-logger.md new file mode 100644 index 0000000..108dfa4 --- /dev/null +++ b/log4j-warn-no-appenders-could-be-found-for-logger.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- log4j-WARN No appenders could be found for logger + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [log4j-WARN No appenders could be found for logger](log4j-warn-no-appenders-could-be-found-for-logger.html) + + +Error +----- + +log4j:WARN No appenders could be found for logger +(org.activemq.transport.tcp.TcpTransportChannel). +log4j:WARN Please initialize the log4j system properly. + +Solution +-------- + +You have not initialised log4j properly. Try reading the [online log4j manual](http://logging.apache.org/log4j/docs/manual.html) or by adding a log4j.properties file to your classpath (to a directory which is on the classpath to be precise). + diff --git a/logging-a-warning-if-you-forget-to-start-a-connection.md b/logging-a-warning-if-you-forget-to-start-a-connection.md new file mode 100644 index 0000000..30bcbc8 --- /dev/null +++ b/logging-a-warning-if-you-forget-to-start-a-connection.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- Logging a warning if you forget to start a Connection + +[Features](features.html) > [Logging a warning if you forget to start a Connection](logging-a-warning-if-you-forget-to-start-a-connection.html) + + +Logging a warning if you forget to start a Connection +----------------------------------------------------- + +A _very_ common gotcha when working with JMS is forgetting to start the JMS connection, creating a consumer and not having it receive any messages. I myself have tripped up over this one many many times! ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) + +To try and help diagnose this mistake and give you an early warning by default ActiveMQ 4.2 detects this and generates a handy warning message telling you to call the [Connection.start() method](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Connection.html#start()) on the JMS connection. + +For more details on [this feature](https://issues.apache.org/activemq/browse/AMQ-1253) see the discussion of the **warnAboutUnstartedConnectionTimeout** property on the [Connection Configuration URI](connection-configuration-uri.html) + diff --git a/logging-interceptor.md b/logging-interceptor.md new file mode 100644 index 0000000..47e1772 --- /dev/null +++ b/logging-interceptor.md @@ -0,0 +1,88 @@ +Apache ActiveMQ ™ -- Logging Interceptor + +[Features](features.html) > [Interceptors](interceptors.html) > [Logging Interceptor](logging-interceptor.html) + + +Logging Interceptor +------------------- + +The Logging Interceptor is a pretty trivial [Interceptor](interceptors.html) which just logs to [Jakarta Commons Logging](http://jakarta.apache.org/commons/logging/) or [log4j](http://logging.apache.org/log4j/docs/) as messages are sent or acknowledged on a broker. + +The default logging level used is **INFO**. If you want to increase/reduce the logging you can use [change it via commons logging or log4j](how-do-i-change-the-logging.html). + +As of version 5.3 the logging Interceptor is more configurable. The idea is to log all events but be able to turn off logging for certain event groups by configuration. + +Currently the following groups are supported: + +**Attribute** + +**Description** + +**Default Value** + +logAll + +Log all Events + +false + +logConnectionEvents + +Events related to connections and sessions + +true + +logTransactionEvents + +Events related to transaction handling + +false + +logConsumerEvents + +Events related to consuming messages + +false + +logProducerEvents + +Events related to producing messages + +false + +logInternalEvents + +Events normally not of Interest for users like failover, querying internal objects etc + +false + +logSessionEvents + +Events related to adding and removing sessions + +true + +Only connection events logging is enabled by default. + +You can enable the logging interceptor using the following [XML configuration](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/util/plugin-broker.xml). This example enables all logging and disables the connection event logging: + + + + + + + + + + + + + + + + diff --git a/mail-lists.md b/mail-lists.md new file mode 100644 index 0000000..9ad4b60 --- /dev/null +++ b/mail-lists.md @@ -0,0 +1,96 @@ + ActiveMQ - Project Mailing Lists + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * **Mailing Lists** + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Project Mailing Lists +--------------------- + +These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link. + +Name + +Subscribe + +Unsubscribe + +Post + +Archive + +User List + +[Subscribe](mailto:users-subscribe@activemq.apache.org) + +[Unsubscribe](mailto:users-unsubscribe@activemq.apache.org) + +[Post](mailto:users@activemq.apache.org) + +- + +Development List + +[Subscribe](mailto:dev-subscribe@activemq.apache.org) + +[Unsubscribe](mailto:dev-unsubscribe@activemq.apache.org) + +[Post](mailto:dev@activemq.apache.org) + +- + diff --git a/mailing-lists.md b/mailing-lists.md new file mode 100644 index 0000000..7872ec8 --- /dev/null +++ b/mailing-lists.md @@ -0,0 +1,72 @@ +Apache ActiveMQ ™ -- Mailing Lists + +[Community](community.html) > [Mailing Lists](mailing-lists.html) + + +The following mailing lists are available. Before posting you might want to read the [Tips for getting help](tips-for-getting-help.html). + +Apache Mailing Lists +-------------------- + +List Name + +Subscribe + +Unsubscribe + +Archive + +Nabble (Online Forums) + +MarkMail (searchable via UI) + +ActiveMQ User List + +[Subscribe](mailto:users-subscribe@activemq.apache.org) + +[Unsubscribe](mailto:users-unsubscribe@activemq.apache.org) + +[Archive](http://mail-archives.apache.org/mod_mbox/activemq-users/) + +[Nabble](user-forum.html) + +[ActiveMQ Users](http://activemq-users.markmail.org/) + +ActiveMQ Developer List + +[Subscribe](mailto:dev-subscribe@activemq.apache.org) + +[Unsubscribe](mailto:dev-unsubscribe@activemq.apache.org) + +[Archive](http://mail-archives.apache.org/mod_mbox/activemq-dev/) + +[Nabble](developer-forum.html) + +[ActiveMQ Dev](http://activemq-dev.markmail.org/) + +ActiveMQ SCM List + +[Subscribe](mailto:commits-subscribe@activemq.apache.org) + +[Unsubscribe](mailto:commits-unsubscribe@activemq.apache.org) + +[Archive](http://mail-archives.apache.org/mod_mbox/activemq-commits/) + +[ActiveMQ SCM](http://activemq-commits.markmail.org/) + +ActiveMQ Issues List + +[Subscribe](mailto:issues-subscribe@activemq.apache.org) + +[Unsubscribe](mailto:issues-unsubscribe@activemq.apache.org)[](mailto:commits-unsubscribe@activemq.apache.org) + +[Archive](http://mail-archives.apache.org/mod_mbox/activemq-issues/)[](http://mail-archives.apache.org/mod_mbox/activemq-commits/) + +  + +[ActiveMQ Issues](http://activemq-issues.markmail.org/) + +### Discussion Forums + +If you prefer you could use our [Discussion Forums](discussion-forums.html) which are sync'd with the above mailing lists. + diff --git a/manage-durable-subscribers.md b/manage-durable-subscribers.md new file mode 100644 index 0000000..111df4b --- /dev/null +++ b/manage-durable-subscribers.md @@ -0,0 +1,47 @@ +Apache ActiveMQ ™ -- Manage Durable Subscribers + +[Features](features.html) > [Consumer Features](consumer-features.html) > [Manage Durable Subscribers](manage-durable-subscribers.html) + + +[Durable topic subscribers](how-do-durable-queues-and-topics-work.html) that are offline for a long period of time are usually not desired in the system. The reason for that is that broker needs to keep all the messages sent to those topics for the said subscribers. And this message piling can over time exhaust broker store limits for example and lead to the overall slowdown of the system. + +You can always manually unsubscribe inactive durable subscriber using management tools like [JConsole](jmx.html) or [Web Console](web-console.html), but clearly there's more that can be done to help manage systems that use durable subscribers (perhaps coming from environments that they don't control) + +Staring with version 5.6 we introduced a few improvements in this area. + +### Expiring messages + +Some applications send message with specified time to live. If those messages are kept on the broker for the offline durable subscriber we need to remove them when they reach their expiry time. Just as we do with queues, now we check for those messages every 30 seconds by default, which can be tuned with the appropriate [destination policy](per-destination-policies.html). For example, the following entry + + + +will configure the broker to check for expired messages every 5 minutes. + +### Removing inactive subscribers + +The other thing we can do is to automatically unsubscribe durable subscribers that are not active for some period of time. For that purpose we introduced two new broker properties: + +property + +default + +description + +offlineDurableSubscriberTimeout + +-1 + +Amount of time (in milliseconds) after which we remove inactive durable subs. Default -1, means don't remove them + +offlineDurableSubscriberTaskSchedule + +300000 + +How often we check (in milliseconds) + +An example configuration could look like + + + +which means that we check every hour and remove subscriber that has been offline for a day. + diff --git a/management-api.md b/management-api.md new file mode 100644 index 0000000..e8d5354 --- /dev/null +++ b/management-api.md @@ -0,0 +1,900 @@ + /\* */ + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +Apollo 1.7.1 Management API +=========================== + +* [Overview](#Overview) +* * [Authentication](#Authentication) + * [JSON Representation](#JSON_Representation) + * [Response Codes](#Response_Codes) + * [Working with Tabular Results](#Working_with_Tabular_Results) +* [Route Reference](#Route_Reference) +* * [Broker Management](#Broker_Management) + * [Virtual Host Management](#Virtual_Host_Management) + * [Connection Management](#Connection_Management) + * [Broker Configuration Management](#Broker_Configuration_Management) + * [Session Management](#Session_Management) + +Overview +-------- + +Apollo's REST API runs on port 61680 or via SSL on port 61681. If your running an Apollo broker on your local machine, you could access the API at the following HTTP URLs: + + http://localhost:61680 + https://localhost:61681 + +For all of the rest of this document, we will be leaving off that part, since it is the same for every API call. + +### Authentication + +The broker requires all requests against the management API to supply user credentials which have administration privileges. + +The user credentials can be supplied using via HTTP basic authentication. Example: + + $ curl -u "admin:password" http://localhost:61680/broker + +### JSON Representation + +The API routes are intended to be access programmatically as JSON services but they also provide an HTML representation so that the API services can easily be browsed using a standard web browser. + +You must either set the HTTP `Accept` header to `application/json` or append `.json` to the URL to get the JSON representation of the data. Example: + + $ curl -H "Accept: application/json" -u "admin:password" \ + http://localhost:61680/broker + + $ curl -u "admin:password" http://localhost:61680/broker.json + +### Response Codes + +You can use the HTTP response code to determine if your request succeeded or failed. Expect the following: + +* _`200`_: If a GET, PUT, or DELETE request succeeds. +* _`303`_: If a POST request succeeds. +* _`304`_: If the resource cannot be modified at the current time. +* _`400`_: The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications. +* _`404`_: If the resource cannot be found. +* _`401`_: If the user does not have access to the resource. +* _`50x`_: If an internal server error occurs while processing the request. + +If your get a _`40x`_ or _`50x`_ response code, the response message will contain a document describing the failure. For example, if we try to use invalid query syntax you would get: + + $ curl -i -u "admin:password" `echo 'http://localhost:61680/broker/virtual-hosts/apollo-01/queues.json?f=id&q=foo(id=="foo")'` + HTTP/1.1 400 Bad Request + Content-Type: application/json + Transfer-Encoding: chunked + + {"message":"Unable to find function (method): \"foo(java.lang.Boolean)\" in any user-defined function handlers or the default function handler"} + +### Working with Tabular Results + +Many of the resource routes provided by the broker implement a selectable paged tabular interface. A good example of such a resource route is the connections list. It's route is: + + /broker/connections + +Example: + + $ curl -u "admin:password" \ + 'http://localhost:61680/broker/connections.json' + +Results in a [Data Page](./api/apollo-dto/org/apache/activemq/apollo/dto/DataPageDTO.html) : + + + { + "page":0, + "page_size":100, + "total_pages":1, + "total_rows":2, + "headers":[ + "*" + ], + "rows":[ + { + "id":"4", + "state":"STARTED", + "state_since":1306848325102, + "read_counter":103, + "write_counter":239110628, + "connector":"tcp", + "protocol":"stomp", + "remote_address":"/127.0.0.1:61775", + "protocol_version":"1.0", + "user":"admin", + "waiting_on":"client request", + "subscription_count":1 + }, + { + "id":"5", + "state":"STARTED", + "state_since":1306848325102, + "read_counter":227739229, + "write_counter":113, + "connector:"tcp", + "protocol":"stomp", + "remote_address":"/127.0.0.1:61776", + "protocol_version":"1.0", + "user":"admin", + "waiting_on":"blocked sending to: org.apache.activemq.apollo.broker.Queue$$anon$1@13765e9b", + "subscription_count":0 + } + ] + } + + +The `*` header field means the record was selected. To narrow down the selected fields you can add multiple `f` query parameters to pick the fields you want to retrieve. + +Example: + + $ curl -u "admin:password" \ + 'http://localhost:61680/broker/connections.json?f=id&f=read_counter' + +Results in : + + + { + "page":0, + "page_size":100, + "total_pages":1, + "total_rows":2, + "headers":[ + "id", + "read_counter" + ], + "rows":[ + [ + "7", + 110733109 + ], + [ + "6", + 103 + ] + ] + } + + +If you want to narrow down the records which get selected, you can set a `q` query parameter to SQL 92 style where clause which uses the record's fields to filter down the selected records. + +For example to only view local connection, you would want to use a where clause like `remote_address LIKE "/127.0.0.01:%"` which to execute with `curl` you would run: + + curl -u "admin:password" \ + 'http://localhost:61680/broker/connections.json?q=remote_address%20LIKE%20"/127.0.0.1:%"' + +The records are paged. The default page size is 100, so only the first 100 records will be displayed. If you want to view subsequent results, you must set the `p` query parameter to the page you wish to access. You can change the page size by setting the `ps` query parameter. + +The results are typically return in the order in which the records were original created. If you want to retrieve them in a different order, use the `o` query parameter to define the order in which they are returned. Example: + + curl -u "admin:password" \ + 'http://localhost:61680/broker/connections.json?o=write_counter%20DESC&o=id' + +Route Reference +--------------- + +### Broker Management + +Route + +On Success + +`POST` + +`/broker/action/shutdown.json` + +`303` + +Shuts down the JVM. + +`GET` + +`/broker.json` + +`200 [BrokerStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/BrokerStatusDTO.html)` + +General information about the broker, JVM, and OS status. Example: + +`curl -u "admin:password" http://localhost:61680/broker.json` + + + { + "id": "default", + "state": "STARTED", + "state_since": 1314573353753, + "version": "1.7.1", + "jvm_metrics": { + "heap_memory": { + "used": 22165160, + "alloc": 162201600, + "max": 954466304 + }, + "non_heap_memory": { + "used": 44522128, + "alloc": 45944832, + "max": 136314880 + }, + "classes_loaded": 5776, + "classes_unloaded": 0, + "threads_current": 21, + "threads_peak": 22, + "os_arch": "x86_64", + "os_name": "Mac OS X 10.7", + "os_memory_total": 8589934592, + "os_memory_free": 3339231232, + "os_swap_total": 0, + "os_swap_free": 2147483648, + "os_fd_open": 111, + "os_fd_max": 10240, + "os_load_average": 0.99267578125, + "os_cpu_time": 5630000000, + "os_processors": 4, + "runtime_name": "86739@chirino-mbp.local", + "jvm_name": "Java HotSpot(TM) 64-Bit Server VM 1.6.0_26 (Apple Inc.)", + "uptime": 37761, + "start_time": 1314573351000 + }, + "current_time": 1314573388707, + "virtual_hosts": ["default"], + "connectors": ["tls", "tcp"], + "connection_counter": 0 + } + + +You can the `?connections=true` query parameter to have a list of connections included n the result. + +`GET` + +`/broker/queue-metrics.json` + +`200 [AggregateDestMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateDestMetricsDTO.html)` + +Aggregates the messaging metrics for all the queue destinations. Example: + +`curl -u "admin:password" http://localhost:61680/broker/queue-metrics.json` + + + { + "current_time": 1314573698381, + "enqueue_item_counter": 57343, + "enqueue_size_counter": 63128582, + "enqueue_ts": 1314573698478, + "dequeue_item_counter": 55121, + "dequeue_size_counter": 60681503, + "dequeue_ts": 1314573698478, + "producer_counter": 22, + "consumer_counter": 16, + "producer_count": 22, + "consumer_count": 16, + "expired_item_counter": 0, + "expired_size_counter": 0, + "expired_ts": 1314573695015, + "nack_item_counter": 0, + "nack_size_counter": 0, + "nack_ts": 1314573695015, + "queue_size": 2447079, + "queue_items": 2222, + "swapped_in_size_max": 5963776, + "swapped_in_size": 5278341, + "swapped_in_items": 4794, + "swapping_in_size": 0, + "swapping_out_size": 0, + "swap_out_item_counter": 60, + "swap_out_size_counter": 65931, + "swap_in_item_counter": 60, + "swap_in_size_counter": 65931, + "objects": 10 + } + + +`GET` + +`/broker/topic-metrics.json` + +`200 [AggregateDestMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateDestMetricsDTO.html)` + +Aggregates the messaging metrics for all the topic destinations + +`GET` + +`/broker/dsub-metrics.json` + +`200 [AggregateDestMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateDestMetricsDTO.html)` + +Aggregates the messaging metrics for all the durable subscription destinations + +`GET` + +`/broker/dest-metrics.json` + +`200 [AggregateDestMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateDestMetricsDTO.html)` + +Aggregates the messaging metrics for all the destinations + +### Virtual Host Management + +Route + +On Success + +`GET` + +`/broker/virtual-hosts.json` + +`200 [DataPageDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/DataPageDTO.html) paging [VirtualHostStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/VirtualHostStatusDTO.html) + +` + +Provides tabular access to all the virtual hosts. + +`GET` + +`/broker/virtual-hosts/{host}.json` + +`200 [VirtualHostStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/VirtualHostStatusDTO.html)` + +General details about the `{host}` virtual host. Example: + +`curl -u "admin:password" http://localhost:61680/broker/virtual-hosts/default.json` + + + { + "id": "default", + "state": "STARTED", + "state_since": 1314573798989, + "topics": [], + "queues": ["example-4", "example-7", "example-6", "example-0", + "example-3", "example-8", "example-1", "example-5", + "example-9", "example-2"], + "dsubs": [], + "store": true, + "host_names": ["default", "localhost", "127.0.0.1"] + } + + +`GET` + +`/broker/virtual-hosts/{host}/queue-metrics.json` + +`200 [AggregateDestMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateDestMetricsDTO.html)` + +Aggregates the messaging metrics for all the queue destinations on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/topic-metrics.json` + +`200 [AggregateDestMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateDestMetricsDTO.html)` + +Aggregates the messaging metrics for all the topic destinations on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/dsub-metrics.json` + +`200 [AggregateDestMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateDestMetricsDTO.html)` + +Aggregates the messaging metrics for all the durable subscription destinations on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/dest-metrics.json` + +`200 [AggregateDestMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateDestMetricsDTO.html)` + +Aggregates the messaging metrics for all the destinations on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/store.json` + +`200 [StoreStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/StoreStatusDTO.html) sub class (depends on the store implementation)` + +Gets metrics about the status of the message store used by the `{host}` virtual host. Example: + +`curl -u "admin:password" http://localhost:61680/broker/virtual-hosts/default/store.json` + + + { + "@class": "bdb_store_status", + "id": "bdb store at /Users/chirino/opt/default/data", + "state": "STARTED", + "state_since": 1314573798939, + "canceled_message_counter": 0, + "flushed_message_counter": 581034, + "canceled_enqueue_counter": 0, + "flushed_enqueue_counter": 581034, + "message_load_latency": { + "count": 0, + "total": 0, + "max": 0, + "min": 0 + }, + "flush_latency": { + "count": 0, + "total": 0, + "max": 0, + "min": 0 + }, + "pending_stores": 0, + "message_load_batch_size": { + "count": 0, + "total": 0, + "max": -2147483648, + "min": 2147483647 + } + } + + +`GET` + +`/broker/virtual-hosts/{host}/queues.json` + +`200 [DataPageDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/DataPageDTO.html) paging [QueueStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/QueueStatusDTO.html) + +` + +Provides tabular access to all queue destinations on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/queues/{dest}.json` + +`200 [QueueStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/QueueStatusDTO.html)` + +Gets metrics and details about the `{dest}` queue on the `{host}` virtual host. Example: + +You can the `?producers=true` query parameter to have a list of producers included n the result. You can the `?consumers=true` query parameter to have a list of consumers included n the result. + +`curl -u "admin:password" http://localhost:61680/broker/virtual-hosts/default/queues/example-5.json?producers=true&consumers=true` + + + { + "id": "example-5", + "state": "STARTED", + "state_since": 1314573814532, + "config": { + "other": [] + }, + "binding": { + "@class": "queue_destination", + "path": ["example-5"] + }, + "metrics": { + "current_time": 1314574273342, + "enqueue_item_counter": 878638, + "enqueue_size_counter": 975430031, + "enqueue_ts": 1314574273335, + "dequeue_item_counter": 878522, + "dequeue_size_counter": 975301271, + "dequeue_ts": 1314574273328, + "producer_counter": 4, + "consumer_counter": 4, + "producer_count": 2, + "consumer_count": 2, + "expired_item_counter": 0, + "expired_size_counter": 0, + "expired_ts": 1314573814488, + "nack_item_counter": 118, + "nack_size_counter": 131098, + "nack_ts": 1314573928240, + "queue_size": 128760, + "queue_items": 116, + "swapped_in_size_max": 688128, + "swapped_in_size": 688200, + "swapped_in_items": 620, + "swapping_in_size": 0, + "swapping_out_size": 0, + "swap_out_item_counter": 605, + "swap_out_size_counter": 671279, + "swap_in_item_counter": 605, + "swap_in_size_counter": 671279 + }, + "entries": [], + "producers": [{ + "kind": "connection", + "id": "43", + "label": "/127.0.0.1:51632", + "enqueue_item_counter": 12168, + "enqueue_size_counter": 13495374, + "enqueue_ts": 1314574273328 + }, + { + "kind": "connection", + "id": "76", + "label": "/127.0.0.1:51665", + "enqueue_item_counter": 13663, + "enqueue_size_counter": 15154824, + "enqueue_ts": 1314574273336 + }], + "consumers": [{ + "kind": "connection", + "id": "65", + "label": "/127.0.0.1:51654", + "enqueue_item_counter": 12678, + "enqueue_size_counter": 14060805, + "enqueue_ts": 1314574273248, + "position": 878615, + "acquired_count": 60, + "acquired_size": 66600, + "total_ack_count": 12618, + "total_nack_count": 0, + "waiting_on": "ack" + }, + { + "kind": "connection", + "id": "75", + "label": "/127.0.0.1:51664", + "enqueue_item_counter": 13397, + "enqueue_size_counter": 14860500, + "enqueue_ts": 1314574273248, + "position": 878639, + "acquired_count": 56, + "acquired_size": 62160, + "total_ack_count": 13341, + "total_nack_count": 0, + "waiting_on": "producer" + }] + } + + +`DELETE` + +`/broker/virtual-hosts/{host}/queues/{dest}.json` + +`200` + +Deletes the `{dest}` queue on the `{host}` virtual host. + +`PUT` + +`/broker/virtual-hosts/{host}/queues/{dest}.json` + +`200` + +Creates the `{dest}` queue on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/topics.json` + +`200 [DataPageDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/DataPageDTO.html) paging [TopicStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/TopicStatusDTO.html) + +` + +Provides tabular access to all topic destinations on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/topics/{dest}.json` + +`200 [TopicStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/TopicStatusDTO.html)` + +Gets metrics and details about the `{dest}` topic on the `{host}` virtual host. Example: + +You can the `?producers=true` query parameter to have a list of producers included n the result. You can the `?consumers=true` query parameter to have a list of consumers included n the result. + +`curl -u "admin:password" http://localhost:61680/broker/virtual-hosts/default/topics/example-2.json?producers=true&consumers=true` + + + { + "id": "example-2", + "state": "STARTED", + "state_since": 1314574398831, + "config": { + "other": [] + }, + "producers": [{ + "kind": "connection", + "id": "78", + "label": "/127.0.0.1:51668", + "enqueue_item_counter": 1133674, + "enqueue_size_counter": 1259289609, + "enqueue_ts": 1314574422110 + }], + "consumers": [{ + "kind": "connection", + "id": "86", + "label": "/127.0.0.1:51677", + "enqueue_item_counter": 566836, + "enqueue_size_counter": 629643696, + "enqueue_ts": 1314574422110 + }, + { + "kind": "connection", + "id": "82", + "label": "/127.0.0.1:51673", + "enqueue_item_counter": 566838, + "enqueue_size_counter": 629645913, + "enqueue_ts": 1314574422110 + }], + "dsubs": [], + "metrics": { + "current_time": 0, + "enqueue_item_counter": 1133674, + "enqueue_size_counter": 1259289609, + "enqueue_ts": 1314574422110, + "dequeue_item_counter": 1133674, + "dequeue_size_counter": 1259289609, + "dequeue_ts": 1314574422110, + "producer_counter": 1, + "consumer_counter": 2, + "producer_count": 1, + "consumer_count": 2, + "expired_item_counter": 0, + "expired_size_counter": 0, + "expired_ts": 0, + "nack_item_counter": 0, + "nack_size_counter": 0, + "nack_ts": 0, + "queue_size": 0, + "queue_items": 0, + "swapped_in_size_max": 0, + "swapped_in_size": 0, + "swapped_in_items": 0, + "swapping_in_size": 0, + "swapping_out_size": 0, + "swap_out_item_counter": 0, + "swap_out_size_counter": 0, + "swap_in_item_counter": 0, + "swap_in_size_counter": 0 + } + } + + +`DELETE` + +`/broker/virtual-hosts/{host}/topics/{dest}.json` + +`200` + +Deletes the `{dest}` topic on the `{host}` virtual host. Returns a 304 (Not Modified) if the topic is being used by any clients. + +`PUT` + +`/broker/virtual-hosts/{host}/topics/{dest}.json` + +`200` + +Creates the `{dest}` topic on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/topic-queues/{dest}/{queue}.json` + +`200 [QueueStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/QueueStatusDTO.html)` + +Gets metrics and details about `{queue}` consumer queue which is being used to spool messages being sent to the `{dest}` topic on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/dsubs.json` + +`200 [DataPageDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/DataPageDTO.html) paging [QueueStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/QueueStatusDTO.html) + +` + +Provides tabular access to all durable subscription destinations on the `{host}` virtual host. + +`GET` + +`/broker/virtual-hosts/{host}/dsubs/{dest}.json` + +`200 [QueueStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/QueueStatusDTO.html)` + +Gets metrics and details about the `{dest}` durable subscription on the `{host}` virtual host. + +### Connection Management + +Route + +On Success + +`GET` + +`/broker/connectors.json` + +`200 [DataPageDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/DataPageDTO.html) paging [ServiceStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/ServiceStatusDTO.html) + +` + +Provides tabular access to all connectors on the broker. + +`GET` + +`/broker/connectors/{connector}.json` + +`200 [ServiceStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/ServiceStatusDTO.html)` + +Gets details about the `{connector}`. Example: + +`curl -u "admin:password" http://localhost:61680/broker/connectors/tcp.json` + + + { + "id": "tcp", + "state": "STARTED", + "state_since": 1314573798510, + "local_address": "/0.0.0.0:61613", + "protocol": "any", + "connection_counter": 100, + "connected": 12 + } + + +You can the `?connections=true` query parameter to have a list of connections included n the result. + +`POST` + +`/broker/connectors/{connector}/action/stop.json` + +`303` + +Stops the `{connector}`. + +`POST` + +`/broker/connectors/{connector}/action/start.json` + +`303` + +Starts the `{connector}`. + +`GET` + +`/broker/connection-metrics.json` + +`200 [AggregateConnectionMetricsDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/AggregateConnectionMetricsDTO.html)` + +Aggregates metrics about the connections. + +`GET` + +`/broker/connections.json` + +`200 [DataPageDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/DataPageDTO.html) paging [ConnectionStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/ConnectionStatusDTO.html) + +` + +Provides tabular access to all connections on the broker. + +`GET` + +`/broker/connections/{connection}.json` + +`200 [ConnectionStatusDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/ConnectionStatusDTO.html)` + +Gets details about the `{connection}`. Example: + +`curl -u "admin:password" http://localhost:61680/broker/connections/108.json` + + + { + "id": "108", + "state": "STARTED", + "state_since": 1314574636579, + "last_read_size": 0, + "last_write_size": 32973, + "read_counter": 106, + "write_counter": 632923992, + "connector: "tcp", + "protocol": "stomp", + "protocol_version": "1.0", + "remote_address": "/127.0.0.1:51733", + "local_address": "/127.0.0.1:61613", + "user": "admin", + "waiting_on": "client request", + "subscription_count": 1 + } + + +`DELETE` + +`/broker/connections/{connection}.json` + +`200` + +Deletes the `{connection}`. + +`POST` + +`/broker/connections/{connection}/action/delete.json` + +`303` + +Deletes the `{connection}`. + +### Broker Configuration Management + +Route + +On Success + +`GET` + +`/config/runtime.json` + +`200 [BrokerDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/BrokerDTO.html)` + +The runtime configuration the broker using. This version of the configuration has all property placeholders resolved and then password fields are cleared. + +`GET` + +`/config/runtime.json` + +`200 [BrokerDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/BrokerDTO.html)` + +The runtime configuration the broker using. This version of the configuration has all property placeholders resolved and then password fields are cleared. + +`GET` + +`/config/files.json` + +`200 string array` + +A listing of the configuration files. + +`GET` + +`/config/files/{file}` + +`200 bytes` + +Downloads the contents of the config file. + +`POST` + +`/config/files/{file}` + +`303` + +Updates the contents of the config file. You can either post the raw bytes, or post a url encoded form with a field `config` set to the contents of the file. In the latter case, the content type is expected to be `application/x-www-form-urlencoded` + +### Session Management + +Route + +On Success + +`GET` + +`/broker/whoami.json` + +`200 [PrincipalDTO](http://activemq.apache.org/apollo/versions/1.7.1/website/documentation/api/apollo-dto/org/apache/activemq/apollo/dto/PrincipalDTO.html) array` + +Lists the principals associated with your username. Example: curl -u “admin:password” http://localhost:61680/broker/whoami.json + + + [{ + "name": "admin", + "kind": "org.apache.activemq.jaas.UserPrincipal" + }, { + "name": "admins", + "kind": "org.apache.activemq.jaas.GroupPrincipal" + }] + + +`GET` + +`/broker/signin.json` + +`200 true` + +Log you in using the `username` and `password` query parameters. creates a cookie based session. + +`POST` + +`/broker/signin.json` + +`200 true` + +Signs you in using the `username` and `password` form parameters. Creates a cookie based session. + +`GET` + +`/broker/signout.json` + +`200 true` + +Signs you off by invalidating your session. \ No newline at end of file diff --git a/masterslave.md b/masterslave.md new file mode 100644 index 0000000..d4c93c1 --- /dev/null +++ b/masterslave.md @@ -0,0 +1,44 @@ +Apache ActiveMQ ™ -- MasterSlave + +[Features](features.html) > [Clustering](clustering.html) > [MasterSlave](masterslave.html) + + +Introduction to Master / Slave +------------------------------ + +The following are the different kinds of Master/Slave configurations available: + +Master Slave Type + +Requirements + +Pros + +Cons + +[Shared File System Master Slave](shared-file-system-master-slave.html) + +A shared file system such as a SAN + +Run as many slaves as required. Automatic recovery of old masters + +Requires shared file system + +[JDBC Master Slave](jdbc-master-slave.html) + +A Shared database + +Run as many slaves as required. Automatic recovery of old masters + +Requires a shared database. Also relatively slow as it cannot use the high performance journal + +[Replicated LevelDB Store](replicated-leveldb-store.html) + +ZooKeeper Server + +Run as many slaves as required. Automatic recovery of old masters. Very fast. + +Requires a ZooKeeper server. + +If you are using a shared network file system such as a SAN we recommend a [Shared File System Master Slave](shared-file-system-master-slave.html). If you are happy to dispense with the high performance journal and are using pure JDBC as your persistence engine then you should use [JDBC Master Slave](jdbc-master-slave.html) instead. For those willing to try out new tech, the [Replicated LevelDB Store](replicated-leveldb-store.html) gives speeds similar to a SAN solution without the hassle of having to setup a highly available shared file system. + diff --git a/maven-snapshot-repository-in-your-pom.md b/maven-snapshot-repository-in-your-pom.md new file mode 100644 index 0000000..ff81ffe --- /dev/null +++ b/maven-snapshot-repository-in-your-pom.md @@ -0,0 +1,33 @@ +Apache ActiveMQ ™ -- Maven SNAPSHOT Repository in your POM + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Maven SNAPSHOT Repository in your POM](maven-snapshot-repository-in-your-pom.html) + + +ActiveMQ + +In your pom.xml file you can add the Maven 2 snapshot repository if you want to try out the SNAPSHOT versions: + + + apache.snapshots + Apache Development Snapshot Repository + https://repository.apache.org/content/repositories/snapshots/ + + false + + + true + + + +Then you can use the SNAPSHOT version of ActiveMQ in your `pom.xml`: + + + org.apache.activemq + activemq-broker + 5.14.0-SNAPSHOT + + +Apache ActiveMQ SNAPSHOTS + +[https://repository.apache.org/content/repositories/snapshots/](https://repository.apache.org/content/repositories/snapshots/) + diff --git a/maven2-activemq-broker-plugin.md b/maven2-activemq-broker-plugin.md new file mode 100644 index 0000000..bb03161 --- /dev/null +++ b/maven2-activemq-broker-plugin.md @@ -0,0 +1,108 @@ +Apache ActiveMQ ™ -- Maven2 ActiveMQ Broker Plugin + +[Tools](tools.html) > [Maven2 ActiveMQ Broker Plugin](maven2-activemq-broker-plugin.html) + + +ActiveMQ provides a Maven2 plugin to easily startup a JMS broker. It is useful to quickly boot up a message broker in your Maven2 project for debugging or for doing integration tests. + +###  How to Use + +Be Careful + +The maven plugins in ActiveMQ have been renamed in version 5.8.0+ to better follow the Maven plugin naming conventions. The ActiveMQ Broker plugin has changed from 'maven-activemq-plugin' to 'activemq-maven-plugin'. + +> Replace the 5.7.0 version string with the version of your choosing, eg: 5.6.0, 5.8-SNAPSHOT + +In your Maven2 project, or using a minimal pom.xml like the following: + + + + 4.0.0 + com.acme + run-amq + 1.0-SNAPSHOT + + +just type: + + mvn org.apache.activemq.tooling:maven-activemq-plugin:5.1:run + +This will download the 5.7.0 version of the plugin, and spin up a broker using a simple configuration url of the form `broker:(tcp://localhost:61616)?useJmx=false&persistent=false`. The necessary ActiveMQ jars will automatically be downloaded by Maven. + +To configure log4j, provide the `-Dlog4j.configuration=[file:///](file:///)` system property on the mvn command line. + +If you require a more advanced configuration with spring support, the jetty webconsole or with embedded camel you can add the plugin in your pom.xml and provide the required optional dependencies. For the default `conf/activemq.xml`, the following dependencies are required : + + + + + org.apache.activemq.tooling + maven-activemq-plugin + 5.7.0 + + xbean:file:../conf/activemq.xml + false + + + javax.net.ssl.keyStorePassword + password + + + org.apache.activemq.default.directory.prefix + ./target/ + + + + + + org.springframework + spring + 2.5.5 + + + org.mortbay.jetty + jetty-xbean + 6.1.11 + + + org.apache.camel + camel-activemq + 1.1.0 + + + + + + + and run it using: + + mvn activemq:run + +###  Configuration Options + +Name + +Default + +Description + +configUri + +broker:(tcp://localhost:61616)?useJmx=false&persistent=false + +The broker configuration URI that will be use to startup the broker. For more information, refer [here](how-do-i-embed-a-broker-inside-a-connection.html) + +fork + +false + +If true, start up the broker in a separate thread, enabling maven to continue processing (Useful for integration testing). + +systemProperties + +none + +Additional system properties that will be set. + + Note: By default, the broker plugin will set activemq.base, activemq.home, org.apache.activemq.default.directory.prefix, derby.system.home to ./target/. This means that all data folders will be created there, hence will easily be deleted by running mvn clean. + diff --git a/mdc-logging.md b/mdc-logging.md new file mode 100644 index 0000000..d177984 --- /dev/null +++ b/mdc-logging.md @@ -0,0 +1,39 @@ +Apache ActiveMQ ™ -- MDC Logging + +[Features](features.html) > [MDC Logging](mdc-logging.html) + + +ActiveMQ uses [slf4j](http://www.slf4j.org/) as its logging framework. This allows ActiveMQ to support [MDC logging](http://www.slf4j.org/api/org/slf4j/MDC.html). For more information about about MDC logging see the [logback manual](http://logback.qos.ch/manual/mdc.html). + +Currently ActiveMQ adds three keys to the diagnostic context: + +Key + +Description + +`activemq.broker` + +Name of the broker logging event. + +`activemq.connector` + +Address of the connector which is serving the request. + +`activemq.destination` + +Name of the target destination of a message. + +For example, if you've defined a log appender to use the following **`ConversionPattern`**: + +log4j.appender.stdout.layout.ConversionPattern=%d \[%-15.15t\] - %-5p %-30.30c{1} - %-10.10X{activemq.broker} %-20.20X{activemq.connector} %-20.20X{activemq.destination} - %m%n + +then in an environment where multiple brokers use the same log (like unit tests), the log output will take this general form: + +2011-03-23 13:51:04,919 \[127.0.0.1:58146\] - TRACE Queue - broker-3B tcp://localhost:6111 - Message ID:dejan-bosanacs-macbook-pro.... +2011-03-23 13:51:04,935 \[oker-3B\] Task-1\] - DEBUG Queue - broker-3B tcp://localhost:6111 PROD.FUSESOURCE.3.B - PROD.FUSESOURCE.3.B toPageIn: 1, Inflight... +2011-03-23 13:51:04,763 \[oker-2A\] Task-1\] - TRACE AbstractStoreCursor - broker-2A vm://broker-2A PROD.FUSESOURCE.3.B - QueueStorePrefetch611939300 - fillBatch +2011-03-23 13:51:04,759 \[127.0.0.1:58118\] - TRACE Queue - broker-3A tcp://localhost:6110 - Message ID:dejan-bosanacs-macbook-pro.l... +2011-03-23 13:51:04,937 \[oker-2A\] Task-1\] - TRACE NetworkBridgeFilter - broker-2A vm://broker-2A PROD.FUSESOURCE.3.B - Message all ready routed once through t... +2011-03-23 13:51:04,936 \[oker-3B\] Task-1\] - TRACE AbstractStoreCursor - broker-3B tcp://localhost:6111 PROD.FUSESOURCE.3.B - QueueStorePrefetch2047424752 - fillBatch +2011-03-23 13:51:04,941 \[oker-2A\] Task-2\] - DEBUG DemandForwardingBridgeSupport - broker-2A - bridging (broker-2A -> broker-1B, consu... + diff --git a/message-cursors.md b/message-cursors.md new file mode 100644 index 0000000..c9d2763 --- /dev/null +++ b/message-cursors.md @@ -0,0 +1,94 @@ +Apache ActiveMQ ™ -- Message Cursors + +[Features](features.html) > [Message Dispatching Features](message-dispatching-features.html) > [Message Cursors](message-cursors.html) + + +Message Cursors +--------------- + +A common problem in previous versions of ActiveMQ was [running out of RAM buffer](my-producer-blocks.html) when using non-persistent messaging. + +Beginning with ActiveMQ 5.0.0, there is a new memory model that allows messages to be paged in from storage when space is available (using Store cursors for persistent messages). + +Releases prior to 5.0 kept references in memory for all the messages that could be dispatched to an active Durable Topic Consumer or a Queue. While a reference itself is not large, it does impose a limit on the maximum number of messages that can be pending delivery. + +A typical approach for messaging systems dispatching persistent messages is to pull them in batches from long term storage when a client is ready to consume them, using a cursor to maintain the next to dispatch position. This is a robust and very scalable approach, but not the most performant for cases when the consumer(s) can keep up with the producer(s) of messages. + +ActiveMQ 5.0 takes a hybrid approach, allowing messages to pass from producer to consumer directly (after the messages have been persisted), but switches back to using cursors if the consumer(s) fall behind. + +When Message Consumers are both active and fast - keeping up with the Message Producer(s) - messages are stored and then passed to a dispatch queue in the broker associated with the Consumer: ![](message-cursors.data/DispatchFastConsumers.png) +If a Consumer becomes active after messages are pending from the store for it, or it's slower than the producer, then messages are paged in to the dispatch queue from a pending cursor: ![](message-cursors.data/DispatchSlowConsumers.png) + +### Types of Cursor + +The default message cursor type in ActiveMQ 5.0 is Store based.  It behaves as above. There are two additional types of cursor that could be used: **VM Cursor** and **File based Cursor**, described below. + +#### VM Cursor + +The VM Cursor is how ActiveMQ 4.x works: references to a message are held in memory, and passed to the dispatch queue when needed. This can be very fast, but also has the downside of not being able to handle very slow consumers or consumers that have been inactive for a long time: ![](message-cursors.data/VMCursor.png) + +#### File based Cursor + +The File based Cursor is dervied from the VM Cursor.  When memory in the broker reaches its limit, it can page messages to temporary files on disk. This type of cursor can be used when the message store might be relatively slow, but consumers are generally fast. By buffering to disk, it allows the message broker to handle message bursts from producers without resorting to paging in from slow storage: ![](message-cursors.data/FileCursor.png) + +#### Paging for Non-Persistent Messages + +The store based cursor also handles cursors for non-persistent messages, which are not stored in the message store. Non-persistent messages are passed directly to the cursor, so the store based cursor embeds a file based cursor just for these types of messages: ![](message-cursors.data/NonPersistentMsgs.png) + +### Configuring Cursors + +By default, Store based cursors are used, but it is possible to configure different cursors depending on the destination. + +#### Topic subscribers + +For Topics there is a dispatch queue and pending cursor for every subscriber.  It's possible to configure different policies for durable subscribers and transient subscribers - e.g: + + + + + + + + + + + + + + + + + + + + + + +Valid Subscriber types are **_vmCursor_** and **_fileCursor._** The default is the store based cursor. +Valid Durable Subscriber cursor types are **_storeDurableSubscriberCursor_**, **_vmDurableCursor_** and **_fileDurableSubscriberCursor._** The default is the store based cursor + +#### Queues + +For Queues there is a single dispatch Queue and pending Queue for every destination, so configuration is slightly different: + + + + + + + + + + + + + + + + +Valid Queue cursor types are **_storeCursor_**, **_vmQueueCursor_** and **_fileQueueCursor._** The default is the store based cursor + +### See Also + +* [Producer Flow Control](producer-flow-control.html) + diff --git a/message-dispatching-features.md b/message-dispatching-features.md new file mode 100644 index 0000000..75999ab --- /dev/null +++ b/message-dispatching-features.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- Message Dispatching Features + +[Features](features.html) > [Message Dispatching Features](message-dispatching-features.html) + + +* [Async Sends](async-sends.html) +* [Dispatch Policies](dispatch-policies.html) +* [Message Cursors](message-cursors.html) +* [Optimized Acknowledgement](optimized-acknowledgement.html) +* [Producer Flow Control](producer-flow-control.html) +* [Total Ordering](total-ordering.html) + diff --git a/message-features.md b/message-features.md new file mode 100644 index 0000000..e1432b9 --- /dev/null +++ b/message-features.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- Message Features + +[Features](features.html) > [Message Features](message-features.html) + + +* [ActiveMQ Message Properties](activemq-message-properties.html) +* [Advisory Message](advisory-message.html) +* [Blob Messages](blob-messages.html) +* [Delay and Schedule Message Delivery](delay-and-schedule-message-delivery.html) +* [JMS Streams](jms-streams.html) +* [Message Transformation](message-transformation.html) +* [ObjectMessage](objectmessage.html) +* [Structured Message Properties and MapMessages](structured-message-properties-and-mapmessages.html) + diff --git a/message-groups.md b/message-groups.md new file mode 100644 index 0000000..d64e13b --- /dev/null +++ b/message-groups.md @@ -0,0 +1,144 @@ +Apache ActiveMQ ™ -- Message Groups + +[Features](features.html) > [Consumer Features](consumer-features.html) > [Message Groups](message-groups.html) + + +Message Groups +-------------- + +Message Groups are an enhancement to the [Exclusive Consumer](exclusive-consumer.html) feature. They provide: + +* Guaranteed ordering of the processing of related messages across a single queue. +* Load balancing of the processing of messages across multiple consumers. +* High availability / auto-failover to other consumers if a JVM goes down. + +So logically Message Groups are like a parallel [Exclusive Consumer](exclusive-consumer.html). Rather than all messages going to a single consumer, the standard JMS header **`JMSXGroupID`** is used to define which _message group_ the message belongs to. The Message Group feature then ensures that all messages for the _same_ message group will be sent to the _same_ JMS consumer - whilst that consumer stays alive. As soon as the consumer dies another will be chosen. + +Another way of explaining Message Groups is that it provides sticky load balancing of messages across consumers; where the **`JMSXGroupID`** is kinda like a HTTP session ID or cookie value and the message broker is acting like a HTTP load balancer. + +### Example Use Case + +Lets say we are doing some kind of order matching system where people are buying and selling things (stocks, shares, placing online bets, whatever). You want to have consumers who match bids and offers for different items (stocks / bets) so they want to keep in RAM for performance a sub-set of the data set. Therefore set the **`JMSXGroupID`** to be **`MSFT`**, **`IBM`**, **`SUNW`** and so forth to use the stock symbol to define the message group. (It can be any string whatsoever; maybe combining trading book, trading exchange, date and so forth - the more specific the group ID, the more concurrent you can run). Assume we are buying and selling **`MSFT`, `IBM`, `SUNW`** shares; the Message Groups feature guarantees that all the **`MSFT`** messages will be processed in order by the same consumer; ditto for **`IBM`** and **`SUNW`**. + +### How Message Groups Work + +When a message is being dispatched to a consumer, the **`JMSXGroupID`** is checked. If one is present then the broker checks to see if a consumer owns that message group. Since there could be a large number of message groups hash buckets are used rather than the actual **`JMSXGroupID`** string. + +If no consumer is associated with a message group a consumer is chosen. Said JMS **`MessageConsumer`** will receive all further messages with the same **`JMSXGroupID`** value until: + +* the consumer closes (or the client which created the consumer dies etc). +* someone closes the message group by sending a message with a negative value for **`JMSXGroupSeq`** (see below for more details). + +**Note**: as with message selector matching, grouping based on **`JMSXGroupID`** occurs before dispatch on messages in memory. With the default **`maxPageSize`** option, large backlogs of messages destined for one group can block receipt of messages to other groups if they don't all fit in memory. You can change the default **`maxPageSize`** setting for destinations as follows: + + + + + + + + + +### Using Message Groups + +You just need to change your JMS producers to fill in the **`JMSXGroupID`** message header with some **`String`** value of your choice. + +Example: + +Mesasge message = session.createTextMessage("hey"); +message.setStringProperty("JMSXGroupID", "IBM\_NASDAQ\_20/4/05"); +... +producer.send(message); + +### Closing a Message Group + +You generally don't need to close a message group; just keep using it. However if you really do want to close a group you can add a negative sequence number. + +Example: + +Mesasge message = session.createTextMessage("hey"); +message.setStringProperty("JMSXGroupID", "IBM\_NASDAQ\_20/4/05"); +message.setIntProperty("JMSXGroupSeq", -1); +... +producer.send(message); + +This then _closes_ the message group so if another message is sent in the future with the same message group ID it will be reassigned to a new consumer. + +### Implications + +Message Groups mean you get the power of **grid** processing of messages across a cluster of consumers with reliability, auto-failover, load balancing but you can also order the processing of messages too. So its the best of both worlds. However using the above example, what Message Groups actually do is to partition your work load across consumers using a user definable partition strategy - the **`JMSXGroupID`** value. + +The neat thing about this is that you can do neat things like use lots of RAM caching; keep the order for **`MSFT`** in RAM in the **`MSFT`** consumer; keep the **`IBM`** orders in RAM in the **`IBM`** consumer - since the message broker is partitioning for you, you do not have to rely on a distributed cache with inter-cache synchronization and locking to take advantage of caching. + +The great thing is - to the application developer, it looks like a simple 1 consumer world where you process messages and do your job; leaving the broker to do all the hard stuff for you + +* partitioning the traffic +* load balancing of message groups across consumers +* auto-failover of groups to different consumers as consumers come and go + +In summary; if ordering or per-message caching and synchronization are in any way important to you then we highly recommend you use message groups to partition your traffic. + +### Getting Notified of Ownership Changes of Message Groups + +ActiveMQ support a boolean header called **`JMSXGroupFirstForConsumer`**. This header is set on the first message sent to a consumer for a particular message group. + +If the JMS connection is using **`failover:`** and a temporary network error occurs so that the connection disconnects from the broker and reconnects some time later, a new consumer instance will be created under the covers of the JMS client leading to the possibility of another message with this header being set for the same message group. + +Example: + +String groupId = message.getStringProperty("JMSXGroupId"); + +if (message.getBooleanProperty("JMSXGroupFirstForConsumer")) { + // flush cache for groupId +} + +To flush caches to ensure consistent state when faced with network errors. + +### Adding New Consumers + +If you have existing messages in the broker and add consumers at a later stage, it is a good idea to delay message dispatch start until all consumers are present (or at least to give enough time for them to subscribe). If you don't do that the first consumer will probably acquire all message groups and all messages will be dispatched to it. You can achieve this by using **`consumersBeforeDispatchStarts`** and **`timeBeforeDispatchStarts`** [destination policies](per-destination-policies.html). + +When both **consumersBeforeDispatchStarts** and **timeBeforeDispatchStarts** are set to a value greater than zero, the dispatching will start as soon as the required number of consumers are present or the timeBeforeDispatchStarts timeout expires. If only consumersBeforeDispatchStarts is set then the timeout for consumers to connect is 1 second. If all consumers disconnect then message dispatch delay will be applied again at the next consumer connection. + +Here's the example of the destination policy that delays dispatch for **`200ms`**: + + + + + + + + + +The following code snippet shows how to wait for two consumers (or two seconds) before dispatch starts: + + + + + + + + + +As [the appropriate test case](https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/MessageGroupDelayedTest.java) shows, adding a small time pause before dispatching or setting a minimum consumer number, ensures equal message group distribution. + +### Competing demands of memory consumption, load balancing, complexity, etc. + +The default behavior which is limited to 1024 message groups in an LRU cache may not match you expectation w.r.t message order... some detail to explain: + +MessageGroupHashBucket and SimpleMessageGroupMap message groups work by associating each group with a consumer. + +SimpleMessageGroupMap keeps track of every group but suffers from unbounded memory use. + +MessageGroupHashBucked keeps track of every group and has bounded memory use. + +CachedMessageGroupMap has bounded memory use, but only keeps track of up to 1024 (or the maximum configured size) groups, then loses track of any groups older than the newest 1024. + +In this way, if there are more groups than the maximum, **ordering will be lost for the oldest groups**. + +Typically users would close groups such that the in memory set can be retained below the configured limits. Some usefull discussion at \[ .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-6851](https://issues.apache.org/jira/browse/AMQ-6851?src=confmacro) \] + +### See + +* [How do Message Groups compare to Selectors](how-do-message-groups-compare-to-selectors.html) + diff --git a/message-redelivery-and-dlq-handling.md b/message-redelivery-and-dlq-handling.md new file mode 100644 index 0000000..f89e260 --- /dev/null +++ b/message-redelivery-and-dlq-handling.md @@ -0,0 +1,217 @@ +Apache ActiveMQ ™ -- Message Redelivery and DLQ Handling + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Design Documents](design-documents.html) > [Message Redelivery and DLQ Handling](message-redelivery-and-dlq-handling.html) + + +### Overview + +Messages are redelivered to a client when **any** of the following occurs: + +1. A transacted session is used and **`rollback()`** is called. +2. A transacted session is closed before **`commit()`** is called. +3. A session is using **`CLIENT_ACKNOWLEDGE`** and **`Session.recover()`** is called. +4. A client connection times out (perhaps the code being executed takes longer than the configured time-out period). + +The broker transmits the default delivery policy that he prefers to a client connection in his **`BrokerInfo`** command packet. But the client can override the policy settings by using the **`ActiveMQConnection.getRedeliveryPolicy()`** method: + +RedeliveryPolicy policy = connection.getRedeliveryPolicy(); +policy.setInitialRedeliveryDelay(500); +policy.setBackOffMultiplier(2); +policy.setUseExponentialBackOff(true); +policy.setMaximumRedeliveries(2); + +Once a message's redelivery attempts exceeds the **`maximumRedeliveries`** configured for the [Redelivery Policy](redelivery-policy.html), a "Poison ACK" is sent back to the broker letting him know that the message was considered a poison pill. The Broker then takes the message and sends it to a Dead Letter Queue so that it can be analyzed later on. + +The default Dead Letter Queue in ActiveMQ is called **`ActiveMQ.DLQ`**; all un-deliverable messages will get sent to this queue and this can be difficult to manage. So, you can set an **`individualDeadLetterStrategy`** in the destination policy map of the **`activemq.xml`** configuration file, which allows you to specify a specific dead letter queue prefix for a given queue or topic. You can apply this strategy using wild card if you like so that all queues get their own dead-letter queue, as is shown in the example below. + + + + + + + ' wildcard --> + + + + + + + + + + + + +See the [Redelivery Policy](redelivery-policy.html) section for some more detail on the policy options. + +### Automatically Discard Expired Messages + +Some folks simply need expired messages to be discarded instead of sent to the DLQ i.e., skip the DLQ entirely. This simplifies the management of the DLQ so that you're not sifting through loads of expired messages to find messages with real problems. To tell ActiveMQ to just discard expired messages, configure the **`processExpired`** property to false on a dead letter strategy: + + + + + + + ' wildcard --> + + + + + + + + + + + + +### Place Non-Persistent Messages Onto The Dead-Letter Queue + +By default, ActiveMQ will not place undeliverable _non-persistent_ messages on the dead-letter queue. The rationale for this behavior is that if the application doesn't care enough to make the message persistent, then there is little or no value in recording that the message was undeliverable. If you do want to place non-persistent messages on the dead-letter queue, then you should set **`processNonPersistent="true"`** on the dead-letter strategy. + + + +   + + + ' wildcard --> + + + + + + + + + + + + +### Setting Expiration on Messages in the DLQ + +By default, ActiveMQ will **_never_** expire messages sent to the DLQ. However, from ActiveMQ 5.12 the **`deadLetterStrategy`** supports an **`expiration`** attribute whose value is given in milliseconds. + +Be selective in how this is applied. In particular do not apply expiration to your DLQ destinations by setting expiration on a default or inclusive wildcard policy entry. + +If a DLQ entry expires and forwards to the same or another DLQ with expiry, you will introduce a loop that can be problematic if the strategy audit is disabled or it's sliding window is exceeded. + + + +   + + + + + <.... expiration="300000"/> + + + + + + + + +### Message audit + +The dead letter strategy has an message audit that is enabled by default. This prevents duplicate messages from being added to the configured DLQ. From 5.15.0, the limits of the audit can configured via the + +**maxProducersToAudit** and **maxAuditDepth** attributes. The audit can be disabled using **enableAudit**="false" + +### The Discarding DLQ Plugin + +From ActiveMQ 5.9 - a destination **`policyEntry`** supports a **`deadLetterStrategy`** of discarding: + + + + + +This does the same thing as the plugin but on a per destination basis. The matching based on regular expressions of the plugin is a bit more powerful than destination matching so the plugin may still be useful in some cases. + +A very simple yet very useful plugin to the broker. This plugin allows the configuration of queues and topics, all or matched based on [Java SE regular expressions](http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html), to drop messages that have been sent to the DLQ. This is extremely useful when using [constant pending message limit strategy](slow-consumer-handling.html) or the other eviction rules, but you don't want to incur the overhead of yet another consumer to clear the DLQ. + +Below is an example of a basic configuration to drop everything: + + + + + + + + + +Below is a slightly more complex example: + + + + + + + + + +* Notice that destination names are space delimited. +* The **`reportInterval`** property is used to denote how frequently do we output how many messages we have dropped - use **`0`** to disable. + +Below is an even more complex example: + + + + + + + + + +* Notice that the destination names use regular expressions. These match the number **`000..999`** at the end of each destination name. + +For more information, see the source code for the [DiscardingDLQBrokerPlugin](https://svn.apache.org/repos/asf/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/plugin/DiscardingDLQBrokerPlugin.java) and the [DiscardingDLQBroker](https://svn.apache.org/repos/asf/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/plugin/DiscardingDLQBroker.java) + +### Broker Redelivery (v5.7) + +Typically a consumer handles redelivery so that it can maintain message order while a message appears as inflight on the broker. This means that redelivery is limited to a single consumer unless that consumer terminates. In this way the broker is unaware of redelivery. With broker redelivery, it is possible to have the broker redeliver a message after a delay using a resend. This is implemented by a broker plugin that handles dead letter processing by redelivery via the scheduler. This is useful when total message order is not important and where through put and load distribution among consumers is. With broker redelivery, messages that fail delivery to a given consumer can get immediately re-dispatched. + + +The feature is enabled via XML configuration as follows: + + + + + + + + + + + +   + + +   + + + + + + + + +The familiar [Redelivery Policy](redelivery-policy.html) has been extended to take a matching destination. **`fallbackToDeadLetter`**controls the action when there is no matching redeliver policy for a destination. Defaults to **`true`** so regular DLQ processing ensues. **`sendToDlqIfMaxRetriesExceeded`** controls the action when the retry limit is exceeded. Defaults to true so regular DLQ processing ensues. When **`false`**, the message is dropped. + +ActiveMQ's **`schedulerSupport`** must be enabled for this feature to work. + diff --git a/message-transformation.md b/message-transformation.md new file mode 100644 index 0000000..6b60259 --- /dev/null +++ b/message-transformation.md @@ -0,0 +1,31 @@ +Apache ActiveMQ ™ -- Message Transformation + +[Features](features.html) > [Message Features](message-features.html) > [Message Transformation](message-transformation.html) + + +Message Transformation +---------------------- + +It is sometimes useful to transform a message inside the JMS provider. For example you may have an application that has been live for some time that uses ObjectMessage messages, but that you wish to convert to use XML payloads (to protect yourself from serialization issues). + +So ActiveMQ in 4.2 onwards comes with a pluggable strategy called the [MessageTransformer](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/MessageTransformer.html) interface. This allows you to + +* enrich or transform a message before it is sent to the message bus within the JMS provider +* enrich or transform a message as it is received from the message bus but before it is dispatched to the consumer + +So this allows you to turn an ObjectMessage into a TextMessage containing XML using some kind of XML marshalling technology like [XStream](http://xstream.codehaus.org/) or [JAXB2](http://java.sun.com/webservices/jaxb/). + +For example there is the **XStreamMessageTransformer** which when it is configured on a ConnectionFactory will cause all ObjectMessage instances to be silently transformed to and from TextMessage instances on the wire. This can be very useful if you have non-Java clients wishing to communicate with your Java messages. + +### Using a MessageTransformer + +To use a MessageTransformer you can install it on one of the following classes via the **setTransformer()** method + +* [ActiveMQConnectionFactory](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html) +* [ActiveMQConnection](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnection.html) +* [ActiveMQSession](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQSession.html) +* [ActiveMQMessageConsumer](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQMessageConsumer.html) +* [ActiveMQMessageProducer](http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQMessageProducer.html) + +The transformer is inherited on child objects; so you can install a particular transformer on a connection factory and it will be inherited on all connections, sessions, producers, consumers + diff --git a/migration-guide.md b/migration-guide.md new file mode 100644 index 0000000..ec5e870 --- /dev/null +++ b/migration-guide.md @@ -0,0 +1,45 @@ + + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +Version Migration Guide +======================= + +Overview +-------- + +This guide helps you migrate to a new Apollo version and perserve the message data stored in the previous version of the Apollo broker. This guide assumes you are only using a single virtual host in your configuration. + +Standard Migration Steps +------------------------ + +You should first check to see if a “data export/import” is required by consulting the [Migration Notes](#Migration_Notes) section at the end of this docuemnt. + +1. Stop your broker instance. + +2. If a data export/import is required then export your broker instance data to an archive file by running: + + ${broker-path}/bin/apollo-broker store-export /tmp/broker-export.tgz + + Then move your old data directory out of the way by running: + + mv ${broker-path}/data /tmp/broker-data + +3. Install your new apollo version. Since Apollo packages include the version in thier insallation directroy you should be able to unpack it to same directory your previous vesion was unpack into. + +4. Switch yout broker instance to use the new Apollo version by editing the `${broker-path}/bin/apollo-broker` script and changing the line that sets the `APOLLO_HOME=` variable. Set it to the location of where the new version is installed. + +5. If a data export/import is required then import your broker instance data from the archive by running: + + ${broker-path}/bin/apollo-broker store-import /tmp/broker-export.tgz + +6. Start your broker. + + +Migration Notes +--------------- + +* **1.0 → 1.1** : A data export/import is required if your using a LevelDB store. \ No newline at end of file diff --git a/migration.md b/migration.md new file mode 100644 index 0000000..2d5b284 --- /dev/null +++ b/migration.md @@ -0,0 +1,22 @@ + ActiveMQ + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +ActiveMQ's next generation of messaging + +ActiveMQ 5.x +------------ + +For a detailed instruction on how to migrate ActiveMQ 5.x to Artemis take look at the [Migration guide](migration/index.html) + +HornetQ 2.4/2.5 +--------------- + +Existing HornetQ 2.4 and 2.5 clients will also be supported out of the box and also support all of the HA features, The caveat here is for UDP discovery which will need some manual configuration. The [User Manual](docs.html) will have more details of this \ No newline at end of file diff --git a/mirrored-queues.md b/mirrored-queues.md new file mode 100644 index 0000000..7161663 --- /dev/null +++ b/mirrored-queues.md @@ -0,0 +1,42 @@ +Apache ActiveMQ ™ -- Mirrored Queues + +[Features](features.html) > [Destination Features](destination-features.html) > [Mirrored Queues](mirrored-queues.html) + + +Mirrored Queues +--------------- + +Queues provide an excellent reliable and high performance [load balancing mechanism](how-does-a-queue-compare-to-a-topic.html). Each message placed on a queue can only be successfully processed by a single consumer. This is a good thing! ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png). However sometimes you want to monitor what messages flow between the producers and consumers on a queue. + +To do this you can use [Virtual Destinations](virtual-destinations.html) to setup a virtual Queue which forwards the message to multiple physical queues. However enabling this for every single queue in your system can be painful. + +So to make it easy to monitor queues, we have added a feature we call _Mirrored Queues_. Mirrored Queues are kinda like a zero-configuration [Wire Tap](http://activemq.apache.org/camel/wire-tap.html) on all of your queues inside your Message Broker. + +### Example + +For example imagine we have a number of producers sending to queue **Foo.Bar** and consumers consuming from queue **Foo.Bar** and we want to monitor or view activity. + +If you enable Mirrored Queues then by default you can subscribe to the topic **VirtualTopic.Mirror.Foo.Bar** and receive all the messages that are sent to the queue **Foo.Bar**. Since its a topic as many consumers can subscribe to this topic as are required. + +If you want you can use this feature with [Virtual Topics](virtual-destinations.html); so that you can define a logical consumer; say called A. Then you can subscribe to the queue **Consumer.A.VirtualTopic.Mirror.Foo.Bar** to receive all the messages sent to queue **Foo.Bar** for the consumer A. You can then run multiple instances of this consumer who can then load balance among each other. + +This combination of Mirrored Queues and [Virtual Destinations](virtual-destinations.html) can be extremely useful for monitoring transaction flows; for example with [Business Activity Monitoring (BAM)](http://activemq.apache.org/camel/bam.html). + +### How Mirrored Queues work + +When enabled, mirrored queues causes every message sent to a queue to also be sent to a topic of a similar name; so that folks who are interested in watching message exchanges on a queue can consume from the mirrored queue topic. + +When coupled with [Virtual Topics](virtual-destinations.html) on this topic as described in the above example, you can actually end up creating new queues which are mirrors of a given queue dynamically at runtime! + +### Enabling Mirrored Queues + +By default Mirrored Queues is disabled; as enabling it will cause a virtual topic to be created for each queue you use. + +To enable Mirrored Queues, set the **useMirroredQueues** property on [BrokerService](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/broker/BrokerService.html) or add the following inside the element in the [Xml Configuration](xml-configuration.html): + + + + + +This would make a topic named "*.qmirror" for each queue on your Broker. + diff --git a/module-organization.md b/module-organization.md new file mode 100644 index 0000000..a420895 --- /dev/null +++ b/module-organization.md @@ -0,0 +1,28 @@ + Module Organization + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +![Apollo logo](../images/project-logo.png) + +ActiveMQ's next generation of messaging + +Module Organization +=================== + +Apollo is composed of many loosely coupled jar files. This helps maintain a clear separations of concerns between the modules and allows end users to end up with smaller footprint configurations if they don't need all the optional features of the project. + +Dependency Diagram +------------------ + +![dependencies graph](../images/module-deps-graph.png) + +Updating +-------- + +You can regenerate the above graph by running the following commands at the project root: + + mvn -P graph graph:reactor -Dhide-scope=test -Dhide-transitive=true -Dhide-external=true -Dgraph.label= -Dhide-version=true -Dhide-group-id=true -Dhide-type=true + cp target/reactor-graph.png apollo-website/src/images/module-deps-graph.png \ No newline at end of file diff --git a/modules.md b/modules.md new file mode 100644 index 0000000..fa99e0b --- /dev/null +++ b/modules.md @@ -0,0 +1,166 @@ + ActiveMQ - Project Modules + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * **Project Modules** + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Project Modules +--------------- + +This project has declared the following modules: + +Name + +Description + +[ActiveMQ :: All JAR bundle](activemq-all/index.html) + +Puts together an ActiveMQ jar bundle + +[ActiveMQ :: Camel](activemq-camel/index.html) + +ActiveMQ component for Camel + +[ActiveMQ :: Console](activemq-console/index.html) + +ActiveMQ Management Console + +[ActiveMQ :: Core](activemq-core/index.html) + +The ActiveMQ Message Broker and Client implementations + +[ActiveMQ :: File Server](activemq-fileserver/index.html) + +Web File Server for out of band large message exchange + +[ActiveMQ :: JAAS](activemq-jaas/index.html) + +A collection of generic JAAS Login Modules + +[ActiveMQ :: Blueprint](activemq-blueprint/index.html) + +The ActiveMQ Message Broker and Client implementations + +[ActiveMQ :: Apache Karaf](activemq-karaf/index.html) + +Provides resources for running ActiveMQ in Apache Karaf + +[ActiveMQ :: LevelDB](activemq-leveldb/index.html) + +ActiveMQ LevelDB based store + +[ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html) + +- + +[ActiveMQ :: Optional](activemq-optional/index.html) + +Optional ActiveMQ features + +[ActiveMQ :: Pool](activemq-pool/index.html) + +ActiveMQ Pooled ConnectionFactory + +[ActiveMQ :: RA](activemq-ra/index.html) + +A JCA Resource Adapter used to integrate ActiveMQ with transactional enterprise containers + +[ActiveMQ :: RAR](activemq-rar/index.html) + +A JCA Resource Adapter used to integrate ActiveMQ with transactional enterprise containers + +[ActiveMQ :: Run Jar](activemq-run/index.html) + +run.jar for starting a standalone ActiveMQ broker + +[ActiveMQ :: Spring](activemq-spring/index.html) + +ActiveMQ Spring Integration + +[ActiveMQ :: Tooling](activemq-tooling/index.html) + +- + +[ActiveMQ :: Web](activemq-web/index.html) + +Web Connector for REST API and Streamlets support + +[ActiveMQ :: Web Demo](activemq-web-demo/index.html) + +Web Demo for REST API and Streamlets support + +[ActiveMQ :: Web Console](activemq-web-console/index.html) + +Web Console for ActiveMQ + +[ActiveMQ :: XMPP](activemq-xmpp/index.html) + +- + +[ActiveMQ :: Integration Tests](tests/index.html) + +ActiveMQ Integration Tests + +[ActiveMQ :: Assembly](apache-activemq/index.html) + +Puts together the ActiveMQ distribution + +[ActiveMQ :: KahaDB](kahadb/index.html) + +An Embedded Lightweight Non-Relational Database + diff --git a/mom.md b/mom.md new file mode 100644 index 0000000..9634b11 --- /dev/null +++ b/mom.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- MOM + +[Community](community.html) > [FAQ](faq.html) > [Terminology](terminology.html) > [MOM](mom.html) + + +Message Orientated Middleware. The art of building distributed systems using mostly asynchronous message passing with loosely coupled services consuming and emitting messages. So this includes JMS providers and message brokers. + +Typically MOMs can handle any specific service instance being down for some time, so that they provide loose coupling across time, space, location, platform and language. + diff --git a/monitoring-activemq.md b/monitoring-activemq.md new file mode 100644 index 0000000..6f54427 --- /dev/null +++ b/monitoring-activemq.md @@ -0,0 +1,16 @@ +Apache ActiveMQ ™ -- Monitoring ActiveMQ + +[Using ActiveMQ](using-activemq.html) > [Getting Started](getting-started.html) > [Monitoring ActiveMQ](monitoring-activemq.html) + + +You can monitor ActiveMQ using the [Web Console](web-console.html) by pointing your browser at + +[http://localhost:8161/admin](http://localhost:8161/admin) + +From ActiveMQ 5.8 onwards the web apps is secured out of the box. +The default username and password is admin/admin. You can configure this in the conf/jetty-real.properties file. + +Or you can use the [JMX](jmx.html) support to view the running state of ActiveMQ. + +For more information see the file `docs/WebConsole-README.txt` in the distribution. + diff --git a/mqtt-manual.md b/mqtt-manual.md new file mode 100644 index 0000000..20db24c --- /dev/null +++ b/mqtt-manual.md @@ -0,0 +1,168 @@ + + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +Apollo 1.7.1 MQTT Protocol Manual +================================= + +* [The MQTT Protocol](#The_MQTT_Protocol) +* * [MQTT Protocol Options](#MQTT_Protocol_Options) + * [Client Libraries](#Client_Libraries) + * [Connecting](#Connecting) + * [Destination Types](#Destination_Types) + * [Clean Sessions](#Clean_Sessions) + * [Topic Retained Messages](#Topic_Retained_Messages) + * [Last Will and Testament Message](#Last_Will_and_Testament_Message) + * [Reliable Messaging](#Reliable_Messaging) + * * [At Most Once](#At_Most_Once) + * [At Least Once](#At_Least_Once) + * [Exactly Once](#Exactly_Once) + * [Wildcard Subscriptions](#Wildcard_Subscriptions) + * [Keep Alive](#Keep_Alive) + * [Destination Name Restrictions](#Destination_Name_Restrictions) + +The MQTT Protocol +----------------- + +Apollo allows clients to connect using the MQTT which is an open-source protocol specification intended for limited-resource devices on unreliable networks using a publish-subscribe domain. These types of devices usually require a small footprint and are not well suited for text-based protocols such as HTTP or STOMP or even traditional binary protocols such as Openwire or AMQP. MQTT is a compact binary protocol that is optimized for these types of limited devices and unreliable networks. + +In previous releases, MQTT was supported in Apollo as a separate plugin. As of now, that plugin has become part of the main development trunk and MQTT support is available out of the box without any other configuration or packaging of third-party plugins. + +Since MQTT is a wire-level protocol, any client that implements the protocol should be able to connect to Apollo and also interoperate with other MQTT-compatibe message brokers. + +To learn more about the details of MQTT, see [the MQTT Specification](http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html) + +### MQTT Protocol Options + +To start using the MQTT protocol, use a valid MQTT v3.1 client and connect to the port on which Apollo is listening. Apollo will do protocol detection and will automatically recognize the MQTT payloads and treat the connection as an MQTT connection. You don't have to open a special port for MQTT (or STOMP, Openwire, AMQP, etc. they can all be auto-detected). To force specific protocols over a certain connector there are two ways you can do this. You can choose to not use protocol detection at all and set the connector to be specifically for mqtt: + + + + + +Alternatively, you can limit which protocols can be “detected” using the `` configuration element like this: + + + + + + + +The `protocols` attribute in the `` element takes space delimited protoco values. The `protocol` attribtue of the `` element takes a single protocol, not space delimited. It defaults to `any` + +If you wish to tune the MQTT defaults, you can use the `mqtt` configuration element within the `connector` element in the `apollo.xml` configuration file : + + + + + + + +The `mqtt` element supports the following configuration attributes: + +* `max_message_length` : The size (in bytes) of the largest message that can be sent to the broker. Defaults to 100MB +* `protocol_filters` : A filter which can filter frames being sent/received to and from a client. It can modify the frame or even drop it. +* `die_delay` : How long after a connection is deemed to be “dead” before the connection actually closes; default: 5000ms + +The mqtt configuration element can also be used to control how the destination headers are parsed and interpreted. The supported attributes are: + +* `queue_prefix` : a tag used to identify destination types; default: null +* `path_separator` : used to separate segments in a destination name; default: `/` +* `any_child_wildcard` : indicate all child-level destinations that match the wildcard; default: `+` +* `any_descendant_wildcard` : indicate destinations that match the wildcard recursively; default: `#` +* `regex_wildcard_start` : pattern used to identify the start of a regex +* `regex_wildcard_end` : pattern used to identify the end of a regex +* `part_pattern` : allows you to specify a regex that constrains the naming of topics. default: `[ a-zA-Z0-9\_\-\%\~\:\(\)]+` + +### Client Libraries + +Apollo supports v3.1 of the MQTT protocol. The following clients will work: + +* Java : [mqtt-client](https://github.com/fusesource/mqtt-client), [MeQanTT](https://github.com/AlbinTheander/MeQanTT) +* C : [libmosquitto](http://mosquitto.org/man/libmosquitto-3.html) +* Erlang : [erlmqtt](https://github.com/squaremo/erlmqtt), [my-mqtt4erl](http://code.google.com/p/my-mqtt4erl/) +* .NET : [MQTTDotNet](http://sourceforge.net/projects/mqttdotnet/), [nMQTT](https://github.com/markallanson/nmqtt) +* Perl : [net-mqtt-perl](https://github.com/beanz/net-mqtt-perl), \[anyevent-mqtt-perl\]https://github.com/beanz/anyevent-mqtt-perl() +* Python : [nyamuk](https://github.com/iwanbk/nyamuk) +* Ruby : [mqtt-ruby](https://github.com/njh/ruby-mqtt), [ruby-em-mqtt](https://rubygems.org/gems/em-mqtt) +* Javascript : [Node.js MQTT Client](http://ceit.uq.edu.au/content/simple-mqtt-cient-nodejs) +* Delphi : [TMQTTCLient](http://jamiei.com/blog/code/mqtt-client-library-for-delphi/) +* Device specific: [Arduino](http://knolleary.net/arduino-client-for-mqtt/), [mbed](http://ceit.uq.edu.au/content/mqttclient-mbed-version-20), [Nanode](http://github.com/njh/NanodeMQTT/), Netduino + +To see an up-to-date listing of client libraries, please [the MQTT website for its software](http://mqtt.org/software) listings + +The Apollo distribution ships with an `examples` directory where you can find some simple examples of how to use some of those clients to send and receive messages from a broker instance. + +### Connecting + +The default broker configuration secures access to the broker so that only the `admin` user can connect. The default password for the `admin` user is `password`. + +MQTT clients cannot specify a Virtual Host (see [the section on Virtual Hosts in the user guide](user-manual.html#Virtual_Hosts)) so the default virtual host will be used. This is usually the first Virtual Host defined in the Apollo.xml configuration file. + +### Destination Types + +The MQTT protocol is a publish/subscribe protocol. It does not permit true point-to-point messaging achieved using Queues. Therefore Apollo allows only the use of Topics for MQTT messaging. The concept of a subscription and durable subscription to Topics is similar to what you'd find in other protocols and is controlled by the MQTT CONNECT frame's `clean session` attribute. + +### Clean Sessions + +When a client sends a connect frame with the `clean session` flag set to cleared (false), any previously used session with the same client_id will be re-used. This means while the client was away, that subscription could have received messages. This is the equivalent of a durable subscription in Apollo. + +If the `clean session` flag is set (true), then a new session will be started and any sessions tha may have been lingering would be removed. This is equivalent to a normal topic subscription in Apollo. + +### Topic Retained Messages + +If a message has been published with the retain flag set, then the message will be 'remembered' by the topic so that if a new subscription arrives, the last retained message is sent to the subscription. For example if you're publishing measurements and you want the last mesasurement published to always be available to a client that subscribes to the topic, you can set the retain flag on the PUBLISH frame. + +Note: retained messages are not retained between broker restarts for Quality of Service setting of AT MOST ONCE (QoS=0). + +### Last Will and Testament Message + +You can set a `will` message and assocaited QoS for the message when a client first connects to Apollo. The will message is basically a message that will only get sent if there is an unexpected error with the connection and it must be dropped. This can be useful in situations where you have devices that could drop but when they do, you want to know. So if a medical sensor client drops from the broker, a will message could be sent to an “alarm” Topic and handled by the system as a high-priority alert. + +### Reliable Messaging + +MQTT allows a client to publish a message with the following Quality of Service parameters (QoS): + +* At Most Once (QoS=0) +* At Least Once (QoS=1) +* Exactly Once (QoS=2) + +#### At Most Once + +This QoS will attempt to deliver the message to a client, but it will have the lowest reliability of the three options. If you publish with a QoS=0, At Most Once, then the broker will not send back an Ack saying it received the message, nor will it retry if the broker fails. This QoS is most similar to non-persistent messages in, for example, JMS. + +#### At Least Once + +This QoS setting will ensure that the message is delivered at least once to clients. When publishing with this setting, Apollo will send back a PUBACK frame which acknowledges that the broker has received the message and has taken “ownership” for delivering the message. If the client that published the message with QoS=1 does not recieve the PUBACK in a specified period of time, the client may wish to re-publish the message again with the DUP flag set on the PUBLISH frame. It's possible the broker received the first attempt to publish the message and subsequently published it to listening clients. So if the PUBACK got lost somehwere and the client sends the message again, there will be no duplicate detection, and the broker will send the message again to the topic's subscribers. + +#### Exactly Once + +This QoS is the strongest level of reliability afforded by the MQTT protocol. This assures the publisher that its message will not only get to its intended subscribers, but that the message will not be duplicated as it could with QoS=1. This QoS, however, comes with increased network overhead. + +When a message is published, the broker will store the message ID and send the message to the Topic where it would be persisted if there are any durable subscriptions. It will then send the PUBREC frame back to the client implying the broker has received the message. At this point the broker will expect the client to send the PUBREL frame to clear the message ID from its session state and complete the send with the broker sending a PUBCOMP. + +### Wildcard Subscriptions + +Wild cards can be used in destination names when subscribing as a consumer. This allows you to subscribe to multiple destinations or hierarchy of destinations. + +* `/` is used to separate names in a path +* `+` is used to match any name in a path +* `#` is used to recursively match path names + +For example using the above, these subscriptions are possible + +* `PRICE/#` : Any price for any product on any exchange +* `PRICE/STOCK/#` : Any price for a stock on any exchange +* `PRICE/STOCK/NASDAQ/+` : Any stock price on NASDAQ +* `PRICE/STOCK/+/IBM` : Any IBM stock price on any exchange + +### Keep Alive + +Apollo will only set a keep-alive/heart-beat monitor if the client has specified a `keepAlive` value in the CONNECT frame. If one is specified, the actual value used by Apollo will be 1.5 * the keep alive value. This is in keeping with the MQTT spec. + +### Destination Name Restrictions + +Destination names are restricted to using the characters `a-z`, `A-Z`, `0-9`, `_`, `-` `%`, `~`, `:`, ' ', '(', ')' or `.` in addition to composite separator `,` and the wild card `*`. Any other characters must be UTF-8 and then URL encoded if you wish to preserve their significance. \ No newline at end of file diff --git a/mqtt.md b/mqtt.md new file mode 100644 index 0000000..7481427 --- /dev/null +++ b/mqtt.md @@ -0,0 +1,124 @@ +Apache ActiveMQ ™ -- MQTT + +[Connectivity](connectivity.html) > [Protocols](protocols.html) > [MQTT](mqtt.html) + + +ActiveMQ supports the [MQTT](http://mqtt.org/) protocol and will automatically map between JMS/NMS and MQTT clients. MQTT is a machine-to-machine (M2M) publish/subscribe messaging transport. + +Please see the [MQTT site](http://mqtt.org/) for more details + +### Enabling the ActiveMQ Broker for MQTT + +Its very easy to enable ActiveMQ for MQTT. Just add a connector to the broker using the MQTT URL. + + + + + +### The MQTT Wire Format + +MQTT uses a compact binary format that can be configured with the following options.  All options can be configured on a Brokers transport bind URI. + +Parameter Name + +Default Value + +Description + +maxFrameSize + +268435456 + +(v5.12.0) Maximum frame size that can be sent. The protocol limit is 256 megabytes and his value cannot be set higher. Can help help prevent OOM DOS attacks + +All options must be prepended with `wireFormat` in order to take effect. Without this proper formatting, the option will have zero effect. + +#### Example Wire Format Configuration +  + + + +### Security + +The ActiveMQ MQTT Transport implementation fully supports an [ActiveMQ security](security.html) mechanism. Also, the authorization policies will be applied when you try to access (read/write) certain destinations. + +### Enabling MQTT over NIO + +For better scalability (and performance) you might want to run the MQTT protocol over NIO transport. To do that just use `mqtt+nio` transport prefix instead of `matt`. For example, add the following transport configuration in your XML file + + + +This transport use [NIO transport](http://activemq.apache.org/configuring-transports.html#ConfiguringTransports-TheNIOTransport) underneath and will generally use much less threads than standard connector. + +### Enabling MQTT over NIO + SSL + +The MQTT transport also supports using NIO and SSL. To enable this option, use the mqtt+nio+ssl protocol - e.g. + + + +* For more details on using SSL with ActiveMQ see the following article ([How do I use SSL](http://activemq.apache.org/how-do-i-use-ssl.html)). + +### Working with Destinations with MQTT + +MQTT supports hierarchies and wildcards, though the delimiters and characters are different: - Here's the mapping: + +function + +ActiveMQ + +MQTT + +separator + +`.` + +`/` + +element + +`*` + +`+ +` + +sub tree + +`>` + +`# +` + +These values are automatically transposed between clients using JMS/NMS/Stomp and clients using MQTTT. For example - a client subscribing to "foo/#/bar" would receive messages published on a JMS Topic of foo.blah.bar. + +### Message transformations + +MQTT messages are transformed into an JMS ByteMessage. Conversely, the body of any JMS Message is converted to a byte buffer to be the payload of an MQTT message. + +### Keep Alive + +When a client connects, it will send a keep-alive duration, usually defaulting to 10s. ActiveMQ will honor the keep-alive duration by setting up an Inactivity Monitor that allows a grace period of 1.5 * duration. After that grace period duration elapses a connection could be closed if there is no activity. A broker receiving a PINGREQ and sending PINGRESP is considered activity to keep the connection opened. + +If a client sends a keep-alive value of 0, ActiveMQ will not set up an [Inactivity Monitor](http://activemq.apache.org/activemq-inactivitymonitor.html) and connections will not be auto-shutdown due to inactivity. This however can lead to potentially leaky connections, so a default keep alive can be set on the server side (by an admin, for example) to not allow inactive connections to hang. This default keep alive would only be used if specified and if the client requests a keep-alive value of 0. The unit for the keep-alive value is milliseconds. + +To enable a default, server-side MQTT keep alive: + + + +### Message Prefetch + +When MQTT client connects, it locally create JMS-like consumer to the broker. In older versions this consumer was created with the prefetch size of 1 (message prefetching is explained [here](what-is-the-prefetch-limit-for.html) in more details). Starting with 5.11.0 release, the prefetch size is adjusted to the default value for the appropriate JMS subscription. QoS=0 subscriptions have default prefetch of regular non-persistent topic subscriptions, while QoS=1 and QoS=2 are assigned prefetch size of durable subscribers or the queue subscriptions depending on the subscription strategy used (see the next section for more details). Default prefetch values are listed [here](what-is-the-prefetch-limit-for.html). + +To change default value of the prefetch size, you can use _activeMQSubscriptionPrefetch_ transport option, like + + + +### Subscription Strategy + +ActiveMQ is a JMS broker in its core, so there needs to be some mapping between MQTT subscriptions and JMS semantics. Subscriptions with QoS=0 (At Most Once) are directly mapped to plain JMS non-persistent topics. For reliable messaging, QoS=1 and QoS=2, by default subscriptions are transformed to JMS durable topic subscribers. This behaviour is desired in most scenarios. For some use cases, it is useful to map these subscriptions to [virtual topics](virtual-destinations.html). Virtual topics provide a better scalability and are generally better solution if you want to use you MQTT subscribers over network of brokers. To change subscription strategy to use virtual topic, use the following settings: + + + +### Retained Messages + +If a message has been published with the _retain_ flag set, then the message will be 'remembered' by the topic so that if a new subscription arrives, the last retained message is sent to the subscription. Underneath, the broker uses [retained message subscription recovery policy](subscription-recovery-policy.html) to retain messages with _ActiveMQ.Retain_ property set. During the message conversion, MQTT messages with retain flag become JMS message with the _ActiveMQ.Retain _property set and retained by the broker. + diff --git a/msmq-build-notes.md b/msmq-build-notes.md new file mode 100644 index 0000000..9fb4bed --- /dev/null +++ b/msmq-build-notes.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- MSMQ Build Notes + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.MSMQ](apachenmsmsmq.html) > [MSMQ Build Notes](msmq-build-notes.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/msmq-downloads.md b/msmq-downloads.md new file mode 100644 index 0000000..c99787b --- /dev/null +++ b/msmq-downloads.md @@ -0,0 +1,21 @@ +Apache ActiveMQ ™ -- MSMQ Downloads + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.MSMQ](apachenmsmsmq.html) > [MSMQ Downloads](msmq-downloads.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Description + +Release Date + +NMS API Rev + +[Apache.NMS MSMQ v1.1.0](apachenms-msmq-v110.html) + +07/12/2009 + +v1.1.0 + + diff --git a/msmq-examples.md b/msmq-examples.md new file mode 100644 index 0000000..d3900c6 --- /dev/null +++ b/msmq-examples.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- MSMQ Examples + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.MSMQ](apachenmsmsmq.html) > [MSMQ Examples](msmq-examples.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/msmq-faq.md b/msmq-faq.md new file mode 100644 index 0000000..73a6a40 --- /dev/null +++ b/msmq-faq.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- MSMQ FAQ + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) > [Apache.NMS.MSMQ](apachenmsmsmq.html) > [MSMQ FAQ](msmq-faq.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/multicast-transport-reference.md b/multicast-transport-reference.md new file mode 100644 index 0000000..1670111 --- /dev/null +++ b/multicast-transport-reference.md @@ -0,0 +1,89 @@ +Apache ActiveMQ ™ -- Multicast Transport Reference + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Multicast Transport Reference](multicast-transport-reference.html) + + +### The Multicast Transport + +The Multicast transport allows clients to connect to a remote ActiveMQ broker using multicast + +Note that by default Multicast is not reliable; datagrams can be lost so you should add a reliability layer to ensure the JMS contract can be implemented on a non-reliable transport. + +#### Configuration Syntax + +**multicast://address:port?transportOptions** + +##### Transport Options + +Option Name + +Default Value + +Description + +group + +default + +specify a unique group name that can segregate multicast traffic + +minmumWireFormatVersion + +0 + +The minimum version wireformat that is allowed + +trace + +false + +Causes all commands that are sent over the transport to be logged + +useLocalHost + +true + +When true, it causes the local machines name to resolve to "localhost". + +datagramSize + +4 * 1024 + +Specifies the size of a datagram + +timeToLive + +-1 + +The time to live of datagrams. Set greater than 1 to send packets beyond the local network. (**NOTE:** This won't work for IPv4 addresses without setting the property `java.net.preferIPv4Stack=true`. For more info see the [IPv6 User Guide for JDK](http://java.sun.com/j2se/1.5.0/docs/guide/net/ipv6_guide/index.html)) + +loopBackMode + +false + +Should loopback mode be used + +wireFormat + +default + +The name of the WireFormat to use + +wireFormat.* + +All the properties with this prefix are used to configure the wireFormat. See [Configuring Wire Formats](configuring-wire-formats.html) for more information + +##### Example URIs + +To use the default value of "multicast://239.255.2.3:6155" with a default multicast group name of "default" from [MulticastDiscoveryAgent](http://activemq.apache.org/maven/apidocs/org/apache/activemq/transport/discovery/multicast/MulticastDiscoveryAgent.html#DEFAULT_DISCOVERY_URI_STRING) use + +multicast://default + +To specify the IP address and port use + +multicast://224.1.2.3:6255 + +To specify a multicast group name other than the default name of "default" use + +multicast://224.1.2.3:6255?group=mygroupname + diff --git a/multicast-transport.md b/multicast-transport.md new file mode 100644 index 0000000..220c6a0 --- /dev/null +++ b/multicast-transport.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Multicast Transport + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Design Documents](design-documents.html) > [Multicast Transport](multicast-transport.html) + + +We could support a reliable multicast protocol and use that to distribute messages across. This page braindumps how that could fit in with ActiveMQ 4.x's architecture. + +* each VM would have its own embedded broker; JMS connections would talk VM protocol to the embedded broker (or TCP to some remote broker) +* the brokers communicate with each other via multicast + * the exception to this could be queue dispatch/ack messages could go over UDP rather than mcast. + +So the brokers communicate with a kind of Bridge which uses the multicast/UDP transports underneath. + +### Broker keep-alive + +Each broker will repeatedly send its own BrokerInfo to the cloud. The MulticastBridge will receive them and keep that broker alive; brokers which don't send the brokerInfo within the heartbeat window are logically considered to have closed. + diff --git a/multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.md b/multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.md new file mode 100644 index 0000000..5678a91 --- /dev/null +++ b/multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.md @@ -0,0 +1,25 @@ +Apache ActiveMQ ™ -- Multicast - Watch out for IPV6 vs IPV4 support on your operating system or distribution or network + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Multicast - Watch out for IPV6 vs IPV4 support on your operating system or distribution or network](multicast-watch-out-for-ipv6-vs-ipv4-support-on-your-operating-system-or-distribution-or-network.html) + + +You may wonder why you are not receiving any message at all during multicast, maybe you have just tried everything, and even on some other OS or distributions and JDK and realize that it works in some place and not on other... you may have tried a small C program to do the same..and it worked well.. you're feeling the pressure on your neck...what could be wrong on YOUR application on THIS OS/distribution... + +As a default, on the Linux platform, if you have IPV6 support enabled in your kernel, the Java Runtime (since 1.4 version) will use IPV6 sockets to communicate. That's perfectly fine, except that your network may not be configured for IPV6. So everything will be dropped...and nothing will ever be received on the consumer side (which maybe even does not support IPV6). + +There's a solution to this problem: Force IPV4 stack to be used by the Java Runtime. This can be done using a system property: + + -Djava.net.preferIPv4Stack=true + +Networking IPv6 User Guide + +This information and much more details can be found in the Java Documentation [Networking IPv6 User Guide](http://java.sun.com/j2se/1.5.0/docs/guide/net/ipv6_guide/) and in [Networking Properties](http://java.sun.com/j2se/1.5.0/docs/guide/net/properties.html) + +Alternatively you can disable IPV6 support on your Linux machine by adding the following line **at the end of /etc/modprobe.conf** (_as its name suggests immediately, net-pf-10 is the IPV6 networking module_) + +alias net-pf-10 off # disable IPV6 + +If you have very knowledgeable sysadmins that are used to these problems (like in a TV or Radio company for instance where they use multicast a lot), they will be able to tell you immediately if IPV6 is supported on the network (alternatively they will be able to tell you as well if multicast is supported and on which address/port you can multicast), this is a plus and will help you tremendously. + +In some more frequent cases, your sysadmin will be as lost as you are as they are not dealing with these issues very frequently. So good luck for finding out problems. You will need to have a very strict approach to eliminate uncertainties. For this you will need at least a tool like [ethereal](http://www.ethereal.com) (works on unix, linux and windows) + diff --git a/multiple-consumers-on-a-queue.md b/multiple-consumers-on-a-queue.md new file mode 100644 index 0000000..160c79d --- /dev/null +++ b/multiple-consumers-on-a-queue.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Multiple consumers on a queue + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [Multiple consumers on a queue](multiple-consumers-on-a-queue.html) + + +If you want to consume concurrently from a queue, then you must use a different session for each consumer. + +This is because you must have a session per thread. The JMS contract is that only 1 session is used by one thread at once - which if you're using consumers means that only 1 consumer can receive messages at once if using the same session. So if you want concurrent consumption of messages, you need to use different sessions for each consumer. + +However its your call on how many connections you have. In a normal network based mode, sharing the same connection across sessions will essentially multiplex traffic across a single socket (and so reduce resource usage at the cost of more synchronization). So sometimes there's a need to use more connections, as typically using different sockets concurrently tends to be a bit faster than using a single one). + +Incidentally in the JCA specifications in J2EE 1.4, Resource Adapters will typically create 1 connection for each session, so there's a 1-1 mapping between the two. + diff --git a/my-producer-blocks.md b/my-producer-blocks.md new file mode 100644 index 0000000..90185b6 --- /dev/null +++ b/my-producer-blocks.md @@ -0,0 +1,29 @@ +Apache ActiveMQ ™ -- My producer blocks + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [My producer blocks](my-producer-blocks.html) + + +What can I do if my producer blocks sending a message? +------------------------------------------------------ + +This relates to [Producer Flow Control](producer-flow-control.html). + +### Active 4.x + +In ActiveMQ 4.x, all in transit messages are held in memory. If you have a slow consumer, to avoid exausting the JVM memory and getting an out of memory error, ActiveMQ has a configurable limit of how many in transit messages it will hold. Once it is reached, producers will be slowed down / blocked. + +A quick fix is just to bump up the setting in your **usageManager** in your [Xml Configuration](xml-configuration.html). The default that ships with ActiveMQ is pretty low, only 20Mb of RAM, so try setting it to something large, say 512Mb. + +An alternative approach is to set individual usageManager limits on different destinations and for producers versus consumers. + +You might also want to use the [JMX](jmx.html) support or [Web Console](web-console.html) to look at what destinations are being used and what producers & consumers you have to see whats going on. + +### Active 5.x and Later + +As of 5.x of ActiveMQ there is support for [Message Cursors](message-cursors.html) which by default move messages out of memory and onto disk. So this problem will not be seen unless you fill up the max allocated disk space for message storage which typically is an order of magnitude larger. + +### See Also + +* [Producer Flow Control](producer-flow-control.html) +* [Message Cursors](message-cursors.html) + diff --git a/navigation.md b/navigation.md new file mode 100644 index 0000000..e281a46 --- /dev/null +++ b/navigation.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- Navigation + +[Site](site.html) > [Navigation](navigation.html) + + + diff --git a/networks-of-brokers.md b/networks-of-brokers.md new file mode 100644 index 0000000..5d146cb --- /dev/null +++ b/networks-of-brokers.md @@ -0,0 +1,543 @@ +Apache ActiveMQ ™ -- Networks of Brokers + +[Features](features.html) > [Clustering](clustering.html) > [Networks of Brokers](networks-of-brokers.html) + + +To provide massive scalability of a large messaging fabric you typically want to allow many brokers to be connected together into a network so that you can have as many clients as you wish all logically connected together - and running as many message brokers as you need based on your number of clients and network topology. + +If you are using [client/server or hub/spoke style topology](topologies.html) then the broker you connect to becomes a single point of failure which is another reason for wanting a network (or cluster) of brokers so that you can survive failure of any particular broker, machine or subnet. + +From 1.1 onwards of ActiveMQ supports _networks of brokers_ which allows us to support [distributed queues and topics](how-do-distributed-queues-work.html) across a network of brokers. + +This allows a client to connect to any broker in the network - and fail over to another broker if there is a failure - providing from the clients perspective a [HA](ha.html) cluster of brokers. + +**N.B.** By default a network connection is one way only - the broker that establishes the connection _passes messages to_ the broker(s) its connected to. From version 5.x of ActiveMQ, a network connection can be optionally enabled to be duplex, which can be useful for hub and spoke architectures, where the hub is behind a firewall etc. + +Configuring a network of brokers +-------------------------------- + +The easiest way to configure a network of brokers is via the [Xml Configuration](xml-configuration.html). There are two main ways to create a network of brokers + +* use a hard coded list of networkConnector elements. + +* use Discovery to detect brokers (multicast or rendezvous). + +### Example with a fixed list of URIs + +Here is an example of using the fixed list of URIs + + + + + + + + + + + + + + + + + + + + + +ActiveMQ also supports other transports than tcp to be used for the network connector such as http. + +### Example using multicast discovery + +This example uses multicast [discovery](http://activemq.apache.org/discovery.html) + + + + + + + + + + + + + + + + + + + + + +Starting network connectors +--------------------------- + +By default, network connectors are initiated serially as part of the broker start up sequence. When some networks are slow, they prevent other networks from starting in a timely manner. Version 5.5 supports the broker attribute networkConnectorStartAsync="true" which will cause the broker to use an executor to start network connectors in parallel, asynchronous to a broker start. + +Static discovery +---------------- + +With `static:` discovery you can hard code the list of broker URLs. A network connector will be created for each one. + + + + + +There are some useful properties you can set on a static network connector for retries: + +property + +default + +description + +initialReconnectDelay + +1000 + +time(ms) to wait before attempting a reconnect (if useExponentialBackOff is false) + +maxReconnectDelay + +30000 + +time(ms) to wait before attempting to re-connect + +useExponentialBackOff + +true + +increases time between reconnect for every failure in a reconnect sequence + +backOffMultiplier + +2 + +multipler used to increase the wait time if using exponential back off + +e.g. + +uri="static:(tcp://host1:61616,tcp://host2:61616)?maxReconnectDelay=5000&useExponentialBackOff=false" + +MasterSlave Discovery +--------------------- + +A common configuration option for a network of brokers is to establish a network bridge between a broker and an n+1 broker pair (master/slave). Typical configurations involve using the `failover:` transport, but there are a some other non-intuitive options that must be configured for it to work as desired. For this reason, ActiveMQ v5.6+ has a convenience discovery agent that can be specified with the `masterslave:` transport prefix: + + + + + +The URIs are listed in order for: MASTER,SLAVE1,SLAVE2...SLAVE![(thumbs down)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/thumbs_down.png) + +The same configuration options for `static:` are available for `masterslave:` + +NetworkConnector Properties +--------------------------- + +property + +default + +description + +name + +bridge + +name of the network - for more than one network connector between the same two brokers - use different names + +dynamicOnly + +false + +if true, only activate a networked durable subscription when a corresponding durable subscription reactivates, by default they are activated on startup. + +decreaseNetworkConsumerPriority + +false + +if true, starting at priority -5, decrease the priority for dispatching to a network Queue consumer the further away it is (in network hops) from the producer. When false all network consumers use same default priority(0) as local consumers + +networkTTL + +1 + +the number of brokers in the network that messages and subscriptions can pass through (sets both message&consumer -TTL) + +messageTTL + +1 + +(version 5.9) the number of brokers in the network that messages can pass through + +consumerTTL + +1 + +(version 5.9) the number of brokers in the network that subscriptions can pass through (keep to 1 in a mesh) + +conduitSubscriptions + +true + +multiple consumers subscribing to the same destination are treated as one consumer by the network + +excludedDestinations + +empty + +destinations matching this list won't be forwarded across the network (this only applies to dynamicallyIncludedDestinations) + +dynamicallyIncludedDestinations + +empty + +destinations that match this list **will** be forwarded across the network **n.b.** an empty list means all destinations not in the exluded list will be forwarded + +useVirtualDestSubs + +false + +if true, the network connection will listen to advisory messages for virtual destination consumers + +staticallyIncludedDestinations + +empty + +destinations that match will always be passed across the network - even if no consumers have ever registered an interest + +duplex + +false + +if true, a network connection will be used to both produce **_AND_** Consume messages. This is useful for hub and spoke scenarios when the hub is behind a firewall etc. + +prefetchSize + +1000 + +Sets the [prefetch size](what-is-the-prefetch-limit-for.html) on the network connector's consumer. It must be > 0 because network consumers do not poll for messages + +suppressDuplicateQueueSubscriptions + +false + +(from 5.3) if true, duplicate subscriptions in the network that arise from network intermediaries will be suppressed. For example, given brokers A,B and C, networked via multicast discovery. A consumer on A will give rise to a networked consumer on B and C. In addition, C will network to B (based on the network consumer from A) and B will network to C. When true, the network bridges between C and B (being duplicates of their existing network subscriptions to A) will be suppressed. Reducing the routing choices in this way provides determinism when producers or consumers migrate across the network as the potential for dead routes (stuck messages) are eliminated. networkTTL needs to match or exceed the broker count to require this intervention. + +bridgeTempDestinations + +true + +Whether to broadcast advisory messages for created temp destinations in the network of brokers or not. Temp destinations are typically created for request-reply messages. Broadcasting the information about temp destinations is turned on by default so that consumers of a request-reply message can be connected to another broker in the network and still send back the reply on the temporary destination specified in the JMSReplyTo header. In an application scenario where most/all messages use request-reply pattern, this will generate additional traffic on the broker network as every message typically sets a unique JMSReplyTo address (which causes a new temp destination to be created and broadcasted via an advisory message in the network of brokers). +When disabling this feature such network traffic can be reduced but then producer and consumers of a request-reply message need to be connected to the same broker. Remote consumers (i.e. connected via another broker in your network) won't be able to send the reply message but instead raise a "temp destination does not exist" exception. + +alwaysSyncSend + +false + +(version 5.6) When true, non persistent messages are sent to the remote broker using request/reply in place of a oneway. This setting treats both persistent and non-persistent messages the same. + +staticBridge + +false + +(version 5.6) If set to true, broker will not dynamically respond to new consumers. It will only use `staticallyIncludedDestinations` to create demand subscriptions + +userName + +null + +The username to authenticate against the remote broker + +password + +null + +The password for the username to authenticate against the remote broker + +#### Reliability + +Networks of brokers do reliable store and forward of messages. If the source is durable, persistent messages on a queue or a durable topic subscription, a network will retain the durability guarantee. +However networks cannot add durability when the source is non durable. Non durable topic subscriptions and temporary destinations (both queues and topics) are non durable by definition. When non durable +sources are networked, in the event of a failure, inflight messages can be lost. + +#### Ordering + +Total message ordering is not preserved with networks of brokers. Total ordering [works with a single consumer](how-do-i-preserve-order-of-messages.html) but a networkBridge introduces a second consumer. In addition, network bridge consumers forward messages via producer.send(..), so they go from the head of the queue on the forwarding broker to the tail of the queue on the target. If single consumer moves between networked brokers, total order may be preserved if all messages always follow the consumer but this can be difficult to guarantee with large message backlogs. + +#### When to use and not use Conduit subscriptions + +ActiveMQ relies on information about active consumers (subscriptions) to pass messages around the network. A broker interprets a subscription from a remote (networked) broker in the same way as it would a subscription from a local client connection and routes a copy of any relevant message to each subscription. With Topic subscriptions and with more than one remote subscription, a remote broker would interpret each message copy as valid, so when it in turns routes the messages to its own local connections, duplicates would occur. Hence default conduit behavior consolidates all matching subscription information to prevent duplicates flowing around the network. With this default behaviour, N subscriptions on a remote broker look like a single subscription to the networked broker. + +However - duplicate subscriptions is a useful feature to exploit if you are only using Queues. As the load balancing algorithm will attempt to share message load evenly, consumers across a network will equally share the message load only if the flag `conduitSubscriptions=false`. Here's an example. Suppose you have two brokers, A and B, that are connected to one another via a forwarding bridge. Connected to broker A, you have a consumer that subscribes to a queue called `Q.TEST`. Connected to broker B, you have two consumers that also subscribe to `Q.TEST`. All consumers have equal priority. Then you start a producer on broker A that writes 30 messages to `Q.TEST`. By default, (`conduitSubscriptions=true`), 15 messages will be sent to the consumer on broker A and the resulting 15 messages will be sent to the two consumers on broker B. The message load has not been equally spread across all three consumers because, by default, broker A views the two subscriptions on broker B as one. If you had set `conduitSubscriptions` to `false`, then each of the three consumers would have been given 10 messages. + +#### Duplex network connectors + +By default a network bridge forwards messages on demand in one direction over a single connection. When `duplex=true`, the same connection is used for a network bridge in the opposite directions, resulting in a bi-directional bridge. The network bridge configuration is propagated to the other broker so the duplex bridge is an exact replica or the original. + + +Given two brokers, broker A and broker B, a duplex bridge on A to B is the same as a default bridge on A to B and a default bridge on B to A. + + +Note, if you want to configure more than one duplex network bridge between two brokers, to increase throughput or to partition topics and queues, you must provide unique names for each: + + + + + + + + + + + + + + +#### Conduit subscriptions and consumer selectors + +Conduit subscriptions ignore consumer selectors on the local broker and send all messages to the remote one. Selectors are then parsed on the remote brokers before messages are dispatched to consumers. This concept could create some problems with consuming on queues using selectors in a multi-broker network. Imagine a situation when you have a producing broker forwarding messages to two receiving brokers and each of these two brokers have a consumer with different selector. Since no selectors are evaluated on the producer broker side, you can end up with all messages going to only one of the brokers, so messages with certain property will not be consumed. If you need to support this use case, please turn off `conduitSubscription` feature. + +#### Configuration Pitfalls + +Networks do not work as expected (they cannot dynamically respond to new consumers) if the `advisorySupport` broker property is disabled. A fully statically configured network is the only option if `advisorySupport` is disabled. Read more about it in the following section. + +### Networks of brokers and advisories + +Network of brokers relies heavily on advisory messages, as they are used under the hood to express interest in new consumers on the remote end. By default, when network connector starts it defines one consumer on the following topic `ActiveMQ.Advisory.Consumer.>` (let's ignore temporary destination for the moment). In this way, when consumer connects (or disconnects) to the remote broker, the local broker will get notified and will treat it as one more consumer it had to deal with. + +This is all fine and well in small networks and environments whit small number of destinations and consumers. But as things starts to grow a default model (listen to everything, share everything) won't scale well. That's why there are many ways you can use to filter destinations that will be shared between brokers. + +#### Dynamic networks + +Let's start with dynamically configured networks. This means that we only want to send messages to the remote broker when there's a consumer there. If we want to limit this behavior only on certain destinations we will use `dynamicallyIncludedDestinations`, like + + + + + + + + +In versions of ActiveMQ prior to 5.6, the broker would still use the same advisory filter and express interest in all consumers on the remote broker. The actual filtering will be done during message dispatch. This is suboptimal solution in huge networks as it creates a lot of "advisory" traffic and load on the brokers. Starting with version 5.6, the broker will automatically create an appropriate advisory filter and express interest only in dynamically included destinations. For our example it will be "`ActiveMQ.Advisory.Consumer.Queue.include.test.foo,ActiveMQ.Advisory.Consumer.Topic.include.test.bar`". This can dramatically improve behavior of the network in complex and high-load environments. + +In older broker versions we can achieve the same thing with a slightly more complicated configuration. The actual advisory filter that controls in which consumers we are interested is defined with the `destinationFilter` connector property. Its default value is ">", which is concatenated to the `"ActiveMQ.Advisory.Consumer."` prefix. So to achieve the same thing, we would need to do the following: + + + + + + + + +Note that first destination does not have the prefix because it's already implied. It's a bit more complicated to set and maintain, but it will work. And if you're using 5.6 or newer version of the broker just including desired destinations with `dynamicallyIncludedDestinations` should suffice. + +This also explains why dynamic networks do not work if you turn off advisory support on the brokers. The brokers in this case cannot dynamically respond to new consumers. + +#### Pure static networks + +If you wish to completely protect the broker from any influence of consumers on the remote broker, or if you wish to use the brokers as a simple proxy and forward all messages to the remote side no matter if there are consumers there or not, static networks are something you should consider. + + + + + + + +The `staticBridge` parameter is available since version 5.6 and it means that the local broker will not subscribe to any advisory topics on the remote broker, meaning it is not interested in whether there are any consumers there. Additionally, you need to add a list of destinations to `staticallyIncludedDestinations`. This will have the same effect as having an additional consumer on the destinations so messages will be forwarded to the remote broker as well. As there is no `staticBridge` parameter in the earlier versions of ActiveMQ, you can trick the broker by setting `destinationFilter` to listen to an unused advisory topic, like + + + + + + + +If configured like this, broker will try to listen for new consumers on `ActiveMQ.Advisory.Consumer.NO_DESTINATION`, which will never have messages so it will be protected from information on remote broker consumers. + +### Dynamic networks and Virtual Destinations (New for 5.13.0) + +As described above, a network of brokers can be configured to only send messages to a remote broker when there's a consumer on an included destination.  However, let's consider some cases of how dynamic flow occurs when [Virtual Destinations](virtual-destinations.html) are in use. + +#### Virtual Destination consumers and Composite Destinations + +Here is an example of two brokers networked together.  The Local Broker contains the network connector configured with a `dynamicallyIncludedDestination` and the Remote Broker is configured with a CompositeTopic: + +**Local Broker** + + + + + + + +**Remote Broker** + + + + + + + +In this example, let's consider a single consumer on the Remote Broker on the queue `include.bar.forward`.  If a message is sent directly to the Remote Broker on the topic `include.bar`, it will be forwarded to the queue `include.bar.forward` and the consumer will receive it.  However, if a message is published to the same topic on the Local Broker, this message will not be forwarded to the Remote Broker. + +The message is not forwarded because a consumer on the `queue include.bar.forward` would not be detected as part of the `dynamicallyIncludedDestinations` list in the Local Broker.  Messages would not be forwarded to the Remote Broker unless there was a consumer on the original topic as well (in this case `include.bar`).  This can be fixed by configuring the Local Broker to listen for Virtual Destination Subscriptions.   + +First, we need to configure the Remote Broker to send advisory messages when consumers subscribe to a destination that matches a Virtual Destination.  In this case, internally a match is determined through the use of a Destination Filter that determines whether one destination forwards to another destination.  To enable this, set the property `useVirtualDestSubs` on the Remote Broker to `true`: + +**Remote Broker** + + + + + + + ..... + + + + + +Next, the network connector on the Local Broker needs to be configured to listen for the new advisory messages by setting the `useVirtualDestSubs` property to `true`: + +**Local Broker** + + + + + + + +Now, if a consumer comes subscribes to the queue `include.bar.forward` on the Remote Broker, the Local Broker will forward messages that are sent to the topic `include.bar.` + +#### Virtual Destination Consumers on Destination Creation + +Now let's consider the use case above where there is the same composite topic but no consumers on the queue. +  + +**Remote Broker** + + + + + + + +There is a Composite Topic configured on the Remote Broker, and the Local Broker is networked to it.   + +Even though we have enabled `useVirtualDestSubs`, messages will not be forwarded to the Remote Broker unless a consumer subscribes to the forwarded queue.  Without a consumer, messages would be dropped as they are sent to a topic on the Local Broker (`include.bar`).  In this situation it is desirable to have messages forwarded based on the existence of a virtual destination that forwards to: + +* one or more queues; or +* topics that have durable subscriptions. + +Both of these conditions are considered as emitting demand for messages to the Local Broker, despite there being no active consumers on those destinations. + +**Remote Broker** + + + + + + + ..... + + + + +With this configuration, when the queue `include.bar.forward` is created, a Virtual Destination consumer advisory will be sent to the Local Broker so that it knows to forward messages based on the existence of the Composite Topic that forwards to a queue. + +#### Composite Destination consumers and Virtual Topics  + +The above examples show how to configure a Composite Destination but a Virtual Topic will also work.  In the example below, a consumer on a queue for a Virtual Topic on the Remote Broker will now cause demand and messages will be sent across a network from the Local Broker. + +**Local Broker** + + + + + + + +**Remote Broker** + + + + + + + ..... + + + + +### Example Configuration using NetworkConnector properties + +This part of an example configuration for a Broker + + + + + + + + + + + + + + + + + + +Note that at the moment `excludedDestinations` property doesn't affect `staticallyIncludedDestinations`. + +It is possible to have more than one network connector between two brokers. Each network connector uses one underlying transport connection, so you may wish to do this to increase throughput, or have a more flexible configuration. + + +For example, if using distributed queues, you may wish to have equivalent weighting to queue receivers across the network, but only when the receivers are active - e.g. + + + + + + + + + +**N.B.** You can only use [wildcards](wildcards.html) in the `excludedDestinations` and `dynamicallyIncludedDestinations` properties. +**N.B.** **Do not** change the name of the bridge or the name of the Broker if you are using durable topic subscribers across the network. Internally ActiveMQ uses the network name and broker name to build a unique but repeatable durable subscriber name for the network. + +### Stuck Messages (version 5.6) + +By default, it is not permissible for a message to be replayed back to the broker from which it came. This ensures that messages do not loop when duplex or by directional network connectors are configured. Occasionally it is desirable to allow replay for queues. Consider a scenario where a bidirectional bridge exists between a broker pair. Producers and Consumers get to randomly choose a broker using the failover transport. If one broker is restarted for maintenance, messages accumulated on that broker, that crossed the network bridge, will not be available to consumers till they reconnect to the broker. One solution to this problem is to force a client reconnect using [rebalanceClusterClients](http://activemq.apache.org/failover-transport-reference.html#FailoverTransportReference-BrokersideOptionsforFailover). Another, is to allow replay of messages back to the origin as there is no local consumer on that broker. +There is a destination policy that allows this behavior for queues by configuring a `conditionalNetworkBridgeFilterFactory` with `replayWhenNoConsumers=true`. The `conditionalNetworkBridgeFilterFactory` provides an optional `replayDelay` based on the broker-in time. + + + + + + +   + + + + + + +**N.B.:** When using `replayWhenNoConsumers=true` for versions < 5.9, it is necessary to also disable the cursors duplicate detection using `**enableAudit=false**` as the cursor could mark the replayed messages as duplicates (depending on the time window between playing and replaying these messages over the network bridge). The problem is fully explained in this [blog post](http://tmielke.blogspot.de/2012/03/i-have-messages-on-queue-but-they-dont.html). + +#### Throttling a network consumer + +The `conditionalNetworkBridgeFilterFactory` factory allows a rate limit to be specified for a destination, such that network consumer can be throttled. Prefetch for a network consumer is largely negated by the fact that a network consumer relays a message typically acks very quickly so even with a low prefetch and decreased priority a network consumer can starve a modestly quick local consumer. Throttling provides a remedy for this. + diff --git a/new-features-in-41.md b/new-features-in-41.md new file mode 100644 index 0000000..1a2484d --- /dev/null +++ b/new-features-in-41.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- New Features in 4.1 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 4.1](new-features-in-41.html) + + +New Features in Apache ActiveMQ 4.1 +----------------------------------- + +* [Shared File System Master Slave](shared-file-system-master-slave.html) +* [JDBC Master Slave](jdbc-master-slave.html) +* [Virtual Destinations](virtual-destinations.html) +* [Configure Startup Destinations](configure-startup-destinations.html) +* [Structured Message Properties and MapMessages](structured-message-properties-and-mapmessages.html) + diff --git a/new-features-in-42.md b/new-features-in-42.md new file mode 100644 index 0000000..c415718 --- /dev/null +++ b/new-features-in-42.md @@ -0,0 +1,177 @@ +Apache ActiveMQ ™ -- New Features in 4.2 + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [New Features in 4.2](new-features-in-42.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +New Features in 4.2 +------------------- + +The 4.2 version was renamed to 5.0 due to some changes in [OpenWire](openwire.html "OpenWire") requiring a major version number increase, plus 5.0 being dependent by default on Java 5 to take advantage of the faster and more bug-free java.util.concurrent code. + +So please refer to the [New Features in 5.0](new-features-in-50.html "New Features in 5.0") + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/new-features-in-50.md b/new-features-in-50.md new file mode 100644 index 0000000..71a7fde --- /dev/null +++ b/new-features-in-50.md @@ -0,0 +1,20 @@ +Apache ActiveMQ ™ -- New Features in 5.0 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.0](new-features-in-50.html) + + +New Features in 5.0 +------------------- + +In the 5.0 release of Apache ActiveMQ there are the following new features: + +* [AMQ Message Store](amq-message-store.html) (Faster Persistence!) +* [Message Cursors](message-cursors.html) (To handle very large number of stored messages) +* [Blob Messages](blob-messages.html) +* [Command Agent](command-agent.html) +* [Enterprise Integration Patterns](enterprise-integration-patterns.html) via [Camel Integration](http://activemq.apache.org/camel/) +* [Logging a warning if you forget to start a Connection](logging-a-warning-if-you-forget-to-start-a-connection.html) +* [Message Transformation](message-transformation.html) +* [Mirrored Queues](mirrored-queues.html) +* [Producer Flow Control](producer-flow-control.html) + diff --git a/new-features-in-51.md b/new-features-in-51.md new file mode 100644 index 0000000..fdb728a --- /dev/null +++ b/new-features-in-51.md @@ -0,0 +1,20 @@ +Apache ActiveMQ ™ -- New Features in 5.1 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.1](new-features-in-51.html) + + +New Features in 5.1 +------------------- + +In the 5.1.x release of Apache ActiveMQ there are the following new features: + +* You can use the new [DestinationSource](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/advisory/DestinationSource.html) on an ActiveMQConnection to access the available queues or topics or listen to queues/topics being created or deleted. + + New Features in 5.1 + ------------------- + +* Support for more graceful handling of [timeouts within MessageProducer.send](http://issues.apache.org/activemq/browse/AMQ-1517) +* Add the option for a [backup channel that is already connected for the Failover transport](http://issues.apache.org/activemq/browse/AMQ-1572) +* ActiveMQ configuration can now validate against an XSD which means that it can be embedded in a spring configuration file. +* Stomp can now handle delivering Map and Object messages. + diff --git a/new-features-in-511.md b/new-features-in-511.md new file mode 100644 index 0000000..5d1f82f --- /dev/null +++ b/new-features-in-511.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- New Features in 5.11 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.11](new-features-in-511.html) + + +New Features in 5.11.0 +---------------------- + +* Destination import/export for lock down mode [AMQ-5218](https://issues.apache.org/jira/browse/AMQ-5218) +* Dynamic camel root loading [AMQ-5351](https://issues.apache.org/jira/browse/AMQ-5351) + +* MQTT - QOS2 mapped to virtual topics [AMQ-5290](https://issues.apache.org/jira/browse/AMQ-5290) + +* start scripts simplification [AMQ-5378](https://issues.apache.org/jira/browse/AMQ-5378) +* Recover scheduler database option [AMQ-3758](https://issues.apache.org/jira/browse/AMQ-3758) +* Jetty 8 +* Karaf 2.4.1 + diff --git a/new-features-in-513.md b/new-features-in-513.md new file mode 100644 index 0000000..dedb3fe --- /dev/null +++ b/new-features-in-513.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- New Features in 5.13 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.13](new-features-in-513.html) + + +New Features in 5.13.0 +---------------------- + +* New transport protocol, [AUTO](auto.html) [AMQ-5889](https://issues.apache.org/jira/browse/AMQ-5889) +* Dynamic network support for virtual consumers, [Networks of Brokers](networks-of-brokers.html) [AMQ-6027](https://issues.apache.org/jira/browse/AMQ-6027) + +* Pending message size metrics [AMQ-5923](https://issues.apache.org/jira/browse/AMQ-5923) + +* New Java API for runtime configuration changes, [](https://issues.apache.org/jira/browse/AMQ-5915)[](http://activemq.apache.org/maven/apidocs/org/apache/activemq/plugin/java/JavaRuntimeConfigurationBroker.html)[J](https://issues.apache.org/jira/browse/AMQ-5915)avaRuntimeConfigurationBroker to compliment the current [http://activemq.apache.org/runtime-configuration.html](http://XML Runtime Plugin)  [AMQ-5915](https://issues.apache.org/jira/browse/AMQ-5915) +* Several dependency updates, including Jetty 9.2, Spring 4.1, and Karaf 4 [AMQ-5957](https://issues.apache.org/jira/browse/AMQ-5957) + + + diff --git a/new-features-in-52.md b/new-features-in-52.md new file mode 100644 index 0000000..3d6eb66 --- /dev/null +++ b/new-features-in-52.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- New Features in 5.2 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.2](new-features-in-52.html) + + +Apache ActiveMQ 5.2 is primarily a maintenance release which [resolves](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?projectId=10520&styleName=Html&version=11841) + +JIRA Issues Macro: Data cannot be retrieved due to an unexpected error + +. + +New Features in 5.2 +------------------- + +The new features and enhancements in this release include: + +* [Additional advisory messages](advisory-message.html) for messages delivered/consumed fast producers/slow consumers, Usage limits, Slaves become masters etc. +* Enhanced ssl context configuration through spring/xbean +* New individual acknowledge mode for message consumption +* Ability to configure the automatic discarding of the items being sent to the dead letter queue +* Ability to limit the maximum number of connections to a Broker +* Ability to configure [separate lock](https://issues.apache.org/activemq/browse/AMQ-1244) Datasource for JDBC Master slave. +* activemq-camel and activemq-connection-pool now have their own modules, no longer in activemq-core +* The default [ActiveMQConnectionFactory](http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html) brokerUrl now uses the [failover transport](failover-transport-reference.html). +* Uses Apache Camel [1.5](http://activemq.apache.org/camel/camel-150-release.html). + diff --git a/new-features-in-53.md b/new-features-in-53.md new file mode 100644 index 0000000..6c28ab8 --- /dev/null +++ b/new-features-in-53.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- New Features in 5.3 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.3](new-features-in-53.html) + + +Apache ActiveMQ 5.3 is primarily a maintenance release which [resolves](https://issues.apache.org/activemq/secure/ReleaseNote.jspa?version=11914&styleName=Html&projectId=10520) 334 issues. + +New Features in 5.3 +------------------- + +The new features and enhancements in this release include: + +* New [KahaDB](kahadb.html) persistent storage +* [Camel 2.0.0](http://camel.apache.org) along with its web console +* stomp over SSL and NIO support +* Improved configuration - default one production oriented and a lot of use case configuration examples (like scalability and throughput) +* Ability to query broker for statistics from non-Java clients (by sending a message) +* More broker plugins included to help tracing messages in networks, improving logging, etc. +* FTP support for blob messages +* Improved activemq-admin to lookup for local processes if possible +* ... and much more + diff --git a/new-features-in-54.md b/new-features-in-54.md new file mode 100644 index 0000000..fea96d2 --- /dev/null +++ b/new-features-in-54.md @@ -0,0 +1,27 @@ +Apache ActiveMQ ™ -- New Features in 5.4 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.4](new-features-in-54.html) + + +New Features in 5.4.1 +--------------------- + +* [Encrypted passwords](encrypted-passwords.html) +* Added selector support in [Ajax](ajax.html) + +New Features in 5.4 +------------------- + +* [Delay and Schedule Message Delivery](delay-and-schedule-message-delivery.html) +* Message Priority +* [WebSockets](websockets.html) +* [Better OSGi support](osgi-integration.html) +* Broker side options for updating failover clients automatically of new brokers joining and leaving the cluster - see [Failover Transport Reference](failover-transport-reference.html) +* [Enhanced Shell Script](unix-shell-script.html) \- for starting, stopping and managing the broker in a Unix environment +* [Easy way to configure Web Console](web-console.html) +* [Selectors for Ajax and REST consumers](rest.html) +* JaasDualAuthentcationPlugin +* [Anonymous users](security.html) +* Ajax Adapters +* ... and much more + diff --git a/new-features-in-55.md b/new-features-in-55.md new file mode 100644 index 0000000..ba5f5b1 --- /dev/null +++ b/new-features-in-55.md @@ -0,0 +1,23 @@ +Apache ActiveMQ ™ -- New Features in 5.5 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.5](new-features-in-55.html) + + +New Features in 5.5.0 +--------------------- + +* Dependency on Java 1.6 (java 1.5 is no longer supported) +* MDC logging ([SLF4J](http://slf4j.org/)) +* Upgrade to camel 2.7.0 +* DLQ processing per durable subscription +* New network connector MBeans +* [IOExceptionHandler](http://activemq.apache.org/configurable-ioexception-handling.html) for JDBC store +* Added support for [Apache Commons Daemon](http://commons.apache.org/daemon/) + +Improvements in 5.5.0 +--------------------- + +* Improved support for recovery of durable subscribers with priority support +* Improved performance for offline durable subscriptions with large message backlogs (JDBC store) +* better support for Guest login via JAAS + diff --git a/new-features-in-56.md b/new-features-in-56.md new file mode 100644 index 0000000..9ea2739 --- /dev/null +++ b/new-features-in-56.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- New Features in 5.6 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.6](new-features-in-56.html) + + +New Features in 5.6.0 +--------------------- + +* LevelDB Store +* MQTT transport +* New LDAP security module +* Stomp 1.1 support +* stomp+nio+ssl transport +* Multi KahaDB persistence +* Priority Failover URIs +* Automatic client rebalance in broker cluster + diff --git a/new-features-in-57.md b/new-features-in-57.md new file mode 100644 index 0000000..b3f14bf --- /dev/null +++ b/new-features-in-57.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- New Features in 5.7 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.7](new-features-in-57.html) + + +* Java 7 support (compiled with jdk6 and validated with jdk7) +* [Secure WebSockets (wss) transport](http://activemq.apache.org/websockets.html#WebSockets-SecureWebSockets) +* [Broker Based Redelivery](http://activemq.apache.org/message-redelivery-and-dlq-handling.html#MessageRedeliveryandDLQHandling-BrokerRedelivery%28v5.7%29) +* [Pluggable Store Lockers](http://activemq.apache.org/pluggable-storage-lockers.html) +* [Lease based database locker](http://activemq.apache.org/pluggable-storage-lockers.html#Pluggablestoragelockers-LeaseDatabaseLocker) +* Set a [RedeliveryPolicy per destination](http://activemq.apache.org/redelivery-policy.html#RedeliveryPolicy-RedeliveryPolicyperDestination) +* Includes [Apache Camel 2.10](http://camel.apache.org/camel-2100-release.html) + diff --git a/new-features-in-58.md b/new-features-in-58.md new file mode 100644 index 0000000..b98706a --- /dev/null +++ b/new-features-in-58.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- New Features in 5.8 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.8](new-features-in-58.html) + + +* [AMQP](amqp.html) +* new feature modules and activemq-client module allowing smaller foorprint +* management via [REST](rest.html) with [jolokia](http://www.jolokia.org/) jmx to http bridge +* Includes [Apache Camel 2.10.3](http://camel.apache.org/camel-2103-release.html) +* Java 7 support (compiled with jdk6 and validated with jdk7) +* [Pure Master Slave](pure-master-slave.html) no longer supported + diff --git a/new-features-in-59.md b/new-features-in-59.md new file mode 100644 index 0000000..79f3434 --- /dev/null +++ b/new-features-in-59.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- New Features in 5.9 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.9](new-features-in-59.html) + + +* [Replicated LevelDB Store](replicated-leveldb-store.html) for shared nothing Master/Slave. +* [Runtime Configuration](runtime-configuration.html) +* Generic JMS XA connection pool in activemq-jms-pool module (has no ActiveMQ dependency) +* MQTT over WebSockets support +* [**broker**](broker-camel-component.html) Apache Camel component +* Broker auto-restart upon losing master status +* AMQP Hardening +* LevelDB Hardening + diff --git a/new-features-in-60.md b/new-features-in-60.md new file mode 100644 index 0000000..b2f97e5 --- /dev/null +++ b/new-features-in-60.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- New Features in 6.0 + +[Features](features.html) > [New Features](new-features.html) > [New Features in 6.0](new-features-in-60.html) + + +At one point, if you were interested in Version 6, you could take a look at [Apollo subproject](http://activemq.apache.org/apollo/) as it was expected to be the core of the 6.0 broker.  However, as of July 2015, Apollo is being unofficially declared dead.  There is currently no official decision about the path forward for 6.0, though it's possible that the [Artemis subproject](https://activemq.apache.org/artemis/) will instead become 6.0 at some point. + diff --git a/new-features.md b/new-features.md new file mode 100644 index 0000000..985c7d8 --- /dev/null +++ b/new-features.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- New Features + +[Features](features.html) > [New Features](new-features.html) + + +New Features +------------ + +This page documents the various new features we add in each major release + +* [New Features in 6.0](new-features-in-60.html) +* [New Features in 5.13](new-features-in-513.html) +* [New Features in 5.11](new-features-in-511.html) +* [New Features in 5.6](new-features-in-56.html) +* [New Features in 5.5](new-features-in-55.html) +* [New Features in 5.4](new-features-in-54.html) +* [New Features in 5.2](new-features-in-52.html) +* [New Features in 5.1](new-features-in-51.html) +* [New Features in 5.0](new-features-in-50.html) +* [New Features in 4.1](new-features-in-41.html) +* [New Features in 4.0](changes-in-40.html) + diff --git a/news.md b/news.md new file mode 100644 index 0000000..e8cea95 --- /dev/null +++ b/news.md @@ -0,0 +1,103 @@ +Apache ActiveMQ ™ -- News + +[Overview](overview.html) > [News](news.html) + + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.15.2 Released](2017/10/23/apache-activemq-5152-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on Oct 23, 2017 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.15.2](http://activemq.apache.org/activemq-5152-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.15.0 Released](2017/07/06/apache-activemq-5150-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on Jul 06, 2017 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.15.0](http://activemq.apache.org/activemq-5150-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + + [![User icon: dejanb](/images/confluence/icons/profilepics/default.png "dejanb")](https://cwiki.apache.org/confluence/display/~dejanb) [Apache ActiveMQ 5.14.5 Released](2017/04/17/apache-activemq-5145-released.html) + +[Dejan Bosanac](https://cwiki.apache.org/confluence/display/~dejanb) posted on Apr 17, 2017 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.5](http://activemq.apache.org/activemq-5145-release.html) +A big thanks to everyone who contributed to this release. +We look forward to your feedback. + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.14.4 Released](2017/03/03/apache-activemq-5144-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on Mar 03, 2017 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.4](http://activemq.apache.org/activemq-5144-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.14.2 Released](2016/12/09/apache-activemq-5142-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on Dec 09, 2016 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.2](http://activemq.apache.org/activemq-5142-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.14.1 Released](2016/10/03/apache-activemq-5141-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on Oct 03, 2016 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.1](http://activemq.apache.org/activemq-5141-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.14.0 Released](2016/08/08/apache-activemq-5140-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on Aug 08, 2016 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.14.0](http://activemq.apache.org/activemq-5140-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.13.4 Released](2016/07/21/apache-activemq-5134-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on Jul 21, 2016 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.13.4](http://activemq.apache.org/activemq-5134-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.13.3 Released](2016/05/03/apache-activemq-5133-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on May 03, 2016 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.13.3](http://activemq.apache.org/activemq-5133-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + + [![User icon: cshannon](/images/confluence/icons/profilepics/default.png "cshannon")](https://cwiki.apache.org/confluence/display/~cshannon) [Apache ActiveMQ 5.13.2 Released](2016/03/07/apache-activemq-5132-released.html) + +[Christopher L. Shannon](https://cwiki.apache.org/confluence/display/~cshannon) posted on Mar 07, 2016 + +The ActiveMQ team is pleased to announce the release of [ActiveMQ 5.13.2](http://activemq.apache.org/activemq-5132-release.html) + +A big thanks to everyone who contributed to this release. + +We look forward to your feedback. + diff --git a/nio-transport-reference.md b/nio-transport-reference.md new file mode 100644 index 0000000..2ceed7f --- /dev/null +++ b/nio-transport-reference.md @@ -0,0 +1,61 @@ +Apache ActiveMQ ™ -- NIO Transport Reference + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [NIO Transport Reference](nio-transport-reference.html) + + +NIO Transport is very similar to the regular [TCP transport](tcp-transport-reference.html). The difference is that it is implemented using NIO API which can help with performance and scalability. NIO is a server side transport option only. Trying to use it on the client side will instantiate the regular TCP transport. + +#### Configuration Syntax + +`**nio://hostname:port?key=value**` + +Configuration options are the same as for the [TCP transport](tcp-transport-reference.html). + +Note that the original NIO transport is a replacement for the tcp transport that uses OpenWire protocol. Other network protocols, such AMQP, MQTT, Stomp, etc also have their own NIO transport implementations. It configured usually, by adding "+nio" suffix to the protocol prefix, like + +mqtt+nio://localhost:1883 + +All protocol specific configuration should be applicable to the NIO version of the transport as well. + +### Tuning NIO transport thread usage + +One of the main advantages of using NIO instead of the regular versions of the transport is that it can scale better and support larger number of connections. The main limit in this scenario is the number of threads the system in using. In blocking implementations of the transports, one thread is used per connection. In the NIO implementation, there's a shared pool of threads that will take the load, so that number of connections are not directly related to the number of threads used in the system. + +You can tune the number of threads used by the transport using the following system properties (available since **5.15.0**) + +Property + +Default value + +Description + +org.apache.activemq.transport.nio.SelectorManager.corePoolSize + +10 + +The number of threads to keep in the pool, even if they are idle + +org.apache.activemq.transport.nio.SelectorManager.maximumPoolSize + +1024 + +The maximum number of threads to allow in the pool + +org.apache.activemq.transport.nio.SelectorManager.workQueueCapacity + + 0 + + The max work queue depth before growing the pool + +org.apache.activemq.transport.nio.SelectorManager.rejectWork + +false + +Allow work to be rejected with an IOException when capacity is reached such that existing QOS can be preserved + +If you want to scale your broker to support thousands of connections to it, you need to first find the limits of number of threads JVM process is allowed to create. Then you can set these properties to some value below that (broker need more threads to operate normally). For more information on thread usage by destinations and how to limit those, please take a look at [Scaling Queues](scaling-queues.html) or [this configuration file](http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/sample-conf/activemq-scalability.xml). For example you can add the following + +ACTIVEMQ\_OPTS="$ACTIVEMQ\_OPTS -Dorg.apache.activemq.transport.nio.SelectorManager.corePoolSize=2000 -Dorg.apache.activemq.transport.nio.SelectorManager.maximumPoolSize=2000 -Dorg.apache.activemq.transport.nio.SelectorManager.workQueueCapacity=1024" + +to the startup script (`${ACTIVEMQ_HOME}/bin/env` for example) to have a constant pool of 2000 threads handling connections. With the setting like this, the broker should be able to accept the number of connections up to the system limits. Of course, accepting connections is just one part of the story, so there are other limits to vertically scaling the broker. + diff --git a/nms-api-downloads.md b/nms-api-downloads.md new file mode 100644 index 0000000..f667e5a --- /dev/null +++ b/nms-api-downloads.md @@ -0,0 +1,49 @@ +Apache ActiveMQ ™ -- NMS API Downloads + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API Downloads](nms-api-downloads.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Description + +Release Date + +[Apache.NMS API v1.7.1](apachenms-api-v171.html) + +09/04/2015 + +[Apache.NMS API v1.7.0](apachenms-api-v170.html) + +01/08/2015 + +[Apache.NMS API v1.6.0](apachenms-api-v160.html) + +05/24/2013 + +[Apache.NMS API v1.5.1](apachenms-api-v151.html) + +07/06/2012 + +[Apache.NMS API v1.5.0](apachenms-api-v150.html) + +01/10/2011 + +[Apache.NMS API v1.4.0](apachenms-api-v140.html) + +09/10/2010 + +[Apache.NMS API v1.3.0](apachenms-api-v130.html) + +05/14/2010 + +[Apache.NMS API v1.2.0](apachenms-api-v120.html) + +01/15/2010 + +[Apache.NMS API v1.1.0](apachenms-api-v110.html) + +07/12/2009 + + diff --git a/nms-api.md b/nms-api.md new file mode 100644 index 0000000..2671aae --- /dev/null +++ b/nms-api.md @@ -0,0 +1,20 @@ +Apache ActiveMQ ™ -- NMS API + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS API](nms-api.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The NMS documentation has been generated using [Microsoft's Sandcastle](http://sandcastle.codeplex.com/) open source product. The [Sandcastle Styles](http://sandcastlestyles.codeplex.com/) project was used to enhance the output generated from the current release of Sandcastle. + +NMS API 1.6.0 +------------- + +### MSDN Style Formatting + +* [Apache.NMS Namespace](http://activemq.apache.org/nms/msdoc/1.6.0/vs2005/Output/html/N_Apache_NMS.htm) +* [Apache.NMS.Util Namespace](http://activemq.apache.org/nms/msdoc/1.6.0/vs2005/Output/html/N_Apache_NMS_Util.htm) +* [Apache.NMS.Policies Namespace](http://activemq.apache.org/nms/msdoc/1.6.0/vs2005/Output/html/N_Apache_NMS_Policies.htm) + + diff --git a/nms-examples.md b/nms-examples.md new file mode 100644 index 0000000..97d03f0 --- /dev/null +++ b/nms-examples.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- NMS Examples + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Examples](nms-examples.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +This is where you will find examples of how to use the NMS API. These examples demonstrate using the NMS API generically and are limited to features exposed directly through the API model. For examples covering more advanced features of a specific NMS Provider, refer to the documentation for that NMS Provider. + +* [NMS Simple Asynchronous Consumer Example](nms-simple-asynchronous-consumer-example.html) +* [NMS Simple Synchornous Consumer Example](nms-simple-synchornous-consumer-example.html) + + diff --git a/nms-faq.md b/nms-faq.md new file mode 100644 index 0000000..8d7d803 --- /dev/null +++ b/nms-faq.md @@ -0,0 +1,9 @@ +Apache ActiveMQ ™ -- NMS FAQ + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS FAQ](nms-faq.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + + diff --git a/nms-providers.md b/nms-providers.md new file mode 100644 index 0000000..6d9f9a1 --- /dev/null +++ b/nms-providers.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- NMS Providers + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Providers](nms-providers.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +### NMS Providers + +An NMS Provider is a .NET Assembly that provides an implementation of the NMS API that provides connectivity with a particular Messaging Service or an implementation of a standard Messaging Protocol. Currently, the following providers are available: + +* [**ActiveMQ**](apachenmsactivemq.html) client which communicates with ActiveMQ using its own native wire protocol and provides many [advanced features](activemq-advanced-features.html) beyond the standard NMS API. +* [**STOMP**](apachenmsstomp.html) which connects to any [STOMP Broker](http://stomp.codehaus.org/).  Also, when coupled with [StompConnect](http://stomp.codehaus.org/StompConnect), NMS can be used to communicate with pretty much any existing MOM provider! (Or at least those that support JMS which most MOM providers do). +* [**MSMQ**](apachenmsmsmq.html) is an implementation of NMS using Microsoft's MSMQ API. +* [**EMS**](apachenmsems.html) provider for talking to TIBCO's EMS message broker.  To use this, you will need to following TIBCO's licensing requirements to acquire the TIBCO client assembly DLL.  NMS does not ship with the TIBCO client assembly. +* [**WCF**](apachenmswcf.html) provides support of Windows Communications Framework. +* [**AMQP**](apachenmsamqp.html) is an implementation of NMS using the [Apache Qpid Messaging API](https://qpid.apache.org/components/messaging-api/index.html). AMQP 1.0 protocol support is provided by [Apache Qpid Proton](https://qpid.apache.org/proton/index.html). +* [**MQTT**](apachenmsmqtt.html) provider uses the publish-subscribe pattern that is a "light weight" messaging protocol for use on top of the [TCP/IP protocol](https://en.wikipedia.org/wiki/TCP/IP "TCP/IP").  +* **[XMS](apachenmsxms.html)** provider connects to the IBM WebSphere MQ Series broker. + + diff --git a/nms-simple-asynchronous-consumer-example.md b/nms-simple-asynchronous-consumer-example.md new file mode 100644 index 0000000..ffc7caa --- /dev/null +++ b/nms-simple-asynchronous-consumer-example.md @@ -0,0 +1,129 @@ +Apache ActiveMQ ™ -- NMS Simple Asynchronous Consumer Example + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Examples](nms-examples.html) > [NMS Simple Asynchronous Consumer Example](nms-simple-asynchronous-consumer-example.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +The sample shows how to create an NMS Consumer to consume messages asynchronously. + +/\* + \* Licensed to the Apache Software Foundation (ASF) under one or more + \* contributor license agreements. See the NOTICE file distributed with + \* this work for additional information regarding copyright ownership. + \* The ASF licenses this file to You under the Apache License, Version 2.0 + \* (the "License"); you may not use this file except in compliance with + \* the License. You may obtain a copy of the License at + \* + \* http://www.apache.org/licenses/LICENSE-2.0 + \* + \* Unless required by applicable law or agreed to in writing, software + \* distributed under the License is distributed on an "AS IS" BASIS, + \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + \* See the License for the specific language governing permissions and + \* limitations under the License. + */ + +using System; +using System.Threading; +using Apache.NMS; +using Apache.NMS.Util; + +namespace Apache.NMS.ActiveMQ.Test +{ +public class TestMain +{ + protected static AutoResetEvent semaphore = new AutoResetEvent(false); + protected static ITextMessage message = null; + protected static TimeSpan receiveTimeout = TimeSpan.FromSeconds(10); + + public static void Main(string\[\] args) + { + // Example connection strings: + // activemq:tcp://activemqhost:61616 + // stomp:tcp://activemqhost:61613 + // ems:tcp://tibcohost:7222 + // msmq://localhost + + Uri connecturi = new Uri("activemq:tcp://activemqhost:61616"); + + Console.WriteLine("About to connect to " + connecturi); + + // NOTE: ensure the nmsprovider-activemq.config file exists in the executable folder. + IConnectionFactory factory = new NMSConnectionFactory(connecturi); + + using(IConnection connection = factory.CreateConnection()) + using(ISession session = connection.CreateSession()) + { + // Examples for getting a destination: + // + // Hard coded destinations: + // IDestination destination = session.GetQueue("FOO.BAR"); + // Debug.Assert(destination is IQueue); + // IDestination destination = session.GetTopic("FOO.BAR"); + // Debug.Assert(destination is ITopic); + // + // Embedded destination type in the name: + // IDestination destination = SessionUtil.GetDestination(session, "queue://FOO.BAR"); + // Debug.Assert(destination is IQueue); + // IDestination destination = SessionUtil.GetDestination(session, "topic://FOO.BAR"); + // Debug.Assert(destination is ITopic); + // + // Defaults to queue if type is not specified: + // IDestination destination = SessionUtil.GetDestination(session, "FOO.BAR"); + // Debug.Assert(destination is IQueue); + // + // .NET 3.5 Supports Extension methods for a simplified syntax: + // IDestination destination = session.GetDestination("queue://FOO.BAR"); + // Debug.Assert(destination is IQueue); + // IDestination destination = session.GetDestination("topic://FOO.BAR"); + // Debug.Assert(destination is ITopic); + IDestination destination = SessionUtil.GetDestination(session, "queue://FOO.BAR"); + + Console.WriteLine("Using destination: " + destination); + + // Create a consumer and producer + using(IMessageConsumer consumer = session.CreateConsumer(destination)) + using(IMessageProducer producer = session.CreateProducer(destination)) + { + // Start the connection so that messages will be processed. + connection.Start(); + producer.DeliveryMode = MsgDeliveryMode.Persistent; + producer.RequestTimeout = receiveTimeout; + + consumer.Listener += new MessageListener(OnMessage); + + // Send a message + ITextMessage request = session.CreateTextMessage("Hello World!"); + request.NMSCorrelationID = "abc"; + request.Properties\["NMSXGroupID"\] = "cheese"; + request.Properties\["myHeader"\] = "Cheddar"; + + producer.Send(request); + + // Wait for the message + semaphore.WaitOne((int) receiveTimeout.TotalMilliseconds, true); + + if(message == null) + { + Console.WriteLine("No message received!"); + } + else + { + Console.WriteLine("Received message with ID: " + message.NMSMessageId); + Console.WriteLine("Received message with text: " + message.Text); + } + } + } + } + + protected static void OnMessage(IMessage receivedMsg) + { + message = receivedMsg as ITextMessage; + semaphore.Set(); + } +} +} + + diff --git a/nms-simple-synchornous-consumer-example.md b/nms-simple-synchornous-consumer-example.md new file mode 100644 index 0000000..bf77baa --- /dev/null +++ b/nms-simple-synchornous-consumer-example.md @@ -0,0 +1,114 @@ +Apache ActiveMQ ™ -- NMS Simple Synchornous Consumer Example + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS Examples](nms-examples.html) > [NMS Simple Synchornous Consumer Example](nms-simple-synchornous-consumer-example.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +This example shows how to create and use an NMS Consumer to consume messages synchronously. + +/\* + \* Licensed to the Apache Software Foundation (ASF) under one or more + \* contributor license agreements. See the NOTICE file distributed with + \* this work for additional information regarding copyright ownership. + \* The ASF licenses this file to You under the Apache License, Version 2.0 + \* (the "License"); you may not use this file except in compliance with + \* the License. You may obtain a copy of the License at + \* + \* http://www.apache.org/licenses/LICENSE-2.0 + \* + \* Unless required by applicable law or agreed to in writing, software + \* distributed under the License is distributed on an "AS IS" BASIS, + \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + \* See the License for the specific language governing permissions and + \* limitations under the License. + */ + +using System; +using Apache.NMS; +using Apache.NMS.Util; + +namespace Apache.NMS.ActiveMQ.Test +{ +public class TestMain +{ + public static void Main(string\[\] args) + { + // Example connection strings: + // activemq:tcp://activemqhost:61616 + // stomp:tcp://activemqhost:61613 + // ems:tcp://tibcohost:7222 + // msmq://localhost + + Uri connecturi = new Uri("activemq:tcp://activemqhost:61616"); + + Console.WriteLine("About to connect to " + connecturi); + + // NOTE: ensure the nmsprovider-activemq.config file exists in the executable folder. + IConnectionFactory factory = new NMSConnectionFactory(connecturi); + + using(IConnection connection = factory.CreateConnection()) + using(ISession session = connection.CreateSession()) + { + // Examples for getting a destination: + // + // Hard coded destinations: + // IDestination destination = session.GetQueue("FOO.BAR"); + // Debug.Assert(destination is IQueue); + // IDestination destination = session.GetTopic("FOO.BAR"); + // Debug.Assert(destination is ITopic); + // + // Embedded destination type in the name: + // IDestination destination = SessionUtil.GetDestination(session, "queue://FOO.BAR"); + // Debug.Assert(destination is IQueue); + // IDestination destination = SessionUtil.GetDestination(session, "topic://FOO.BAR"); + // Debug.Assert(destination is ITopic); + // + // Defaults to queue if type is not specified: + // IDestination destination = SessionUtil.GetDestination(session, "FOO.BAR"); + // Debug.Assert(destination is IQueue); + // + // .NET 3.5 Supports Extension methods for a simplified syntax: + // IDestination destination = session.GetDestination("queue://FOO.BAR"); + // Debug.Assert(destination is IQueue); + // IDestination destination = session.GetDestination("topic://FOO.BAR"); + // Debug.Assert(destination is ITopic); + + IDestination destination = SessionUtil.GetDestination(session, "queue://FOO.BAR"); + Console.WriteLine("Using destination: " + destination); + + // Create a consumer and producer + using(IMessageConsumer consumer = session.CreateConsumer(destination)) + using(IMessageProducer producer = session.CreateProducer(destination)) + { + // Start the connection so that messages will be processed. + connection.Start(); + producer.DeliveryMode = MsgDeliveryMode.Persistent; + + // Send a message + ITextMessage request = session.CreateTextMessage("Hello World!"); + request.NMSCorrelationID = "abc"; + request.Properties\["NMSXGroupID"\] = "cheese"; + request.Properties\["myHeader"\] = "Cheddar"; + + producer.Send(request); + + // Consume a message + ITextMessage message = consumer.Receive() as ITextMessage; + if(message == null) + { + Console.WriteLine("No message received!"); + } + else + { + Console.WriteLine("Received message with ID: " + message.NMSMessageId); + Console.WriteLine("Received message with text: " + message.Text); + } + } + } + } +} +} + + diff --git a/nms-uri-configuration.md b/nms-uri-configuration.md new file mode 100644 index 0000000..433edad --- /dev/null +++ b/nms-uri-configuration.md @@ -0,0 +1,52 @@ +Apache ActiveMQ ™ -- NMS URI Configuration + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Apache.NMS](apachenms.html) > [NMS URI Configuration](nms-uri-configuration.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Configuring NMS +--------------- + +When working with the generic NMS API NMSConnectionFactory class you must choose via the URI which NMS provider you actually wish to use. This page documents the uri syntax and available options for the NMS providers. + +### **Connection URI Parameters** + +#####  Example Configuration + +cf = new NMSConnectionFactory("activemq:tcp://localhost:61616"); + +### NMS Provider Options + +Click on the provider name to visit the URI configuration documentation for your chosen NMS provider. + +Option Name + +Description + +[activemq](activemq-uri-configuration.html) + +Use the NMS.ActiveMQ Provider to talk to an ActiveMQ Broker. + +[stomp](stomp-uri-configuration.html) + +Use the NMS.Stomp Provider to talk to an Stomp Broker ActivemMQ Broker supports the Stomp protocol natively. + +ems + +Use the NMS.EMS Provider to talk to a TIBCO Broker. + +msmq + +Use the NMS.MSMQ Provider to talk to a Microsoft Messaging (MSMQ) Broker. + +wcf + +Use the NMS.WCF Provider to support a Windows Communication Foundation (WCF) endpoint connection for connecting to a back-end broker. + +xms + +Use the NMS.XMS Provider to talk to an IBM MQSerios Broker. This provider is currently not implemented. + + diff --git a/nms.md b/nms.md new file mode 100644 index 0000000..e1be736 --- /dev/null +++ b/nms.md @@ -0,0 +1,46 @@ +Apache ActiveMQ ™ -- NMS + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [Overview](overview.html) > [NMS](nms.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Getting Started with NMS +------------------------ + +The NMS API provides your client with a common API model for working with Message Oriented Middleware, but to make use of the API you need to download one of the NMS Provider libraries. The NMS Providers libraries are what makes it possible for your code to connect to your Message Broker. Follow the links below to read more about the [NMS Provider](nms-providers.html) for your Message broker and [download](download.html) a release bundle. + +### NMS Providers + +An NMS Provider is a .NET Assembly that provides an implementation of the NMS API that provides connectivity with a particular Messaging Service or an implementation of a standard Messaging Protocol. Currently, the following providers are available: + +* [**ActiveMQ**](apachenmsactivemq.html) client which communicates with ActiveMQ using its own native wire protocol and provides many [advanced features](activemq-advanced-features.html) beyond the standard NMS API. +* [**STOMP**](apachenmsstomp.html) which connects to any [STOMP Broker](http://stomp.codehaus.org/).  Also, when coupled with [StompConnect](http://stomp.codehaus.org/StompConnect), NMS can be used to communicate with pretty much any existing MOM provider! (Or at least those that support JMS which most MOM providers do). +* [**MSMQ**](apachenmsmsmq.html) is an implementation of NMS using Microsoft's MSMQ API. +* [**EMS**](apachenmsems.html) provider for talking to TIBCO's EMS message broker.  To use this, you will need to following TIBCO's licensing requirements to acquire the TIBCO client assembly DLL.  NMS does not ship with the TIBCO client assembly. +* [**WCF**](apachenmswcf.html) provides support of Windows Communications Framework. +* [**AMQP**](apachenmsamqp.html) is an implementation of NMS using the [Apache Qpid Messaging API](https://qpid.apache.org/components/messaging-api/index.html). AMQP 1.0 protocol support is provided by [Apache Qpid Proton](https://qpid.apache.org/proton/index.html). +* [**MQTT**](apachenmsmqtt.html) provider uses the publish-subscribe pattern that is a "light weight" messaging protocol for use on top of the [TCP/IP protocol](https://en.wikipedia.org/wiki/TCP/IP "TCP/IP").  +* **[XMS](apachenmsxms.html)** provider connects to the IBM WebSphere MQ Series broker. + +Building the code +----------------- + +While there are binary distributions available for all the [NMS Providers](nms-providers.html) you sometimes might want to build the code from trunk in order to test out the latest changes or fixes. On Windows you can use Visual Studio to build the code. On Linux or OS X you can use [Mono](http://www.mono-project.com). + +The build uses [NAnt](http://nant.sourceforge.net/) which both work on .Net and Mono.  You will need to have NAnt 0.91-Alpha2 or later. + +For more help see the [Building NMS](http://activemq.apache.org/nms/building.html) guide. + +Alternatives to NMS +------------------- + +There are currently a few alternatives to using NMS and working with ActiveMQ in .NET applications however the [NMS ActiveMQ Provider](apachenmsactivemq.html) is very feature rich and we recommend it as your starting point for .NET ActiveMQ inter-op. + +* use the [pure C# Stomp client](http://stomp.codehaus.org/DotNet) to access ActiveMQ from .Net using a lightweight client. +* use the ActiveMQ Java client from C# and .Net using IKVM. [More information](http://dotnetjunkies.com/WebLog/csteen/archive/2004/08/20/22813.aspx). +* use the [ActiveMQ REST](http://activemq.apache.org/rest.html) API via HTTP +* use the [ActiveMQ C Integration](http://activemq.apache.org/c-integration.html) to reuse the C/C++ library. + + diff --git a/no-suitable-driver.md b/no-suitable-driver.md new file mode 100644 index 0000000..06106de --- /dev/null +++ b/no-suitable-driver.md @@ -0,0 +1,19 @@ +Apache ActiveMQ ™ -- No suitable driver + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [No suitable driver](no-suitable-driver.html) + + +### Symptoms + +I get an exception saying **No suitable driver** when initialising the JDBC driver. + +### Reason + +ActiveMQ tries to auto-detect the JDBC driver so that it can deduce the ultimate database's SQL dialect. Some JDBC drivers are not yet auto-recognised. Here's [how to configure the language adapater class to use or to provide us with details of your driver so we can add support for it to ActiveMQ](jdbc-support.html). + +### See + +* [JDBC Support](jdbc-support.html) +* [Persistence](persistence.html) +* [How to configure a new database](how-to-configure-a-new-database.html) + diff --git a/noclassdeffounderror-orgspringframeworkcoreioresource.md b/noclassdeffounderror-orgspringframeworkcoreioresource.md new file mode 100644 index 0000000..fe329ba --- /dev/null +++ b/noclassdeffounderror-orgspringframeworkcoreioresource.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- NoClassDefFoundError - org.springframework.core.io.Resource + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Exceptions](exceptions.html) > [NoClassDefFoundError - org.springframework.core.io.Resource](noclassdeffounderror-orgspringframeworkcoreioresource.html) + + +If you get an exception like this + +java.lang.NoClassDefFoundError - org/springframework/core/io/Resource + +### Cause + +You were probably trying to use the [XML Configuration](xml-configuration.html) mechanism, which uses Spring, but without having the Spring jar on your classpath. + +### Solution + +Add the Spring jar to your classpath. + diff --git a/notice.md b/notice.md new file mode 100644 index 0000000..8ac8cc1 --- /dev/null +++ b/notice.md @@ -0,0 +1,34 @@ + Legal Notice · ActiveMQ Artemis Documentation + +* [Introduction](./) +* [Configuration](configuration.html) +* [Connectors](connectors.html) +* [Destinations](destinations.html) +* [Authentication](authentication.html) +* [Authorization](authorization.html) +* [SSL](ssl.html) +* [Legal Notice](notice.html) + +* [Published with GitBook](https://www.gitbook.com) + +[Legal Notice](.) +================= + +Legal Notice +============ + +Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + +[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +results matching "" +=================== + +No results matching "" +====================== + +[](ssl.html) + +var gitbook = gitbook || \[\]; gitbook.push(function() { gitbook.page.hasChanged({"page":{"title":"Legal Notice","level":"1.8","depth":1,"previous":{"title":"SSL","level":"1.7","depth":1,"path":"ssl.md","ref":"ssl.md","articles":\[\]},"dir":"ltr"},"config":{"plugins":\[\],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":\["facebook","google","twitter","weibo","instapaper"\]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"github":"apache/activemq-artemis","theme":"default","githubHost":"https://github.com/","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"ActiveMQ Artemis Documentation","links":{"home":"http://activemq.apache.org/","issues":"http://activemq.apache.org/","contribute":"http://activemq.apache.org/contributing.html"},"gitbook":"3.x.x","description":"ActiveMQ Artemis Migration Guide"},"file":{"path":"notice.md","mtime":"2017-02-22T12:06:29.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-03-10T13:48:00.771Z"},"basePath":".","book":{"language":""}}); }); \ No newline at end of file diff --git a/object-message.md b/object-message.md new file mode 100644 index 0000000..9a325c0 --- /dev/null +++ b/object-message.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- Object Message + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Features](features.html) > [Message Features](message-features.html) > [Object Message](object-message.html) + + diff --git a/objectmessage.md b/objectmessage.md new file mode 100644 index 0000000..da23847 --- /dev/null +++ b/objectmessage.md @@ -0,0 +1,69 @@ +Apache ActiveMQ ™ -- ObjectMessage + +[Features](features.html) > [Message Features](message-features.html) > [ObjectMessage](objectmessage.html) + + +Although ObjectMessage usage is generally discouraged, as it introduces coupling of class paths between producers and consumers, ActiveMQ supports them as part of the JMS specification. + +Security +-------- + +ObjectMessage objects depend on Java serialization of marshal/unmarshal object payload. This process is generally considered unsafe as malicious payload can exploit the host system. That's why starting with versions **5.12.2** and **5.13.0**, ActiveMQ enforces users to explicitly whitelist packages that can be exchanged using ObjectMessages. + +If you need to exchange object messages, you need to add packages your applications are using. You can do that with by using `org.apache.activemq.SERIALIZABLE_PACKAGES` system property, interpreted by the broker and the activemq client library. You can add this system property to `ACTIVEMQ_OPTS` variable in `${ACTIVEMQ_HOME}/bin/env` script. + +For example: + +-Dorg.apache.activemq.SERIALIZABLE_PACKAGES=java.lang,javax.security,java.util,org.apache.activemq,org.fusesource.hawtbuf,com.thoughtworks.xstream.mapper,com.mycompany.myapp + +will add `com.mycompany.myapp` package to the list of trusted packages. Note that other packages listed here are enabled by default as they are necessary for the regular broker work. In case you want to shortcut this mechanism, you can allow all packages to be trusted by using `*` wildcard, like + +-Dorg.apache.activemq.SERIALIZABLE_PACKAGES=* + +### Clients + +On the client side, you need to have this same mechanism as malicious code can be deserialized on `ObjectMessage.getObject()` call, compromising your application's environment. You can use the same configuration mechanism on the broker and configure trusted classes using system properties. However, this is usually not convenient in the client applications, so in **5.12.2** and **5.13.1** we introduced additional configuration mechanism using `ActiveMQConnectionFactory`. There are two additional methods defined: + +* The `setTrustedPackages()` method allows you to set the list of trusted packages you want to be to unserialize, like + +ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); +factory.setTrustedPackages(new ArrayList(Arrays.asList("org.apache.activemq.test,org.apache.camel.test".split(",")))); + +* The `setTrustAllPackages()` allows you to turn off security check and trust all classes. It's useful for testing purposes. + +ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); +factory.setTrustAllPackages(true); + +You can set the same properties in Camel context like: + + + + + + org.apache.activemq.test + org.apache.camel.test + + + + + + + + + + +or + + + + + + + + + + + + +This configuration will override system properties if they are set. + diff --git a/old-links.md b/old-links.md new file mode 100644 index 0000000..1fc59b1 --- /dev/null +++ b/old-links.md @@ -0,0 +1,187 @@ +Apache ActiveMQ ™ -- Old Links + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Old Pages +--------- + +This section of the wiki represents old links which typically redirect or include newer pages to preserve URLs. + +* [activemq.dtd](activemqdtd.html "activemq.dtd") +* [ActiveSoap](activesoap.html "ActiveSoap") +* [ActiveSpace](activespace.html "ActiveSpace") +* [CVS](cvs.html "CVS") +* [LeftHeader](leftheader.html "LeftHeader") +* [New Features in 4.2](new-features-in-42.html "New Features in 4.2") +* [Point to Point with multiple Consumers](point-to-point-with-multiple-consumers.html "Point to Point with multiple Consumers") +* [polo page](polo-page.html "polo page") +* [Previous Versions](previous-versions.html "Previous Versions") +* [RightHeader](rightheader.html "RightHeader") +* [STP](stp.html "STP") + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/old-osgi-integration.md b/old-osgi-integration.md new file mode 100644 index 0000000..187f8be --- /dev/null +++ b/old-osgi-integration.md @@ -0,0 +1,166 @@ +Apache ActiveMQ ™ -- Old OSGi Integration + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Old OSGi Integration](old-osgi-integration.html) + + +**This article applies to versions of ActiveMQ prior to 5.4.0. If you use version 5.4.0 or newer proceed to the [following article](osgi-integration.html).** + +Introduction +============ + +All ActiveMQ modules are packaged as OSGi bundles and can be used in any OSGi container. This article will provide more details on how to use ActiveMQ in [Apache Karaf](http://felix.apache.org/site/apache-felix-karaf.html), small OSGi based runtime. Apache Karaf was previously know as _ServiceMix kernel_, so informations found here are applicable to [Apache ServiceMix Enterprise Service Bus](http://servicemix.apache.org/home.html) as well. + +ActiveMQ +======== + +ActiveMQ comes as a feature in ServiceMix (Karaf). So instead of installing all necessary bundles one by one, you can simply install it using a single command. But first of all, you need to setup ServiceMix features url. + +smx@root:/> features/addUrl mvn:org.apache.servicemix/apache-servicemix/4.0.0/xml/features + +Now you can install ActiveMQ like this + +smx@root:/> features/install activemq + +This command will install all necessary ActiveMQ bundles and if you type + +smx@root:/> osgi/list + +you should see something like this + +\[ 50\] \[Active \] \[ \] \[ 60\] geronimo-jta\_1.1\_spec (1.1.1) +\[ 51\] \[Active \] \[ \] \[ 60\] geronimo-j2ee-connector\_1.5\_spec (2.0.0) +\[ 52\] \[Active \] \[ \] \[ 60\] Apache ServiceMix Bundles: howl-1.0.1-1 (1.0.1.1_1) +\[ 53\] \[Active \] \[ \] \[ 60\] Geronimo TxManager :: Transaction (2.2.0.r634076) +\[ 54\] \[Active \] \[ \] \[ 60\] Spring Transaction (2.5.6) +\[ 55\] \[Active \] \[Started\] \[ 60\] Apache ServiceMix Transaction (1.0.0) +\[ 56\] \[Active \] \[ \] \[ 60\] Geronimo TxManager :: Connector (2.2.0.r634076) +\[ 57\] \[Active \] \[ \] \[ 60\] geronimo-jms\_1.1\_spec (1.1.1) +\[ 58\] \[Active \] \[ \] \[ 60\] Apache ServiceMix Bundles: jencks-2.1 (2.1.0.1) +\[ 59\] \[Active \] \[ \] \[ 60\] geronimo-j2ee-management\_1.1\_spec (1.0.1) +\[ 60\] \[Active \] \[ \] \[ 60\] Apache Commons Pool Bundle (1.4) +\[ 61\] \[Active \] \[ \] \[ 60\] xbean-spring (3.5) +\[ 62\] \[Active \] \[ \] \[ 60\] activemq-core (5.2.0) +\[ 63\] \[Active \] \[ \] \[ 60\] activemq-ra (5.2.0) +\[ 64\] \[Active \] \[ \] \[ 60\] activemq-console (5.2.0) +\[ 65\] \[Active \] \[ \] \[ 60\] activemq-pool (5.2.0) +\[ 66\] \[Active \] \[Started\] \[ 60\] Apache ServiceMix Features :: ActiveMQ Commands (4.0.0) + +Once installed, this feature offers a special set of commands which enables you easily use the broker. + +This feature comes pre-installed with the ServiceMix ESB so previous steps are not necessary. + +The following example shows how to create and destroy the broker using the `create-broker` and `destroy-broker` commands. + +smx@root:/> activemq/create-broker +Creating file: /Users/dejanb/workspace/apache-servicemix-kernel-1.1.0/deploy/localhost-broker.xml + +Default ActiveMQ Broker (localhost) configuration file created at: /Users/dejanb/workspace/apache-servicemix-kernel-1.1.0/deploy/localhost-broker.xml +Please review the configuration and modify to suite your needs. + +smx@root:/> activemq/destroy-broker + +Default ActiveMQ Broker (localhost) configuration file created at: /Users/dejanb/workspace/apache-servicemix-kernel-1.1.0/deploy/localhost-broker.xml removed. + +For more information on ActiveMQ feature take a look at the [ServiceMix ActiveMQ integration guide](http://servicemix.apache.org/SMX4/activemq-integration.html) + +Web console +=========== + +[Web console](web-console.html) is included in ActiveMQ distribution and you'll probably want to have it to monitor your broker. First of all you'll have to install the `web` feature, so that you have a web container ready to deploy our web application. To do that you should first add the ServiceMix features url, like we did above (if you didn't already). Now, you can just run + +smx@root:/> features/install web + +to grab all necessary bundles. If you type + +smx@root:/> osgi/list + +you'll see all installed bundles (such as) + +\[ 43\] \[Active \] \[ \] \[ 60\] Apache ServiceMix Bundles: jetty-6.1.14 (6.1.14.1) +\[ 44\] \[Active \] \[ \] \[ 60\] OPS4J Pax Web - Jsp Support (0.5.2) +\[ 45\] \[Active \] \[ \] \[ 60\] OPS4J Pax Web - Web Container (0.5.2) +\[ 46\] \[Active \] \[ \] \[ 60\] OPS4J Pax Web Extender - WAR (0.5.0) +\[ 47\] \[Active \] \[ \] \[ 60\] OPS4J Pax Web Extender - Whiteboard (0.5.0) +\[ 48\] \[Active \] \[ \] \[ 60\] OPS4J Pax Url - war:, war-i: (0.3.3) +\[ 49\] \[Active \] \[Started\] \[ 60\] Apache ServiceMix WAR Deployer (4.0.0) + +This feature comes pre-installed with the ServiceMix ESB so previous steps are not necessary. + +The important thing is that we need to use proper versions of Pax web bundles to make all this work, and those are: + +* pax-web-bundle version 0.6.0 +* pax-web-jsp version 0.6.0 +* pax-web-ex-war version 0.5.1 +* pax-web-ex-whiteboard version 0.5.1 + +So if you have older bundles, like it is the case in our example, you'll need to unistall them and install new ones. To uninstall old bundles, simply look at their id and execute + +smx@root:/> osgi/uninstall \[id\] + +In this example it would be + +smx@root:/> osgi/uninstall 44 +smx@root:/> osgi/uninstall 45 +smx@root:/> osgi/uninstall 46 +smx@root:/> osgi/uninstall 47 + +Now install new ones + +smx@root:/> osgi/install mvn:org.ops4j.pax.web/pax-web-bundle/0.6.0 +smx@root:/> osgi/install mvn:org.ops4j.pax.web/pax-web-jsp/0.6.0 +smx@root:/> osgi/install mvn:org.ops4j.pax.web-extender/pax-web-ex-war/0.5.1 +smx@root:/> osgi/install mvn:org.ops4j.pax.web-extender/pax-web-ex-whiteboard/0.5.1 + +After successful installation, you should start your newly added bundles. You can do that by executing + +smx@root:/> osgi/start \[id\] + +It's best to restart your container at this point and afterwards we're finally ready to deploy our war. To do that we'll use the Pax Web War Extender. The following example will use the latest `5.3-SNAPSHOT` build and deploy it in the OSGi runtime + +smx@root:/> osgi/install war:mvn:org.apache.activemq/activemq-web-console/5.3-SNAPSHOT/war?Webapp-Context=activemqweb + +You have to use the latest 5.3-SNAPSHOT web console, since this doesn't work right with previous versions. + +Also, if you have problems installing the war with the previous method, download it manually from [https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/activemq-web-console/5.3-SNAPSHOT/](https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/activemq-web-console/5.3-SNAPSHOT/) and install using + +smx@root:/> osgi/install war:file:///path\_to\_the_war/activemq-web-console-5.3-SNAPSHOT.war?Webapp-Context=activemqweb + +Unfortunately the command + +osgi/install \ +war:mvn:https://repository.apache.org/content/repositories/snapshots@snapshots!org.apache.activemq/activemq-web-console/5.3-SNAPSHOT/war?Webapp-Context=activemqweb + +does not work with pax web war extender 0.5.1, but you try it if you're using the newer one. + +If you execute + +smx@root:/> osgi/list + +you'll see the newly added bundle here. + +\[ 84\] \[Resolved \] \[ \] \[ 60\] mvn\_org.apache.activemq\_activemq-web-console\_5.3-SNAPSHOT\_war (0) + +It's time t start it now + +smx@root:/> osgi/start 84 + +Use the id of your bundle + +The important thing to note here is that by default, web console will start an embedded broker and monitor it. So if you have a broker already running it will fail to start. + +Note that we have used `activemqweb` as a `WebApp-Context` while deploying the war, so the console will be available at [http://localhost:8080/activemqweb](http://localhost:8080/activemqweb). Visit this URL and administer your embedded broker. + +There a big chance that you don't want to monitor an embedded broker, but the broker you have started separately (in the OSGi runtime or elsewhere). To configure your web console to do that, you have to do the following. First, exit your OSGi runtime. Now you can edit the `etc/system.properties` file and add some configuration details. The following configuration snippet + +webconsole.type=properties +webconsole.jms.url=tcp://localhost:61616 +webconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root +webconsole.jmx.user=karaf +webconsole.jmx.password=karaf + +should work fine with default broker started in the Karaf (ServiceMix). Adapt it to your specific needs. + +Now if you run the runtime (and the console bundle), you'll notice that the console will not start the broker and will try to use one defined with the system properties. + +Visit [http://localhost:8080/activemqweb](http://localhost:8080/activemqweb) and enjoy. + diff --git a/onmessage-method-of-messagelistener-is-never-called.md b/onmessage-method-of-messagelistener-is-never-called.md new file mode 100644 index 0000000..47d05f0 --- /dev/null +++ b/onmessage-method-of-messagelistener-is-never-called.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- onMessage method of MessageListener is never called + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [onMessage method of MessageListener is never called](onmessage-method-of-messagelistener-is-never-called.html) + + +See [I am not receiving any messages, what is wrong](i-am-not-receiving-any-messages-what-is-wrong.html) + diff --git a/openssl-support.md b/openssl-support.md new file mode 100644 index 0000000..70be1ea --- /dev/null +++ b/openssl-support.md @@ -0,0 +1,10 @@ +Apache ActiveMQ ™ -- OpenSSL Support + +[Index](index.html) > [Community](community.html) > [FAQ](faq.html) > [Building FAQs](building-faqs.html) > [OpenSSL Support](openssl-support.html) + +This section covers building the ActiveMQ-CPP Library with support for SSL using the OpenSSL library + +* [Enable OpenSSL support with autotools](enable-openssl-support-with-autotools.html) +* [How do I prevent autoconf from enabling OpenSSL support](how-do-i-prevent-autoconf-from-enabling-openssl-support.html) +* [How to enable SSL support on Windows](how-to-enable-ssl-support-on-windows.html) + diff --git a/openwire-c-client.md b/openwire-c-client.md new file mode 100644 index 0000000..36a09f9 --- /dev/null +++ b/openwire-c-client.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- OpenWire C Client + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [C Integration](c-integration.html) > [OpenWire C Client](openwire-c-client.html) + + +This is the C library which is based on the [OpenWire](openwire.html) protocol. + +You can browse the code here + +[http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/](http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/) + +e.g. here's an example of it in use... + +[http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/src/examples/main.c](http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/src/examples/main.c) + diff --git a/openwire-cpp-client.md b/openwire-cpp-client.md new file mode 100644 index 0000000..da76900 --- /dev/null +++ b/openwire-cpp-client.md @@ -0,0 +1,113 @@ +Apache ActiveMQ ™ -- OpenWire CPP Client + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [ActiveMQ C++ Clients](activemq-c-clients.html) > [OpenWire CPP Client](openwire-cpp-client.html) + + +OpenWire C++ Client +=================== + +Goals +----- + +We want to be able to provide a C++ API to ActiveMQ that retains rough feature-parity with the Java API while at the same time allowing for more flexibility in application design by opening up lower levels of the event system. We have come up with an API / programming model that maximizes the ways in which the messaging library can adapt to the application using it, not the other way around. Specifically, our goals are: + +* Make no assumption about the threading constraints of the containing application (specifically, allow asynchronous receives within a single-threaded application) +* Make no assumption about the event loop characteristics of the containing application +* Make no assumption about libraries needed – i.e. dont enforce use of a particular library or smart pointer implementation +* Offer tradeoffs in flexibility versus application complexity +* Provide distinctly C++-friendly APIs for asynchronous event notification +* Provide pluggable data transports +* Maximize portability + +It makes no assumptions about the threading or event loop model of the containing application, and so puts no restrictions on C++ program design as inherent costs of doing asynchronous messaging. As a result of this flexible and pluggable design, this library is particularly easy to implement as a native layer to a high-level scripting language interface to ActiveMQ since it makes no assumptions about the threading capabilities of the language. + +When we use the term programming model, we are referring to the handling of the most complex part of asynchronous messaging APIs – message delivery to the application. + +JMS / Java programming model +---------------------------- + +JMS 1.1 provides two ways for an application to receive messages. One is by a blocking receive in the MsgConsumer class' receive() function. This will suspend the calling thread until a message is received. The other method is through callbacks in subclasses of MessageListener. The OnMessage function is called when a message is received on the topic or queue that the MessageListener was created for. + +To sum up – The JMS model imposes a threading structure on the application developer. Either they must use multiple threads each doing synchronous receive() calls, or rely on a separate thread to deliver messages to them. A single-threaded model is impossible. + +Where whats best for C++ and Java APIs diverge +---------------------------------------------- + +The JMS API enforces a particular model of threading on an application. This is fine and well-accepted in the Java programming space, since Java is designed for it to be easiest to multiplex communications with threads. Threads are very easy and well-supported in Java. + +However, in C++ the common practice is different. Most C++ programs that handle network communication in an event-driven fashion use an event loop. This is a thread that waits for activity on a number of file descriptors, relying on the OS to wake it up when one has data. File descriptors are the lingua franca of event-driven C and C++ programs, since the OS makes it easy to use them for any kind of event, as well as providing rich functionality to wait on multiple file descriptors at once. In C and C+, threads are error-prone (due to no concurrency features in the language) and often unnecessary when a flexible enough event loop is used. The upshot of this is that the most optimal C\+ API for an asynchronous messaging system is one that works within this common practice of C++ programs, rather than imposing arbitrary restrictions. In particular, even background threads that share no data or code with the application can affect it since the interaction of multiple threads and UNIX signals is not well defined. + +In conclusion, C++ developers expect a level of openness and flexibility when using libraries that can deliver events, so that they can integrate multiple sources of events together without resorting to multithreading. Most libraries that do this properly expose the underlying file descriptor of the network connection directly to the application – X11 does this for example – and we will start there with the actual design specification. + +C++s lower level nature presents many more inherent design decisions than does Java. In particular, one of the largest issues is that there is no standard smart pointer implementation. Boost is popular, but every enterprise has its own, and every developer has personal preference. It is for this reason that this library does not propose to use any particular smart pointer implementation, as it enforces a design decision on enterprises that have their own requirements in that space. Through careful use of references and API semantics we can make memory ownership explicit enough to avoid the pitfalls. As it is, the API policy is that all returned pointers are the application's responsibility to free. This should make it sufficiently unambiguous. + +We are proposing a three-tiered approach to provide the tradeoff between application simplicity and flexibility. The lowest level will do the least and allow the widest range of applications to use it, the next level will be much more functional, but with some design tradeoffs, and the highest we will leave up to enterprise-specific needs. + +Proposed C++ API Design +----------------------- + +The design that we are proposing consists of two layers. The core library owns no threads and acts simply as a filter – taking data from the broker in and dispatching messages if necessary. This core layer of the library is exposed to allow those C++ developers who do not want any threads other than their own managing events, and/or want to use non-TCP methods of communication with the broker. The socket to the ActiveMQ broker is to be exposed to the application by the transport layer, and data received on it is to be passed opaquely to the core library by the application. This allows for asynchronous messaging with a single-threaded program – a hard requirement for some developers. +There are shortcomings to this approach. If the application blocks on some other activity and data from the broker is never processed, the TCP socket will back up and messages will build up on the broker side. Also, the single-threaded nature of the library means that the application must do all the I/O work itself, and implement a separate thread in order to make meaningful use of the blocking receive. + +We can build a second layer (we call it BrokerSession) on top of the first that provides these features – still integrating into the applications existing event structure, but at the price of a background thread. The background thread handles data from ActiveMQ and passes it to the core library, putting any resulting messages into an internal message buffer (or potentially multiple – see details below). With this the library can provide a much simpler and more direct messaging interface to the application, since it handles broker communication itself in the same way that an application using the core library would. + +The second layer simply invokes an interior instance of the first to perform any ActiveMQ-related messaging tasks – no messaging-system-specific code is outside of the core lower level library. As a result, the second layer is a thin one – just the thread, interaction with the transport abstraction layer and functionality passthroughs to the core library. + +There is a third level – there is a need for higher-level, application framework libraries for messaging, that might take all control flow from the user and provide the simplest possible environment. The lower levels are designed to allow the most flexibility in the design and requirements of the third level, which is most often enterprise-specific and lies outside the scope of this document. An example of a library at this level would be one that provides a framework that makes it easy to write a completely callback-based application. Since this would require that an application be designed for it from the start, it is at this level that design decisions such as selecting a smart pointer implementation would be appropriate. It is likely that for a particular enterprise, most applications would use something like this, which would be implemented as a thin wrapper over the BrokerSession library. + +Transport layer abstraction overview +------------------------------------ + +Similar to ActiveMQ itself, we provide a transport layer abstraction that manages connection and I/O on file descriptors. Initially only TCP socket support will be provided, but there is value in other implementations – in-process pipe, playing back from a file, UDP, etc. This layer provides logical connect, send, recv, and close operations. Transports are initialized with URIs in the same fashion that other ActiveMQ transports are. + +Core library overview +--------------------- + +The core layer of the library provides a very simple interface – data in, messages out. + +![](openwire-cpp-client.data/Core%20Library%20Usage.JPG) + +When the returned file descriptor from the transport layer's connect() call reads active in the application's event loop, the application reads available data and passes that to the library. The library itself has an internal buffer that will deliver a message when one has been fully accumulated. The purpose of this disconnect is that the core library **will not make any blocking I/O calls – or any system calls at all for that matter**. This satisfies the portability goal, as well as ensuring that a single-threaded application can use this library without the potential for losing control of its thread. + +The end-to-end lifetime of an outgoing message using the core library is: + +* User calls "send" or "subscribe" etc. +* The core library constructs the corresponding OpenWire command object +* The core library marshals this object into a buffer and returns that buffer to the user + +The end-to-end lifetime of an incoming message using the core library is: + +* The user gets data from ActiveMQ, possibly by using the included transport library +* This data is passed to the core library, which does one of two things: + +* if it isn't already receiving a message, it looks at the first few bytes and notes how large the incoming message is by examining OpenWire headers. +* if it is, it adds the incoming buffer to an internal message buffer, and if this addition completes the incoming message it deserializes it into an OpenWire command object, and the appropriate action is taken. + +Notable here is the behavior of message receives - the core library is able to receive messages in piecemeal, and only deliver a message when it has been completely received. + +Publication and subscription work in the conventional ways, except that they return data to be sent by the transport layer instead of directly sending it. This allows a higher level to determine exactly how the data is sent – for example, it allows use of non-blocking I/O. + +The application is given two choices for message receipt. The library does this by means of one or more internal "message consumer" objects (similar to JMS MessageConsumer objects). There are two kinds – one for synchronous receives, and one for asynchronous. The synchronous consumer(BlockingMessageConsumer) offers a blocking receive that multiple threads can wait on for messages. The asynchronous message consumer uses an event-based interface, notifying the application that a message is ready via a byte written down a pipe. The NonBlockingMessageConsumer class can dispense its event file descriptor as well as received messages – the asynchronous receive() call is nonblocking and returns NULL if no message is ready. + +BrokerSession library overview +------------------------------ + +The higher level library's interface offers a much simpler and more direct API to the developer than the first layer, as a result of having an internal thread to process data from the ActiveMQ broker. + +![](openwire-cpp-client.data/BrokerSession%20Library%20Usage.JPG) + +Since the BrokerSession library contains a copy of the core library, ActiveMQ-specific code is kept encapsulated there. The code in the BrokerSession library does the legwork of managing the core library and broker communication for the application. The use of a background thread to do this and deliver incoming messages to the message consumers greatly simplifies application development. + +As in the core library, message dispatch is done explicitly by the application, not from the background thread. Neither library stores message callbacks – it is not required that they be used. This ensures that only threads that are known by the calling application execute application code – the result being that thread-safe programming is not enforced or required (satisfying the goal of not mandating a particular thread model). It is not unexpected that there will commonly be enterprise-specific code layered in front of this to do more customized message delivery (potentially using callbacks, for example). + +This library allows both a JMS-like programming model of multiple threads waiting on message queues as well as an event-driven, select-loop model that is more common in C++ programs. This makes it adaptable to the varying requirements of new and existing C++ applications that have design constraints imposed by things other than the messaging library. + +Logging and error handling +-------------------------- + +To fit with the goals of not enforcing particular dependencies and allowing easy enterprise integration, the libraries have a callback-based model for logging. The application registers a logger with the library to be called when log events occur - this logger has function callbacks for error logging, debug logging, etc. This allows the easiest integration with existing logging systems, as these callbacks can then call directly into the native logging environment (such as syslog) or log to a file, or anything else that is appropriate in the particular application. + +Error handling is slightly different. The native C++ way of doing error handling is through exceptions. Exceptions work very well for something like the core library, so when an error occurs it will throw an instance of ActiveMQ::Exception to the caller. In the BrokerSession library, however, such exceptions may be caught by the background thread. In this case, that thread will call an application callback to pass along the exception. This ensures that all errors reach the application and can be dealt with appropriately. + +The default callback for exception handling simply print the relevant message to standard error. + diff --git a/openwire-manual.md b/openwire-manual.md new file mode 100644 index 0000000..dac4f94 --- /dev/null +++ b/openwire-manual.md @@ -0,0 +1,236 @@ + + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +Apollo 1.7.1 OpenWire Protocol Manual +===================================== + +* [Using the OpenWire Protocol](#Using_the_OpenWire_Protocol) +* * [OpenWire Protocol Options](#OpenWire_Protocol_Options) + * [Protocol Detection (different that open-wire vesion detection)](#Protocol_Detection__different_that_open-wire_vesion_detection_) + * [Client Libraries](#Client_Libraries) + * [Broker features available using the OpenWire protocol](#Broker_features_available_using_the_OpenWire_protocol) + * * [Destination Types](#Destination_Types) + * [Wildcard Subscriptions](#Wildcard_Subscriptions) + * [Composite Destinations](#Composite_Destinations) + * [Exclusive Consumer](#Exclusive_Consumer) + * [Temporary Destinations](#Temporary_Destinations) + * [Message Selectors](#Message_Selectors) + * [Browing Subscription](#Browing_Subscription) + * [Transactions](#Transactions) + * [OpenWire protocol details](#OpenWire_protocol_details) + * [OpenWire features to be documented](#OpenWire_features_to_be_documented) + * [Unsupported OpenWire features:](#Unsupported_OpenWire_features:) + +Using the OpenWire Protocol +--------------------------- + +Clients can connect to Apollo using the [OpenWire](http://activemq.apache.org/openwire.html) protocol. OpenWire is a binary, on-the-wire protocol used natively by [ActiveMQ](http://activemq.apache.org/). It was designed to be a fast, full-featured, and JMS-compliant protocol for message brokers. Currently there are native client libraries for Java, C, C#, and C++. Further OpenWire support can be built by implementing language-specific code generators, however, for most cross-langauge needs, the [STOMP](http://stomp.github.com) protocol is best. + +OpenWire was designed to be extended but yet backward compatible with older versions. When a client connects to the broker, the protocol version that's used is negotiated based on what each can support. + +### OpenWire Protocol Options + +You can use the `openwire` configuration element within the `connector` element in the `apollo.xml` configuration file to change the default settings used in the OpenWire protocol implementation. + + + + + + + +The `openwire` element supports the following configuration attributes: + +* `buffer_size` : How much each producer or subscription will buffer between the client and the broker. Defaults to `640k`. +* `stack_trace` : If there is an exception on the broker, it will be sent back to the client. Default is `true` +* `cache` : Used to reduce marshalling efforts within the broker. Cache data structures such as openwire commands, destination objects, subscription info, etc. Default is `true` +* `cache_size` : Number of internal data structures to cache. Default is `1024` +* `tight_endcoding` : Optimize the encoding to be effecient over the wire at the expense of greater CPU usage to marshal/unmarshal. Default is `true` +* `tcp_no_delay` : Decide whether to use [Nagle's Algorithm](http://en.wikipedia.org/wiki/Nagle's_algorithm) which improves TCP/IP effeciency for small packets. Set to true to disable this algorithm. Default is `false` (which means nodelay is off, and it uses Nagle's algorithm) +* `max_inactivity_duration` : Max inactivity period, in milliseconds, at which point the socket would be considered dead. Used by the heartbeat functionality. If there is a period of inactivity greater than this period, the socket will be closed. Default is `30000` +* `max_inactivity_duration_initial_delay` : Amount of time to delay between determining the socket should be closed and actually closing it. Default is `30000` +* `max_frame_size` : Size in bytes of the largest frame that can be sent to the broker. Default is `100MB` +* `add_jmsxuserid` : If set to `false`, disables setting the JMSXUserID header on received messages. Default is `true`. + +An example of configuring the OpenWire protocol + + + + + + + +### Protocol Detection (different that open-wire vesion detection) + +Apollo was designed to be inherently multi-protocol. Although STOMP was the first protocol to be implemented in Apollo, the core of the broker was not built around STOMP or any other specific protocol. Apollo, in fact by default, has the ability to detect the protocol being used on the wire without further configuration. This makes the configuration easier on the broker, and means you only need to open one connector that can handle multiple different types of wire protocols. If you would like to specify a certain connector for OpenWire and another connector for a different protocol, you can explicitly configure the connector to be an OpenWire connector: + + + + + +You can also support a limited subset of protocols: + + + + + + + +Or you can leave it open to any of the supported protocols (default), and the correct protocol will be used depending on what the client is using. You do this by not specifying any protocol settings. + +Note, this type of on-the-wire protocol detection is different that the OpenWire version detection briefly mentioned above. After the broker determines a client is using an OpenWire protocol, the version is negotiated separately from how the broker determines a protocol. + +### Client Libraries + +To connect to Apollo using the OpenWire protocol, we recommend you use the latest [ActiveMQ](http://activemq.apache.org/) 5.x client libraries. + +* [C](http://activemq.apache.org/c-integration.html) +* [C++](http://activemq.apache.org/activemq-c-clients.html) +* [C# and .NET](http://activemq.apache.org/nms/) + +To configure specific behaviors for your connection, see the [Connection reference](http://activemq.apache.org/connection-configuration-uri.html) for ActiveMQ 5.x + +### Broker features available using the OpenWire protocol + +#### Destination Types + +* Queues (for point-to-point messaging) - A JMS Queue implements load balancer semantics. A single message will be received by exactly one consumer. If there are no consumers available at the time the message is sent it will be kept until a consumer is available that can process the message. If a consumer receives a message and does not acknowledge it before closing then the message will be redelivered to another consumer. A queue can have many consumers with messages load balanced across the available consumers. + +* Topics (publish-subscribe) - In JMS a Topic implements publish and subscribe semantics. When you publish a message it goes to all the subscribers who are interested - so zero to many subscribers will receive a copy of the message. Only subscribers who had an active subscription at the time the broker receives the message will get a copy of the message. + +* Durable Subscriptions (persistent publish-subscribe) - Durable subscriptions allow you to achieve semantics similar to a queue using topics. Specifically, this allows a subscription to subscribe and disconnect without worrying about losing messages. If the client disconnects, the messages that arrive at the topic while the subscription is inactive will be queued up for consumption when the subscription becomes reactivated. + + +#### Wildcard Subscriptions + +Wild cards can be used in destination names when subscribing as a consumer. This allows you to subscribe to multiple destinations or hierarchy of destinations. + +* `.` is used to separate names in a path +* `*` is used to match any name in a path +* `>` is used to recursively match path names + +Unlike some of the other protocols Apollo supports, for the OpenWire implementation, regex wildcards are not supported. Also note that for other protocols, the wildcard for recursive destinations is indeed “>" and not “**". + +#### Composite Destinations + +You can send to multiple destinations with one single operation. When you create a destination to which your producer will be sending, you can specify multiple destinations with the “," (comma) destination separator. For example, if you want to send a single message to two queues: + + Destination destination = session.createQueue("test-queue,test-queue-foo") + MessageProducer producer = session.createProducer(destination); + TextMessage message = session.createTextMessage("Message #" + i); + producer.send(message); + +Note both destinations named will be considered queues. However, you can also include a topic destination in your list. You'll want to use the `topic://` prefix if mixing destination types (or `queue://` for queues): + + Destination destination = session.createQueue("test-queue,test-queue-foo,topic://test-topic-foo") + +Similarly you can consume from multiple destinations as well. When you set up your consumer's destination, just follow the same rules as above. + +#### Exclusive Consumer + +To do exclusive consumer on a queue, you will specify the settings on the queue itself: + + "QUEUE.NAME?consumer.exclusive=true" + +The first consumer to subscribe to the queue will be the exclusive consumer. Any other consumers that subscribe to the queue will not receive messages as long as the exclusive consumer is alive and consuming. If the exclusive consumer goes away, the next in line to subscribe will be selected as the exclusive consumer. In general, the order that's calculcated for who should be the next exclusive consumer is based on when they subscribe. The first to subscribe wins and the others fall in line based on when they subscribed. + +#### Temporary Destinations + +Temporary destinations are bound to the connection that created them; therefore, when the connection goes away, the temporary destination will also go away. Using temporary is one way to implement a request-reply messaging pattern with Apollo. The steps for using temporary queues or topics for request-reply are as follows: + +Create a temporary destination + + Destination replyDest = session.createTemporaryQueue(); + +Create a consumer for that destination + + MessageConsumer replyConsumer = session.createConsumer(replyDest); + +Create a message to send as a request and set the JMSReplyTo header to the temp destination + + message.setJMSReplyTo(replyDest); + +Send the message. If the receiver of the message is aware that it's participating in a request-reply scenario, it should place the response into the destination specified in the JMSReplyTo header. + +#### Message Selectors + +You can use message selectors to create subscriptions to destinations that are filtered based on some headers or properties in the message. You define a selector as a String that is similar to the SQL92 syntax. + +For example, to define a consumer on a destination that is only interested in messages that have a property named “intended” and a value of “me”, pass a selector as the second argument to the [session.createConsumer()](http://docs.oracle.com/javaee/6/api/javax/jms/Session.html) method: + + session.createConsumer(destination, "intended = 'me'"); + +Now messages produced with a property/value combination specified in the selector will be delivered to the consumer. + +Here's an example of producing the message: + + + MessageProducer producer = session.createProducer(destination); + + for (int i = 0; i < NUM_MESSAGES_TO_SEND; i++) { + TextMessage message = session.createTextMessage("Message #" + i); + LOG.info("Sending message #" + i); + producer.send(message); + Thread.sleep(DELAY); + } + + +#### Browing Subscription + +With a [QueueBrowser](http://activemq.apache.org/maven/5.6.0/activemq-core/apidocs/org/apache/activemq/ActiveMQQueueBrowser.html), you can browse a queue's messages without actually consuming them. This can be useful for debugging, adding a user-interface layer, or audit or logging. + +To establish a browsing subscription to a queue, use the JMS API: + + QueueBrowser browser = session.createBrowser((Queue) destination); + +Then you can enumerate the messages and examine them with the following idiom: + + Enumeration enumeration = browser.getEnumeration(); + + while (enumeration.hasMoreElements()) { + TextMessage message = (TextMessage) enumeration.nextElement(); + System.out.println("Browsing: " + message); + } + +When you browse a queue, only a snapshot of the queue will be available. If more messages are enqueued, the browsing session will not automatically see those. + +Note, you cannot establish browsing sessions to a durable topic with OpenWire/JMS. + +#### Transactions + +Transactions can be done on both the consumer and the producer for any destination. When you create a session, pass `true` to the first parameter: + + Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); + +You can `commit` or `rollback` a transaction by calling `session.commit()` or `session.rollback()` respectively. On the broker side, each command that you take before calling `session.commit()` (like sending a message) gets batched up in a TransactionContext. When commit is made, all of the commands are executed and a Response is sent to the client (i.e., calling commit is a synchronous call. Before calling commit, all other commands are asyc). + +### OpenWire protocol details + +This section explains a little more about what's happening on the wire. The STOMP protocol, as it was designed, is easy to understand and monitor since it's a text-based protocol. OpenWire, however, is binary, and understanding the interactions that happen isn't as easy. Some clues might be helpful. + +All OpenWire commands are implemented as “command” objects following the Gang of Four [Command Pattern](http://en.wikipedia.org/wiki/Command_pattern). The structure of the objects are described [at the ActiveMQ website](http://activemq.apache.org/openwire-version-2-specification.html), but what about the interactions? + +Establishing a connection to the broker: A connection is established between the client and the broker with the client creating a new ActiveMQConnection (most likely using a connection factory of some sort). When a new “connection” is created, the underlying transport mechanisms send a WireFormatInfo command to the broker. This command describes what version and configurations of the OpenWire protocol the client wishes to use. For example, some of the configuration options are the ones listed above that can also be configured on the broker. + +When the TCP connection is handled on the broker side, it sends a WireFormatInfo to the client. The purpose of exchanging these WireFormatInfo commands is to be able to negotiate what settings to use as each the client and the server has their own preferred settings. The lowest protocol version between the two is used. When the broker receives the client's WireFormatInfo command, it negotiates the differences on its side and then sends a BrokerInfo command. Conversely on the client, when it receives the broker's WireFormatInfo, it negotiates it and sends a ConnectionInfo command. When the broker receives a ConnectionInfo command, it will either ack it with a Response command, or use security settings established globally for the broker or for a given virtual host to determine whether connections are allowed. If a connection is not allowed to the broker or to to virtual host, the broker will kill the connection. + +### OpenWire features to be documented + +* Flow Control +* Persistent Messaging +* Message Expiration + +### Unsupported OpenWire features: + +You will get bad/undefined behaviour if you try to use any of the following OpenWire features: + +* XA transactions +* [Message Groups using JMSXGroupID](http://activemq.apache.org/message-groups.html) +* [Subscription recovery/retroactive consumer](http://activemq.apache.org/retroactive-consumer.html) +* [Exclusive Consumer with Priority](http://activemq.apache.org/exclusive-consumer.html) +* [Virtual Destinations](http://activemq.apache.org/virtual-destinations.html) + +You can use Durable Subscriptions and/or [Mirrored Queues](user-manual.html#Mirrored_Queues) to get the same/similar behaviour that [Virtual Destinations](http://activemq.apache.org/virtual-destinations.html) provide. \ No newline at end of file diff --git a/openwire-support.md b/openwire-support.md new file mode 100644 index 0000000..09bc82a --- /dev/null +++ b/openwire-support.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- OpenWire Support + +[Index](index.html) > [Site](site.html) > [Navigation](navigation.html) > [OpenWire Support](openwire-support.html) + +ActiveMQ-CPP OpenWire Support +----------------------------- + +[OpenWire](http://activemq.apache.org/openwire.html) is the native protocol used by the [ActiveMQ](http://activemq.apache.org/). As of version 2.0, ActiveMQ-CPP supports the OpenWire protocol, with a few exceptions. + +* ObjectMessage - We cannot reconstruct the object(s) contained in an ObjectMessage in C++, so if your application is subscribed to a queue or topic that has an ObjectMessage sent to it, you will receive the message but will not be able to extract an Object from it. + diff --git a/openwire-version-2-specification.md b/openwire-version-2-specification.md new file mode 100644 index 0000000..d12df7d --- /dev/null +++ b/openwire-version-2-specification.md @@ -0,0 +1,561 @@ +Apache ActiveMQ ™ -- OpenWire Version 2 Specification + +[Connectivity](connectivity.html) > [Protocols](protocols.html) > [OpenWire](openwire.html) > [OpenWire Version 2 Specification](openwire-version-2-specification.html) + + +OpenWire Version 2 is not the latest version. + +This article references OpenWire V2 which is no longer the latest version. The formatting and encoding rules in this article are still valid for later OpenWire versions, but later versions define additional fields in the OpenWire commands. The default settings shown in this article may not reflect the current defaults, see [this page](configuring-wire-formats.html) for the latest default OpenWire settings. + +Overview +-------- + +OpenWire is used to marshal objects to byte arrays and back. We will refer to the marshaled objects as commands. + +A TCP network connection would see multiple commands back to back on the stream. Commands are not delimited in anyway and are variable sized. + +\+\-\-\-\-\-\-\-\-\-\+ \+\-\-\-\-\-\-\-\-\-\+ +---------+ +| command | | command | .... | command | +\+\-\-\-\-\-\-\-\-\-\+ \+\-\-\-\-\-\-\-\-\-\+ +---------+ + +All data primitive types used in the encoded commands are encoded in big-endian/network byte order. + +primitive types and encoding: + | | | | | | +\+\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ +| byte | | | char | | | short | | | int | | | long | | | float | | | double | +\+\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ +| 1 octect | | | 2 octects | | | 2 octects | | | 4 octects | | | 8 octects | | | 4 octects | | | 8 octects | +\+\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ | \+\-\-\-\-\-\-\-\-\-\-\-\+ + | | | | | | + +Wire Format Negotiation +----------------------- + +OpenWire is an extensible in that it supports adding new encoding options while still being backward compatible with previous versions of the protocol. Every OpenWire protocol session initially starts with all encoding options turned off and at version 1 of command marshalers. An initial WIREFORMAT_INFO command is exchanged between the two nodes so that additional encoding features can be enabled. If both sides request an encoding feature to be enabled then it will be enabled. The command marshalers used will be the highest version that they both support. + +\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \+\-\-\-\-\-\-\-\-\-\+ \+\-\-\-\-\-\-\-\-\-\+ +---------+ +| WIREFORMAT_INFO command | | command | | command | .... | command | +\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \+\-\-\-\-\-\-\-\-\-\+ \+\-\-\-\-\-\-\-\-\-\+ +---------+ + +Command Encoding +---------------- + +Every command is encoded as follows: + +command encoding: +\[=If SizePrefixDisabled =\] +\[ option is not enabled. \] +\[ \+\-\-\-\-\-\-\+ \] +------+-------------------------+ +\[ | size | \] | type | command-specific-fields | +\[ \+\-\-\-\-\-\-\+ \] +------+-------------------------+ +\[ | int | \] | byte | (size-1) octects | +\[ \+\-\-\-\-\-\-\+ \] +------+-------------------------+ +\[========================\] + +Field + +Description + +size + +Holds how many subsequent bytes are in the the command + +type + +Command type identifier + +command-specific-fields + +The data for the command. It is encoding depends on the type used + +If a command type does not have any command specific content, then size would be 1. + +Prefixing the size on every command is done to aid in non-blocking IO processing so that receiver can easily determine when a whole command has been received and can be processed. But finding out the size of command takes additional buffering on the sender size and is not needed if the receiver is doing blocking IO. If the SizePrefixDisabled option is enabled after the exchange of WIREFORMAT_INFO packets, then every subsequent command will not have the size prefixed. + +Command Types +------------- + +Type Identifier + +Command + +Description + +1 + +WIREFORMAT_INFO + +2 + +BROKER_INFO + +3 + +CONNECTION_INFO + +4 + +SESSION_INFO + +5 + +CONSUMER_INFO + +6 + +PRODUCER_INFO + +7 + +TRANSACTION_INFO + +8 + +DESTINATION_INFO + +9 + +REMOVE\_SUBSCRIPTION\_INFO + +10 + +KEEP\_ALIVE\_INFO + +11 + +SHUTDOWN_INFO + +12 + +REMOVE_INFO + +14 + +CONTROL_COMMAND + +15 + +FLUSH_COMMAND + +16 + +CONNECTION_ERROR + +17 + +CONSUMER_CONTROL + +18 + +CONNECTION_CONTROL + +21 + +MESSAGE_DISPATCH + +22 + +MESSAGE_ACK + +23 + +ACTIVEMQ_MESSAGE + +24 + +ACTIVEMQ\_BYTES\_MESSAGE + +25 + +ACTIVEMQ\_MAP\_MESSAGE + +26 + +ACTIVEMQ\_OBJECT\_MESSAGE + +27 + +ACTIVEMQ\_STREAM\_MESSAGE + +28 + +ACTIVEMQ\_TEXT\_MESSAGE + +30 + +RESPONSE + +31 + +EXCEPTION_RESPONSE + +32 + +DATA_RESPONSE + +33 + +DATA\_ARRAY\_RESPONSE + +34 + +INTEGER_RESPONSE + +40 + +DISCOVERY_EVENT + +50 + +JOURNAL_ACK + +52 + +JOURNAL_REMOVE + +53 + +JOURNAL_TRACE + +54 + +JOURNAL_TRANSACTION + +55 + +DURABLE\_SUBSCRIPTION\_INFO + +60 + +PARTIAL_COMMAND + +61 + +PARTIAL\_LAST\_COMMAND + +65 + +REPLAY + +70 + +BYTE_TYPE + +71 + +CHAR_TYPE + +72 + +SHORT_TYPE + +73 + +INTEGER_TYPE + +74 + +LONG_TYPE + +75 + +DOUBLE_TYPE + +76 + +FLOAT_TYPE + +77 + +STRING_TYPE + +78 + +BOOLEAN_TYPE + +79 + +BYTE\_ARRAY\_TYPE + +90 + +MESSAGE\_DISPATCH\_NOTIFICATION + +91 + +NETWORK\_BRIDGE\_FILTER + +100 + +ACTIVEMQ_QUEUE + +101 + +ACTIVEMQ_TOPIC + +102 + +ACTIVEMQ\_TEMP\_QUEUE + +103 + +ACTIVEMQ\_TEMP\_TOPIC + +110 + +MESSAGE_ID + +111 + +ACTIVEMQ\_LOCAL\_TRANSACTION_ID + +112 + +ACTIVEMQ\_XA\_TRANSACTION_ID + +120 + +CONNECTION_ID + +121 + +SESSION_ID + +122 + +CONSUMER_ID + +123 + +PRODUCER_ID + +124 + +BROKER_ID + +### Command Field Encoding + +All OpenWire commands use the same algorithm when encoding their fields. The algorithm restricts commands to use fields that are of the following type: + +* Java primitive types +* String +* Byte Arrays +* N Sized Byte Arrays +* Throwable +* Nested OpenWire commands +* Nested OpenWire command arrays +* Cached Nested OpenWire commands + +Notice that OpenWire commands can nest other OpenWire commands in it's fields. Care must be taken that only acyclic graphs of commands are marshaled. + +#### String Type Encoding + +Strings fields may be null. If it is null then it encodes to a single "0" byte. + +string encoding: + \[=If not-null is 1===========\] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +| not-null | \[ | size | encoded-string | \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +| byte | \[ | short | size octects | \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] + \[============================\] + +Field + +Description + +not-null + +1 if the string is not null, 0 if the string is null + +size + +The number of bytes of the UTF-8 Encoded string + +encoded-string + +The UTF-8 encoded form of the string + +### Byte Array Type Encoding + +Byte array fields may be null. If it is null then it encodes to a single "0" byte. + +byte-array encoding: + \[=If not-null is 1========\] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +| not-null | \[ | size | data | \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +| byte | \[ | int | size octects | \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] + \[=========================\] + +Field + +Description + +not-null + +1 if the byte array is not null, 0 if it is null + +size + +The number of bytes in the byte array + +data + +The data of the byte array + +### N Sized Byte Array Type Encoding + +Fixed Size Byte array fields may NOT be null and their length must be N length. Used for byte arrays that are always a fixed size. + +N-sized-byte-array encoding: ++-----------+ +| data | ++-----------+ +| N octects | ++-----------+ + +Field + +Description + +data + +The data of the byte array + +### Throwable Type Encoding + +Throwable fields may be null. If it is null then it encodes to a single "0" byte. + +throwable encoding: + \[=If not-null is 1===========================================================================\] + \[ \[=If StackTraceEnabled option is enabled.==================\] \] + \[ \[ \[=Repeated size times======================\] \] \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] \] \] +| not-null | \[ | exception-name | message | \[ | size | \[ | class | method | file | line-number | \] \] \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] \] \] +| byte | \[ | string | string | \[ | short | \[ | string | string | string | int | \] \] \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] \] \] + \[ \[ \[============================================\] \] \] + \[ \[==========================================================\] \] + \[============================================================================================\] + +Field + +Description + +not-null + +1 if the Throwable not null, 0 if the Throwable is null + +exception-name + +The class name of the exception + +message + +The exception message + +size + +The number of stack frames in the stack trace + +class + +The name of the class in a stack frame + +method + +The name of the method in a stack frame + +file + +The name of the file in a stack frame + +line-number + +The line number in a stack frame + +If the StackTraceEnabled encoding option is enabled after the exchange of WIREFORMAT_INFO packets, then every Throwable filed will have stack trace data appended to it. + +### Nested Command Type Encoding + +Nested command fields may be null. If it is null then it encodes to a single "0" byte. + +nested-object encoding: + \[=If not-null is 1===================\] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +| not-null | \[ | type | command-specific-fields | \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +| byte | \[ | byte | variable sized | \] +\+\-\-\-\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] + \[====================================\] + +Field + +Description + +not-null + +1 if the Throwable not null, 0 if the Throwable is null + +type + +Command type identifier + +command-specific-fields + +The data for the command. It is encoding depends on the type used + +### Cached Nested Command Type Encoding + +Nested Command types can be cached so that subsequent marshaling operations of the same object result in a smaller on the wire size. By default the CacheEnabled option is not enabled and therefore standard nested-object encoding is used. + +cached-object-encoding: +\[=If CacheEnabled option is enabled=====================\] +\[ \[=If new-value is 1===========\] \] +\[ \+\-\-\-\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] \] +\[ | new-value | key | \[ | command-specific-fields | \] \] +\[ \+\-\-\-\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] \] +\[ | byte | short | \[ | nested-object | \] \] +\[ \+\-\-\-\-\-\-\-\-\-\-\-\+\-\-\-\-\-\-\-\+ \[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] \] +\[ \[=============================\] \] +\[=====================================================\] \] + +\[=If CacheEnabled option is disabled =\] +\[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +\[ | command-specific-fields | \] +\[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +\[ | nested-object | \] +\[ \+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\+ \] +\[=====================================\] + +Field + +Description + +new-value + +1 if the value is not in the cache, 0 if it already is in the cache + +key + +Key used to identify the value in the cache + +command-specific-fields + +The data for the command. It is encoding depends on the type used + +Loose Encoding +-------------- + +The default encoding explained so far is called "loose encoding" and is the default encoding used when OpenWire if first initialized. Loose encoding is simple to implement does not add much CPU overhead to the marshaling/unmarshaling process. It is able to marshal an object graph in single pass of the object tree. + +Tight Encoding +-------------- + +Another encoding option is supported by OpenWire which is called TightEncoding. When tight encoding is used, it uses bit streams to marshal all the boolean values that would have taken up a byte in loose encoding to a bit in the bit stream. To build the bit stream 2 passes through the object graph are taken so this is more CPU intensive marshaling process but it produces a smaller on the wire size. + diff --git a/openwire.md b/openwire.md new file mode 100644 index 0000000..16ba5f3 --- /dev/null +++ b/openwire.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- OpenWire + +[Connectivity](connectivity.html) > [Protocols](protocols.html) > [OpenWire](openwire.html) + + +OpenWire is our cross language [Wire Protocol](wire-protocol.html) to allow native access to ActiveMQ from a number of different languages and platforms. The Java OpenWire transport is the default transport in ActiveMQ 4.x or later. For other languages see the following... + +* [NMS](http://activemq.apache.org/nms/) for the C# API to Messaging and the OpenWire implementation in C# +* [CMS](cms/index.html) for the C++ API to Messaging and the OpenWire implementation in C++ + +**Note** that you can also use [Stomp](stomp.html) to access ActiveMQ from many different languages as well as use [GCJ](how-do-i-access-activemq-from-c.html) or [IKVM](http://activemq.apache.org/nms/) to access the Java code for ActiveMQ from C/C++ or .Net respectively without using OpenWire. + +### How it works + +OpenWire works by code generating language specific commands and marshaling code which understands the core OpenWire protocol. Then we can write language specific extensions for the low level protocol to provide a nice and easy to use client API in different languages. + +To give you an idea, [here](https://svn.apache.org/repos/asf/activemq/trunk/activemq-openwire-generator/src/main/java/org/apache/activemq/openwire/tool/) are the Java classes which code generate the C#, Java, C, and CPP client code. + +Since OpenWire automates the creation of language specific [Wire Protocol](wire-protocol.html) implementations; then its a matter of wrapping the language specific TCP/IP socket code and wrapping the API in some easy to use functions/classes. + +### Specification + +For a detailed specification of what you will see on the wire: + +* [OpenWire Version 2 Specification](openwire-version-2-specification.html) + diff --git a/optimized-acknowledgement.md b/optimized-acknowledgement.md new file mode 100644 index 0000000..5f18443 --- /dev/null +++ b/optimized-acknowledgement.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Optimized Acknowledgement + +[Features](features.html) > [Message Dispatching Features](message-dispatching-features.html) > [Optimized Acknowledgement](optimized-acknowledgement.html) + + +Overview +-------- + +ActiveMQ supports acknowledging a range of messages in a single batch operations. This option is disabled by default but can be used to improve throughput in some circumstances as it decreases load on the broker. Consider enabling it for your performance test scenario to see if it is applicable. + +### Enabling Optimized Acknowledgements using a Connection URI + +cf = new ActiveMQConnectionFactory("tcp://locahost:61616?jms.optimizeAcknowledge=true"); + +### Enabling Optimized Acknowledgements at the ConnectionFactory Level + +((ActiveMQConnectionFactory)connectionFactory).setOptimizeAcknowledge(true); + +### Enabling Optimized Acknowledgements at the Connection Level + +((ActiveMQConnection)connection).setOptimizeAcknowledge(true); + +### setOptimizeAcknowledgeTimeOut (5.6) + +Since 5.4.2 there is a default timeout on a batch optimized acknowledge which ensures that acks are timely even if consumers are slow. On slow networks, the timeout can expire before the batch limit is reached so the reduced bandwith utilisation is bypassed. In version 5.6, the timeout is configurable via the optimizeAcknowledgeTimeOut attribute. Set as above via the connectiion URI or at the factory and connection level. The default value is 300ms, a value of 0 disables. + diff --git a/osgi-integration.md b/osgi-integration.md new file mode 100644 index 0000000..bd0cb76 --- /dev/null +++ b/osgi-integration.md @@ -0,0 +1,114 @@ +Apache ActiveMQ ™ -- OSGi Integration + +[Connectivity](connectivity.html) > [Containers](containers.html) > [OSGi Integration](osgi-integration.html) + + +Introduction +============ + +This article will provide more details on how to use ActiveMQ in [Apache Karaf](http://karaf.apache.org/), small OSGi based runtime. Apache Karaf was previously know as _ServiceMix kernel_, so informations found here are applicable to [Apache ServiceMix Enterprise Service Bus](http://servicemix.apache.org/home.html) as well. + +Procedures described in this article were tested using Apache karaf 2.3.0 + +Installation +============ + +ActiveMQ provides Karaf features which will help you integrate and use the broker in OSGi environment. For starters you need to add the features URL to Karaf. For version 5.9.0 you can do it like this: + +karaf@root> features:chooseurl activemq 5.9.0 + +After that you should see newly added features + +karaf@root> features:list +State Version Name Repository +\[uninstalled\] \[5.9.0 \] activemq-broker activemq-5.9.0 +\[uninstalled\] \[5.9.0 \] activemq-http activemq-5.9.0 +\[uninstalled\] \[5.9.0 \] activemq-camel activemq-5.9.0 +\[uninstalled\] \[5.9.0 \] activemq-web-console activemq-5.9.0 + +Installing and running the broker is as simple as installing `activemq-broker` feature, like + +karaf@root> features:install activemq-broker + +This will install and start the full broker (including the web console), just as if you started the standalone distribution. + +Broker Configuration +==================== + +Broker is configured using OSGi Config Admin mechanism and could be easily managed in [Karaf](http://karaf.apache.org/manual/latest-2.3.x/users-guide/configuration.html). Configuration can be done by modifying `${KARAF_BASE}/etc/org.apache.activemq.server-default.cfg` file or respective config admin property. An example of the file looks like + +broker-name=amq-broker +data=${karaf.data}/${broker-name} +config=${karaf.base}/etc/activemq.xml + +Mandatory properties are listed in the following table + +Property Name + +Property Description + +broker-name + +Name of the broker + +config + +Location of the XML configuration file + +You can also use this file to set other properties which will replace placeholders in XML configuration file, as the `${data`} property is used in this example. + +Default XML configuration file is located in the `${KARAF_BASE}/etc/activemq.xml` by default. + +Web Console +=========== + +Web Console is installed by default and can be reached at [http://localhost:8181/activemqweb/](http://localhost:8181/activemqweb/) + +The configuration for the console is done in a similar fashion to the broker itself. Configuration is located in `${KARAF_BASE}/etc/org.apache.activemq.webconsole.cfg` and by default looks like + +webconsole.jms.url=tcp://localhost:61616 +webconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root +webconsole.jmx.user=karaf +webconsole.jmx.password=karaf + +**Optional:** In order to use the ActiveMQ console with a broker configured with authentication, it is necessary to configure the username/password for JMS connection as well. + +webconsole.jms.user=system +webconsole.jms.password=manager + +Commands +======== + +After these simple steps you have all necessary libraries installed in the container. Also, now you have specific commands on your disposal that you can use to manage your broker: + + browse Display selected messages in a specified destination + bstat Displays useful broker statistics + list Lists all available brokers in the specified JMX context + purge Delete selected destination's messages that matches the message selector + query Display selected broker component's attributes and statistics + dstat Performs a predefined query that displays useful tabular statistics regarding the specified destination type  + +Help on commands + +To obtain some detailed help on a given command, you can run: + +activemq:\[command\] --help + +Broker querying +--------------- + +Several commands are available to query the broker. To address local brokers, you need to use the `--jmxlocal` parameter. + +The following command displays available brokers: + +karaf@root> activemq:list --jmxlocal +BrokerName = mybroker + +To have more detailed informations, run: + +karaf@root> activemq:query --jmxlocal + +It will display informations about the connectors, list of queues, etc... + +You can also browse or purge queues using the `activemq:browse` and `activemq:purge` commands. + diff --git a/osgi-support-in-development.md b/osgi-support-in-development.md new file mode 100644 index 0000000..3514eaa --- /dev/null +++ b/osgi-support-in-development.md @@ -0,0 +1,114 @@ +Apache ActiveMQ ™ -- OSGi support (in development) + +[OSGi support (in development)](osgi-support-in-development.html) + + +Split packages (2015-11-17) +--------------------------- + +Package + +Modules + +org/apache/activemq/artemis/uri + +artemis-core-client +artemis-jms-client +artemis-server + +org/apache/activemq/artemis/core/protocol/core/impl/wireformat + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/spi/core/protocol     + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/core/protocol/core/impl + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/core/transaction/impl + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/core/security + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/core/protocol + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/core/buffers/impl + +artemis-commons +artemis-core-client + +org/apache/activemq/artemis/core/server/management + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/api/core/management + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/core/server + +artemis-commons (1 class) +artemis-core-client (1 class) +artemis-server + +org/apache/activemq/artemis/spi/core/remoting + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/core/protocol/core + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/utils + +artemis-commons +artemis-core-client +artemis-server + +org/apache/activemq/artemis/api/core + +artemis-commons +artemis-core-client + +org/apache/activemq/artemis/core/remoting/impl/netty + +artemis-core-client +artemis-server + +org/apache/activemq/artemis/core/settings + +artemis-core-client +artemis-server + +Package + +Modules + +org/apache/activemq/artemis/core/protocol/stomp + +artemis-protocols/artemis-stomp-protocol +artemis-server + +org/apache/activemq/artemis/core/protocol/hornetq + +artemis-protocols/artemis-hornetq-protocol +artemis-protocols/artemis-hqclient-protocol + diff --git a/outbound-communication.md b/outbound-communication.md new file mode 100644 index 0000000..c009554 --- /dev/null +++ b/outbound-communication.md @@ -0,0 +1,168 @@ +Apache ActiveMQ ™ -- Outbound Communication + +[Connectivity](connectivity.html) > [Containers](containers.html) > [JBoss Integration](jboss-integration.html) > [Outbound Communication](outbound-communication.html) + + +Configuring a Session Bean to send messages to ActiveMQ +------------------------------------------------------- + +In the attached [example application](outbound-communication.data/activemq-jboss-test.zip?version=3&modificationDate=1117021355000&api=v2), the three MDBs use the `SenderEJB` to send JMS messages to an ActiveMQ queue. In this example, I will be explaining how to: + +1. Configure and deploy an ActiveMQ `Queue` to JBoss +2. Configure and deploy an ActiveMQ `QueueConnectionFactory` to JBoss +3. Configure an EJB, deployed to JBoss, to reference the above two. + +### The Bean + +In the [ejb-jar.xml](outbound-communication.data/ejb-jar.xml?version=3&modificationDate=1117021488000&api=v2) deployment descriptor, the `SenderEJB` is declared as follows: + +**ejb-jar.xml – session bean declaration** + + + + ... + SenderEJB + ... + com.panacya.platform.service.bus.sender.SenderBean + ... + + jms/MyQueueConnectionFactory + javax.jms.QueueConnectionFactory + ... + + + jms/LogQueue + javax.jms.Queue + ... + LoggingQueue + + + +The `jms/MyQueueConnectionFactory` is the JNDI name the `SenderEJB` will use to lookup a `javax.jms.QueueConnectionFactory`. We will configure it to point to an ActiveMQ `QueueConnectionFactory`. + +The `jms/LogQueue` is the JNDI name the `SenderEJB` will use to lookup the `javax.jms.Queue` it will send messages to. We use the `message-destination-link` element to refer to the `LoggingQueue` which is declared in the `assembly-descriptor` section of the [ejb-jar.xml](outbound-communication.data/ejb-jar.xml?version=3&modificationDate=1117021488000&api=v2) deployment descriptor as: + +**ejb-jar.xml – assembly descriptor section** + + + + ... + + LoggingQueue + + ... + + +This is a standard EJB deployment descriptor, nothing special. + +### The Connector + +The `resource-ref` element [shown above](outbound-communication.html), will be linked to the following element in the [ra.xml](http://activemq.codehaus.org/checkout/activemq/modules/ra/src/rar/META-INF/ra.xml) file, which is contained within the [activemq-ra-1.2.rar](jboss-integration.html) file: + +**ra.xml – The QueueConnectionFactory** + + + ... + + ... + javax.jms.QueueConnectionFactory + org.activemq.ra.ActiveMQConnectionFactory + javax.jms.QueueConnection + ... + + ... + + +The `message-destination` element [shown above](outbound-communication.html), will be linked to the following element in the [ra.xml](http://activemq.codehaus.org/checkout/activemq/modules/ra/src/rar/META-INF/ra.xml) file: + +**ra.xml – The Queue** + + + javax.jms.Queue + org.activemq.message.ActiveMQQueue + + PhysicalName + java.lang.String + + + +### The Glue + +In JBoss, connecting the resources needed by the [ejb-jar.xml](outbound-communication.data/ejb-jar.xml?version=3&modificationDate=1117021488000&api=v2) file to resources provided by the [ra.xml](http://activemq.codehaus.org/checkout/activemq/modules/ra/src/rar/META-INF/ra.xml) file involves two additional files: + +1. **[panacya-jms-ds.xml](outbound-communication.data/panacya-jms-ds.xml?version=5&modificationDate=1117021448000&api=v2)** \- This is a JBoss data source file. It specifies which connector objects JBoss should instantiate and where in JNDI JBoss should place those objects. +2. **[jboss.xml](outbound-communication.data/jboss.xml?version=3&modificationDate=1117021488000&api=v2)** \- This is a JBoss deployment descriptor which is contained within the [panacya-mdb-test-1.0.jar](jboss-integration.html) file. It links resources needed by the EJBs to the JNDI names of resources available in JBoss. + +##### [panacya-jms-ds.xml](outbound-communication.data/panacya-jms-ds.xml?version=5&modificationDate=1117021448000&api=v2) – _The JBoss Data Source File_ + +This first snippet configures the `QueueConnectionFactory`, [declared above](outbound-communication.html), and places it in JNDI at `activemq/QueueConnectionFactory`: + +**panacya-jms-ds.xml – The QueueConnectionFactory** + + + activemq/QueueConnectionFactory + + activemq-ra-1.2-SNAPSHOT.rar + javax.jms.QueueConnectionFactory + JmsXARealm + + +This second snippet configures the `Queue`, [declared above](outbound-communication.html), and places it in JNDI at `activemq/queue/outbound`: + +**panacya-jms-ds.xml – The Queue** + + + activemq/queue/outbound + jboss.jca:service=RARDeployment,name='activemq-ra-1.2-SNAPSHOT.rar' + javax.jms.Queue + + PhysicalName=queue.outbound + + + +In the [panacya-jms-ds.xml](outbound-communication.data/panacya-jms-ds.xml?version=5&modificationDate=1117021448000&api=v2) file section shown above, the value of the `Properties` element is set to `PhysicalName=queue.outbound`. This value is the physical name of the ActiveMQ destination the `SenderEJB` will be sending messages to and not a JNDI name. In other words, the value of the `PhysicalName` property has no meaning to JBoss. It is purely an ActiveMQ setting. + +##### [jboss.xml](outbound-communication.data/jboss.xml?version=3&modificationDate=1117021488000&api=v2) – _The JBoss Deployment Descriptor_ + +This first snippet links the `[jms/MyQueueConnectionFactory](outbound-communication.html)` JNDI name used by the `SenderEJB` to the resource name `queuefactoryref` which is local to the [jboss.xml](outbound-communication.data/jboss.xml?version=3&modificationDate=1117021488000&api=v2) file: + +**jboss.xml – The QueueConnectionFactory for the SenderEJB** + + + + SenderEJB + + jms/MyQueueConnectionFactory + queuefactoryref + + + ... + + +This second snippet links the local `queuefactoryref` name to the global JNDI name `java:/activemq/QueueConnectionFactory` which was [declared above](outbound-communication.html): + +**jboss.xml – Linking queuefactoryref to the global JNDI namespace** + + + + queuefactoryref + java:/activemq/QueueConnectionFactory + + ... + + +This third snippet links the `LoggingQueue`, which was [declared](outbound-communication.html) in the `assembly-descriptor` section of the [ejb-jar.xml](outbound-communication.data/ejb-jar.xml?version=3&modificationDate=1117021488000&api=v2), to the global JNDI name `activemq/queue/outbound` which was [declared above](outbound-communication.html): + +**jboss.xml – Linking LoggingQueue to the global JNDI namespace** + + + + LoggingQueue + activemq/queue/outbound + + + +The above example highlights the key configuration settings needed to enable EJBs deployed in JBoss to send JMS messages to an ActiveMQ destination. + +You can try the above example, plus a few more, by downloading the [activemq-jboss-test.zip](outbound-communication.data/activemq-jboss-test.zip?version=3&modificationDate=1117021355000&api=v2) file which contains the complete sample project. + diff --git a/overview.md b/overview.md new file mode 100644 index 0000000..eb79300 --- /dev/null +++ b/overview.md @@ -0,0 +1,74 @@ +Apache ActiveMQ ™ -- Overview + +[Overview](overview.html) + + +* [Download](download.html) + * [ActiveMQ 1.1 Release](activemq-11-release.html) + * [ActiveMQ 1.2 Release](activemq-12-release.html) + * [ActiveMQ 1.3 Release](activemq-13-release.html) + * [ActiveMQ 1.4 Release](activemq-14-release.html) + * [ActiveMQ 1.5 Release](activemq-15-release.html) + * [ActiveMQ 2.0 Release](activemq-20-release.html) + * [ActiveMQ 2.1 Release](activemq-21-release.html) + * [ActiveMQ 3.0 Release](activemq-30-release.html) + * [ActiveMQ 3.1 Release](activemq-31-release.html) + * [ActiveMQ 3.2.1 Release](activemq-321-release.html) + * [ActiveMQ 3.2.2 Release](activemq-322-release.html) + * [ActiveMQ 3.2 Release](activemq-32-release.html) + * [ActiveMQ 4.0.1 Release](activemq-401-release.html) + * [ActiveMQ 4.0.2 Release](activemq-402-release.html) + * [ActiveMQ 4.0 M4 Release](activemq-40-m4-release.html) + * [ActiveMQ 4.0 RC2 Release](activemq-40-rc2-release.html) + * [ActiveMQ 4.0 Release](activemq-40-release.html) + * [ActiveMQ 4.1.0 Release](activemq-410-release.html) + * [ActiveMQ 4.1.1 Release](activemq-411-release.html) + * [ActiveMQ 4.1.2 Release](activemq-412-release.html) + * [ActiveMQ 5.0.0 Release](activemq-500-release.html) + * [ActiveMQ 5.1.0 Release](activemq-510-release.html) + * [ActiveMQ 5.2.0 Release](activemq-520-release.html) + * [ActiveMQ 5.3.0 Release](activemq-530-release.html) + * [ActiveMQ 5.3.1 Release](activemq-531-release.html) + * [ActiveMQ 5.3.2 Release](activemq-532-release.html) + * [ActiveMQ 5.4.0 Release](activemq-540-release.html) + * [ActiveMQ 5.4.1 Release](activemq-541-release.html) + * [ActiveMQ 5.4.2 Release](activemq-542-release.html) + * [ActiveMQ 5.4.3 Release](activemq-543-release.html) + * [ActiveMQ 5.5.0 Release](activemq-550-release.html) + * [ActiveMQ 5.5.1 Release](activemq-551-release.html) + * [ActiveMQ 5.6.0 Release](activemq-560-release.html) + * [ActiveMQ 5.7.0 Release](activemq-570-release.html) + * [ActiveMQ 5.8.0 Release](activemq-580-release.html) + * [5.8 Migration Guide](58-migration-guide.html) + * [ActiveMQ 5.9.0 Release](activemq-590-release.html) + * [5.9 Migration Guide](59-migration-guide.html) + * [ActiveMQ 5.9.1 Release](activemq-591-release.html) + * [ActiveMQ 5.10.0 Release](activemq-5100-release.html) + * [ActiveMQ 5.10.1 Release](activemq-5101-release.html) + * [ActiveMQ 5.10.2 Release](activemq-5102-release.html) + * [ActiveMQ 5.11.0 Release](activemq-5110-release.html) + * [ActiveMQ 5.11.1 Release](activemq-5111-release.html) + * [ActiveMQ 5.11.2 Release](activemq-5112-release.html) + * [ActiveMQ 5.11.3 Release](activemq-5113-release.html) + * [ActiveMQ 5.12.0 Release](activemq-5120-release.html) + * [ActiveMQ 5.12.1 Release](activemq-5121-release.html) + * [ActiveMQ 5.12.2 Release](activemq-5122-release.html) + * [ActiveMQ 5.13.0 Release](activemq-5130-release.html) + * [ActiveMQ 5.13.1 Release](activemq-5131-release.html) + * [ActiveMQ 5.13.2 Release](activemq-5132-release.html) + * [ActiveMQ 5.13.3 Release](activemq-5133-release.html) + * [ActiveMQ 5.13.4 Release](activemq-5134-release.html) + * [ActiveMQ 5.14.0 Release](activemq-5140-release.html) + * [ActiveMQ 5.14.1 Release](activemq-5141-release.html) + * [ActiveMQ 5.14.2 Release](activemq-5142-release.html) + * [ActiveMQ 5.14.3 Release](activemq-5143-release.html) + * [ActiveMQ 5.14.4 Release](activemq-5144-release.html) + * [ActiveMQ 5.14.5 Release](activemq-5145-release.html) + * [ActiveMQ 5.15.0 Release](activemq-5150-release.html) + * [ActiveMQ 5.15.1 Release](activemq-5151-release.html) + * [ActiveMQ 5.15.2 Release](activemq-5152-release.html) + * [In Progress](in-progress.html) +* [Download Archives](download-archives.html) +* [JavaDocs](javadocs.html) +* [News](news.html) + diff --git a/past-releases.md b/past-releases.md new file mode 100644 index 0000000..368d561 --- /dev/null +++ b/past-releases.md @@ -0,0 +1,492 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +These are older releases. For current releases, please see the [Download](./download.html) page. + +The keys file for verifying the release can be obtained [here](https://www.apache.org/dist/activemq/KEYS) + +For any releases not shown here, check the [archive](https://archive.apache.org/dist/activemq/activemq-artemis/). + +### ActiveMQ Artemis 2.3.0 + +[Release Notes](./release-notes-2.3.0.html) | [Documentation](docs/2.3.0/index.html) + +tar.gz: + +[apache-artemis-2.3.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-2.3.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-2.3.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.3.0/apache-artemis-2.3.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 2.2.0 + +[Release Notes](./release-notes-2.2.0.html) | [Documentation](docs/2.2.0/index.html) + +tar.gz: + +[apache-artemis-2.2.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-2.2.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-2.2.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.2.0/apache-artemis-2.2.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 2.1.0 + +[Release Notes](./release-notes-2.1.0.html) | [Documentation](docs/2.1.0/index.html) + +tar.gz: + +[apache-artemis-2.1.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-2.1.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-2.1.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.1.0/apache-artemis-2.1.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 2.0.0 + +[Release Notes](./release-notes-2.0.0.html) | [Documentation](docs/2.0.0/index.html) + +tar.gz: + +[apache-artemis-2.0.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-2.0.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-2.0.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/2.0.0/apache-artemis-2.0.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.5.4 + +[Release Notes](./release-notes-1.5.4.html) | [Documentation](docs/1.5.4/index.html) + +tar.gz: + +[apache-artemis-1.5.4-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.5.4-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.5.4-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.4/apache-artemis-1.5.4-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.5.3 + +[Release Notes](./release-notes-1.5.3.html) | [Documentation](docs/1.5.3/index.html) + +tar.gz: + +[apache-artemis-1.5.3-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.5.3-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.5.3-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.3/apache-artemis-1.5.3-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.5.2 + +[Release Notes](./release-notes-1.5.2.html) | [Documentation](docs/1.5.2/index.html) + +tar.gz: + +[apache-artemis-1.5.2-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.5.2-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.5.2-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.2/apache-artemis-1.5.2-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.5.1 + +[Release Notes](./release-notes-1.5.1.html) | [Documentation](docs/1.5.1/index.html) + +tar.gz: + +[apache-artemis-1.5.1-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.5.1-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.5.1-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.1/apache-artemis-1.5.1-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.5.0 + +[Release Notes](./release-notes-1.5.0.html) | [Documentation](docs/1.5.0/index.html) + +tar.gz: + +[apache-artemis-1.5.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.5.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.5.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.5.0/apache-artemis-1.5.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.4.0 + +[Release Notes](./release-notes-1.4.0.html) | [Documentation](docs/1.4.0/index.html) + +tar.gz: + +[apache-artemis-1.4.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.4.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.4.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.4.0/apache-artemis-1.4.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.3.0 + +[Release Notes](./release-notes-1.3.0.html) | [Documentation](docs/1.3.0/index.html) + +tar.gz: + +[apache-artemis-1.3.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.3.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.3.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.3.0/apache-artemis-1.3.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.2.0 + +[Release Notes](./release-notes-1.2.0.html) | [Documentation](docs/1.2.0/index.html) + +tar.gz: + +[apache-artemis-1.2.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.2.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.2.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.2.0/apache-artemis-1.2.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.1.0 + +[Release Notes](./release-notes-1.1.0.html) | [Documentation](docs/1.1.0/index.html) + +tar.gz: + +[apache-artemis-1.1.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.1.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.1.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.1.0/apache-artemis-1.1.0-source-release.tar.gz.asc) + +### ActiveMQ Artemis 1.0.0 + +[Release Notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12328953) | [Documentation](docs/1.0.0/index.html) + +tar.gz: + +[apache-artemis-1.0.0-bin.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-bin.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-bin.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-bin.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-bin.tar.gz.asc) + +ZIP: + +[apache-artemis-1.0.0-bin.zip](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-bin.zip) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-bin.zip.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-bin.zip.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-bin.zip.asc) + +Source Code Distribution: + +[apache-artemis-1.0.0-source-release.tar.gz](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-source-release.tar.gz) + +[SHA1](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-source-release.tar.gz.sha1) + +[MD5](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-source-release.tar.gz.md5) + +[GPG Signature](https://archive.apache.org/dist/activemq/activemq-artemis/1.0.0/apache-artemis-1.0.0-source-release.tar.gz.asc) \ No newline at end of file diff --git a/peer-transport-reference.md b/peer-transport-reference.md new file mode 100644 index 0000000..e8f44f7 --- /dev/null +++ b/peer-transport-reference.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Peer Transport Reference + +[Using ActiveMQ](using-activemq.html) > [Configuring Transports](configuring-transports.html) > [ActiveMQ Connection URIs](activemq-connection-uris.html) > [Peer Transport Reference](peer-transport-reference.html) + + +### The Peer Transport + +The Peer transport provides a peer-to-peer network with ActiveMQ. What actually happens is the peer transport uses the VM transport to create and connect to a local embedded broker but which configures the embedded broker to establish network connections to other peer embedded brokers. + +#### Configuration Syntax + +**peer://peer-group/brokerName?brokerOptions** + +##### Example URI + +peer://groupa/broker1?persistent=false + diff --git a/per-destination-policies.md b/per-destination-policies.md new file mode 100644 index 0000000..d042272 --- /dev/null +++ b/per-destination-policies.md @@ -0,0 +1,348 @@ +Apache ActiveMQ ™ -- Per Destination Policies + +[Features](features.html) > [Destination Features](destination-features.html) > [Per Destination Policies](per-destination-policies.html) + + +Multiple different policies can be applied per destination (queue or topic), or using wildcard notation to apply to a hierarchy of queues or topics, making it possible, therefore, to configure how different regions of the JMS destination space are handled. + +The following properties can be applied to either topics and/or queues: + +Common Property + +Default + +Description + +`advisoryForConsumed` + +`false` + +Send an advisory message when a message is consumed by a client. + +`advisoryForDelivery` + +`false` + +Send an advisory message when a message is sent to a client. + +`advisoryForFastProducers` + +`false` + +Send an advisory message if a producer is deemed fast. + +`advisoryForSlowConsumers` + +`false` + +Send an advisory message if a consumer is deemed slow. + +`advisoryWhenFull` + +`false` + +Send an advisory message when a limit (memory, store, temp disk) is full. + +`enableAudit` + +`true` + +When **`true`** the broker will track duplicate messages. Duplicates can happen for non-persistent messages during failover. + +`gcInactiveDestinations` + +`false` + +Garbage collect inactive destinations. + +`inactiveTimoutBeforeGC` + +`5000` + +The timeout (in ms) after which a destination is considered inactive. + +`includeBodyForAdvisory` + +`false` + +Includes the body of the original message that triggered the advisory as part of the **`dataStructure`** field in the advisory message (where applicable). Normally the message body is cleared. + +`maxBrowsePageSize` + +`400` + +The maximum number of messages to page in from the store at one time for a browser. + +`maxDestinations` + +`-1` + +(v5.12) If **`>= 0`**, sets the maximum number of destinations that can be created. This parameter is intended to limit the number of hierarchical destinations that can be created under a wildcard destination. + +`maxPageSize` + +`200` + +The maximum number of messages to page in from the store at one time. Increase this value to improve performance for queue destination's that contain grouped messages that are consumed by multiple concurrent consumers. + +`memoryLimit` + +`n/a` + +The memory limit (in bytes) of the destination's cursor. + +This memory limit is subordinate to the system level memory limit, as specified by the [`/`](producer-flow-control.html) attribute. There is no default for this value; it simply acts as a child to the overall broker memory until the broker memory is exhausted. + +**Note**: when this limit is specified the destination's **`cursorMemoryHighWaterMark`** will be applied against it and not the **`/>`** memory limit. + +`minimumMessageSize` + +`1024` + +For non-serialized messages (embedded broker) - the assumed size of the message used for memory usage calculation. Serialized messages use the serialized size as the basis for the memory calculation. + +`prioritizedMessages` + +`false` + +Persist message priority information. + +`producerFlowControl` + +`true` + +If **`true`** the broker will throttle (flow-control) the producer. Throttling is achieved either by withholding the producer's ACK or by raising a **`javax.jms.ResourceAllocationException`** (that's propagated back to the client) when local resources, e.g., memory and/or storage, have been exhausted. + +If **`false`** excess messages will be written to the message store to prevent memory exhaustion. However, when the message store reaches capacity the producer will be throttled until resources are freed. + +`slowConsumerStrategy` + +`null` + +Sets the strategy for handling slow consumers. See [AbortSlowConsumerStrategy.](https://github.com/apache/activemq/blob/master/activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/AbortSlowConsumerStrategy.java) + +`storeUsageHighWaterMark` + +`100` + +The percentage (%) threshold of the **`/`** store limit which when exceeded causes a producer send to block. + +`useCache` + +`true` + +If **`true`** persistent messages are cached for fast retrieval from store. + +`usePrefetchExtension` + +`true` + +The prefetch extension is used when a message is delivered but not ACK'ed, such that the broker can dispatch another message, e.g., **`prefetch == 0`**, the idea being that there will always be prefetch number of messages pending. It also allows a transaction batch to exceed the prefetch value. + +`sendFailIfNoSpace` + +`false` + +(v5.16.0) If **`true`**, will cause a send to fail with a **`javax.jms.ResourceAllocationException`** when the destination has reached is resource limits (memory or storage) + +`sendFailIfNoSpaceAfterTimeout` + +`0` + +(v5.16.0) If **`> 0`**, will cause a send to fail with a **`javax.jms.ResourceAllocationException`** when the destination resource limits (memory or storage) remain exhausted for the configured duration in milliseconds + +The following properties can be applied _only_ to a queue: + +Queue Only Property + +Default + +Description + +`allConsumersExclusiveByDefault` + +`false` + +When **`true`** all consumers will be exclusive. See [ActiveMQ Exclusive Consumers](nms/activemq-exclusive-consumers.html) + +`cursorMemoryHighWaterMark` + +`70` + +The percentage (%) threshold applied either to the **`/`** or the destination's **`memoryLimit`** (when defined) which when exceeded will cause the destination's cursor to either block or write to disk. + +`consumersBeforeDispatchStarts` + +`0` + +When the first consumer connects, wait for specified number of consumers before message dispatching starts. + +`expireMessagesPeriod` + +`30000` + +The period (in ms) of checks for message expiry on queued messages. + +A value of **`0`** will disable expiration checking. + +`lazyDispatch` + +`false` + +Only page in from store the number of messages that can be dispatched at time. + +`maxExpirePageSize` + +`400` + +The maximum number of messages to page in when periodically expiring messages. + +Messages are paged in according to this setting if the number of messages in memory pending dispatch is less than this value, and there are messages in the store to page in. Messages are expired during this paging step as they are brought into memory from the store. + +Once the paging process is completed, messages are expired from the list of those that are in memory and pending dispatch, then from the list of those that are in memory but not yet targeted at a subscription. + +`optimizedDispatch` + +`false` + +Don't use a separate thread for dispatching from a Queue. + +`persistJMSRedelivered` + +`false` + +(v 5.10) If true, before a persistent message is dispatched by the broker for the first time, the message is rewritten to reflect the possible delivery. + +This ensures the message **`JMSRedelivered`** header is a reliable indication of possible duplicate delivery. + +`queuePrefetch` + +`n/a` + +Sets the prefetch for consumers that are using the default value. + +`strictOrderDispatch` + +`false` + +If **`true`** queue will not round robin consumers, but it'll use a single one until its prefetch buffer is full. + +`timeBeforeDispatchStarts` + +`0` + +When the first consumer connects, wait for specified time (in ms) before message dispatching starts. + +`useConsumerPriority` + +`true` + +Use the priority of a consumer when dispatching messages from a Queue. + +The following properties can be applied _only_ to a topic: + +Topic Only Property + +Default + +Description + +`advisoryForDiscardingMessages` + +`false` + +Send an advisory when a message is discarded from a non durable subscription. + +`cursorMemoryHighWaterMark` + +`70` + +The percentage (%) threshold applied to the **`/`** which when exceeded will cause the destination's cursor to either block or write to disk. + +`alwaysRetroactive` + +`false` + +Makes all subscribers retroactive negating the need to modify the clients to enable this feature. + +`durableTopicPrefetch` + +`n/a` + +Sets the prefetch for durable topic consumers that are using the default value. + +`expireMessagesPeriod` + +`30000` + +The interval (in ms) between message expiration checks on inactive durable subscribers. + +**Note**: set to **`0`** to disable message expiration checking. + +`topicPrefetch` + +`n/a` + +Sets the prefetch for topic consumers that are using the default value. + +The following are examples of different policies that can be customized on a per destination basis: + +* [Dispatch Policies](dispatch-policies.html) + +An example from the demos [https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=assembly/src/release/examples/conf/activemq-demo.xml;hb=HEAD](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=assembly/src/release/examples/conf/activemq-demo.xml;hb=HEAD):  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/performance-report.md b/performance-report.md new file mode 100644 index 0000000..9711c67 --- /dev/null +++ b/performance-report.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- Performance report + +[Features](features.html) > [Performance](performance.html) > [Performance report](performance-report.html) + + +Performance guides +------------------ + +If you're not convinced by performance reports then please do try running performance tests yourself. You might wanna check out our overview of [Performance](performance.html) or try using out the [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) + +The Commercial Providers on the [Support](support.html) page may also be able to help diagnose performance issues, suggest changes, etc... + diff --git a/performance-scaling.md b/performance-scaling.md new file mode 100644 index 0000000..4fa2f90 --- /dev/null +++ b/performance-scaling.md @@ -0,0 +1,34 @@ + + +* [Apollo 1.7.1](../index.html) +* [Developers](../community/developers.html) +* [Community](../community/index.html) +* [Download](../download.html) + +Performance and Scaling +======================= + +Performance +----------- + +Apollo's performance is awesome considering it is using Stomp, a text based protocol. See [the STOMP benchmark report](http://hiramchirino.com/stomp-benchmark/ec2-c1.xlarge/index.html) for detailed results. + +Scaling Characteristics +----------------------- + +There are many different extreme ways that a messaging system can be used. Some folks like to: + +* connect a large number of clients. +* hold a large number of messages in their queues. + +Apollo aims to support all those usage scenarios. + +### Scaling the Number of Connected Clients + +Apollo uses non blocking IO and a reactor thread model. This means that a running broker uses a constant number of threads no matter how many clients are connected to it. + +### Scaling the Number of Queued Messages + +Queues will swap messages out of memory when there are no consumers that are likely to need the message soon. Once a message is swapped, the queue will replace the message with a reference pointer. When the queue builds a large number (more than 10,000) of these swapped out reference pointers, they then get consolidated into a single “range entry” and the pointers are dropped. + +When a consumer comes along that needs some of the swapped out messages, it will convert previously consolidated “range entries” to a set of reference pointers. The next reference pointers that the consumer is interested in get swapped back as regular messages. This allows Apollo's queues to hold millions of messages without much impact on JVM memory usage. \ No newline at end of file diff --git a/performance-tuning.md b/performance-tuning.md new file mode 100644 index 0000000..705e951 --- /dev/null +++ b/performance-tuning.md @@ -0,0 +1,67 @@ +Apache ActiveMQ ™ -- Performance Tuning + +[Using ActiveMQ](using-activemq.html) > [Performance Tuning](performance-tuning.html) + + +For a more complete overview see [Performance](performance.html). + +There are trade-offs between performance and reliability. By default, ActiveMQ strikes a balance between the two, so there are some things you can change to increase throughput. + +Async Publishing +---------------- + +First some background: + +When an ActiveMQ message producer sends a non-persistent message, its dispatched asynchronously (fire and forget) - but for persistent messages, the publisher will block until it gets a notification that the message has been processed (saved to the store - queued to be dispatched to any active consumers etc) by the broker. messages are dispatched with delivery mode set to be persistent by default (which is required by the JMS spec). So if you are sending messages on a Topic, the publisher will block by default (even if there are no durable subscribers on the topic) until the broker has returned a notification. + +So if you looking for good performance with topic messages, either set the delivery mode on the publisher to be non-persistent, or set the **`useAsyncSend`** property on the ActiveMQ ConnectionFactory to be **true**. + +Pre-fetch Sizes for Consumers +----------------------------- + +ActiveMQ will push as many messages to the consumer as fast as possible, where they will be queued for processing by an ActiveMQ Session. The maximum number of messages that ActiveMQ will push to a Consumer without the Consumer processing a message is set by the pre-fetch size. You can improve throughput by running ActiveMQ with larger pre-fetch sizes. Pre-fetch sizes are determined by the **`ActiveMQPrefetchPolicy`** bean, which is set on the ActiveMQ **`ConnectionFactory`**. + +Default values: + +Consumer Type + +Default Value + +queue + +`1000` + +queue browser + +`500` + +topic + +`32767` + +durable topic + +`1000` + +Optimized Acknowledge +--------------------- + +When consuming messages in auto acknowledge mode (set when creating the consumers' session), ActiveMQ can acknowledge receipt of messages back to the broker in batches (to improve performance). The batch size is 65% of the prefetch limit for the Consumer. Also if message consumption is slow the batch will be sent every 300ms. You switch batch acknowledgment on by setting **`optimizeAcknowledge=true`** on the ActiveMQ **`ConnectionFactory`**. + +Straight through Session Consumption +------------------------------------ + +By default, a Consumer's session will dispatch messages to the consumer in a separate thread. If you are using Consumers with auto acknowledge, you can increase throughput by passing messages straight through the Session to the Consumer by setting **`alwaysSessionAsync=false`** on the ActiveMQ **`ConnectionFactory`**. + +File based Persistence +---------------------- + +We have a [file based persistence store](kaha-persistence.html) that can be used to increase throughput for the persistent messages + +Performance guides +------------------ + +If you're not convinced by performance reports then please do try running performance tests yourself. You might wanna check out our overview of [Performance](performance.html) or try using out the [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) + +The Commercial Providers on the [Support](support.html) page may also be able to help diagnose performance issues, suggest changes, etc... + diff --git a/performance.md b/performance.md new file mode 100644 index 0000000..7c0e9be --- /dev/null +++ b/performance.md @@ -0,0 +1,38 @@ +Apache ActiveMQ ™ -- Performance + +[Features](features.html) > [Performance](performance.html) + + +Performance +----------- + +Performance differs greatly depending on many different factors + +* the network [topology](topologies.html) +* transport [protocols](uri-protocols.html) used +* [quality of service](qos.html) +* hardware, network, JVM and operating system +* number of producers, number of consumers +* distribution of messages across destinations along with message size + +To give you an idea of the kinds of performance you can expect from ActiveMQ we have a bunch of [JMeter Performance Tests](jmeter-performance-tests.html) that you can run on your hardware with the protocols of your choice. + +The last test run we ran was on a small network of 2 dual CPU opteron linux boxes (64 bit) running SuSe and with Java 5 from Sun. + +When running the server on one box and a single producer and consumer thread in separate VMs on the other box, using a single topic we got around 21-22,000 messages/second using 1-2K messages. Another test running the broker on a Intel Celeron CPU 2.40GHz we got 2000 messages/second on a durable queue with 1 producer and 1 consumer thread on another box. So your milleage may vary greatly on your environment. + +### Performance Testing + +We have a few tools to help you evaluate performance. + +* [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) +* [Load Testing with Camel](load-testing-with-camel.html) +* [JMeter Performance Tests](jmeter-performance-tests.html) + +Performance guides +------------------ + +If you're not convinced by performance reports then please do try running performance tests yourself. You might wanna check out our overview of [Performance](performance.html) or try using out the [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) + +The Commercial Providers on the [Support](support.html) page may also be able to help diagnose performance issues, suggest changes, etc... + diff --git a/periodically-checking-disk-limits.md b/periodically-checking-disk-limits.md new file mode 100644 index 0000000..9b71ee9 --- /dev/null +++ b/periodically-checking-disk-limits.md @@ -0,0 +1,15 @@ +Apache ActiveMQ ™ -- Periodically checking disk limits + +[Features](features.html) > [Persistence](persistence.html) > [Periodically checking disk limits](periodically-checking-disk-limits.html) + + +Store and temporary disk limits are set for the Broker on startup based on configuration and available space. Sometimes other processes (such as logs) can grow and reduce the available disk space enough that the limits detected at start up no longer have any effect. Since ActiveMQ version **5.12.0**, it's possible to configure the Broker to periodically check disk space and reconfigure the limits accordingly using the broker attribute schedulePeriodForDiskUsageCheck > 0. + +For example a configuration like + + + ... + + +will check the store and temporary disk limits every 60 seconds (`schedulePeriodForDiskUsageCheck` option, default value is 0 which disables this check). + diff --git a/perl.md b/perl.md new file mode 100644 index 0000000..517cedc --- /dev/null +++ b/perl.md @@ -0,0 +1,179 @@ +Apache ActiveMQ ™ -- Perl + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [Perl](perl.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.7.0/activemq-core/apidocs/) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Perl Support +------------ + +For Perl support we recommend the use of the [Stomp protocol](http://activemq.apache.org/stomp.html). +There are various Perl Stomp clients available, such as + +[Net::STOMP::Client Perl](http://search.cpan.org/dist/Net-STOMP-Client/) +[Net::Stomp Perl](http://search.cpan.org/dist/Net-Stomp/) + +Both are hosted on [CPAN.org](http://www.cpan.org) + +A more exhausting list of Stomp client libraries for Perl is available on [stomp.github.com](http://stomp.github.com//implementations.html). + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/persistence-questions.md b/persistence-questions.md new file mode 100644 index 0000000..45cc62b --- /dev/null +++ b/persistence-questions.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Persistence Questions + +[Community](community.html) > [FAQ](faq.html) > [Persistence Questions](persistence-questions.html) + + +Questions relating to long term persistence of messages. + +* [Are messages read directly from the journal](are-messages-read-directly-from-the-journal.html) +* [Does ActiveMQ support my SQL database](does-activemq-support-my-sql-database.html) +* [How does journaling work with multiple brokers](how-does-journaling-work-with-multiple-brokers.html) +* [How does the journal work](how-does-the-journal-work.html) +* [How do I back-up KahaDB](how-do-i-back-up-kahadb.html) +* [How do I change the message store directory for an embedded broker](how-do-i-change-the-message-store-directory-for-an-embedded-broker.html) +* [Is there a specified size of the journal](is-there-a-specified-size-of-the-journal.html) +* [What happens when the journal size is exceeded](what-happens-when-the-journal-size-is-exceeded.html) +* [What is the difference between persistent and non-persistent delivery](what-is-the-difference-between-persistent-and-non-persistent-delivery.html) + diff --git a/persistence.md b/persistence.md new file mode 100644 index 0000000..95d05ce --- /dev/null +++ b/persistence.md @@ -0,0 +1,105 @@ +Apache ActiveMQ ™ -- Persistence + +[Features](features.html) > [Persistence](persistence.html) + + +ActiveMQ V5.9 +------------- + +In ActiveMQ 5.9, the [Replicated LevelDB Store](replicated-leveldb-store.html) is introduced. It handles using [Apache ZooKeeper](http://zookeeper.apache.org/) to pick a master from a set of broker nodes configured to replicate single LevelDB Store. Then synchronizes all slave LevelDB Stores with the master keeps them up to date by replicating all updates to the master. This might become the preferred [Master Slave](masterslave.html) configuration going forward. + +ActiveMQ V5.8 +------------- + +In ActiveMQ 5.8, the [LevelDB Store](leveldb-store.html) was introduced. The LevelDB Store is a file based persistence database. It has been optimized to provide even faster persistence than KahaDB. Although not yet the default message store, we expect this store implementation become the default in future releases. + +ActiveMQ V5.3 +------------- + +From 5.3 onwards - we recommend you use [KahaDB](kahadb.html) \- which offers improved scalability and recoverability over the [AMQ Message Store](amq-message-store.html). +The [AMQ Message Store](amq-message-store.html) which although faster than [KahaDB](kahadb.html) \- does not scales as well as [KahaDB](kahadb.html) and recovery times take longer. + +ActiveMQ V4 +----------- + +For long term persistence we recommend using JDBC coupled with our high performance journal. You can use just JDBC if you wish but its quite slow. + +Our out of the box default configuration uses [Apache Derby](http://incubator.apache.org/derby/) as the default database, which is easy to embed - but we support all the [major SQL databases](jdbc-support.html) \- just reconfigure your JDBC configuration in the [Xml Configuration](xml-configuration.html). + +High performance journal - ActiveMQ 4.x +--------------------------------------- + +To achieve high performance of durable messaging in ACtiveMQ V4.x we strongly recommend you use our high performance journal - which is enabled by default. This works rather like a database; messages (and transcation commits/rollbacks and message acknowledgements) are written to the journal as fast as is humanly possible - then at intervals we checkpoint the journal to the long term persistence storage (in this case JDBC). + +Its common when using queues for example that messages are consumed fairly shortly after being published; so you could publish 10,000 messages and only have a few messages outstanding - so when we checkpoint to the JDBC database, we often have only a small amount of messages to actually write to JDBC. Even if we have to write all the messages to the JDBC, we still get performance gains with the journal, since we can use a large transaction batch to insert the messages into the JDBC database to boost performance on the JDBC side. + +Our journal is based on lots of the great work in the [Howl](http://howl.objectweb.org/) project; we keep close ties to the Howl community. However since ActiveMQ has to handle arbitarily large message sizes, we've had to make our journal handle any size of message and so we don't use the fixed size record model that Howl uses. + +Configuring persistence +----------------------- + +For full explict control over configuration check out the [Xml Configuration](xml-configuration.html). However a quick way to set which persistence adapter to use is to set the following system property to be the class name of the PersistenceAdapter implementation. + +activemq.persistenceAdapter + +When running the broker from the command line, we look for the activemq.xml on the classpath unless you specify one to use. e.g. +**AMQ 4.x** + +activemq xbean:file:myconfig.xml + +**AMQ 3.x** + +activemq myconfig.xml + +or just +**AMQ3.x/AMQ4.x** + +activemq + +Here is a sample XML configuration which shows how to configure the journal and the JDBC persistence. + +AMQ 5.x + +xml + +For more details see the [Initial Configuration](initial-configuration.html) guide. + +JDBC Persistence without Journaling +----------------------------------- + +To enable JDBC persistence of JMS messages without journaling, we need to change the message broker's default persistence configuration from +**AMQ 4.x** + + + +to + + + +**For AMQ 3.x** + + + +to + + + +Make sure to send durable messages so that it will be persisted in the database server while waiting to be consumed by clients. More information on configuration JDBC persistence at [JDBC Support](jdbc-support.html) + +[Kaha Persistence](kaha-persistence.html) + +Disaster Recovery options +------------------------- + +For people with high [DR](dr.html) requirements we have various options for providing a [Replicated Message Store](replicated-message-store.html) to allow full failover in times of major data centre failure. + +Disabling Persistence +--------------------- + +If you don't want persistence at all you can disable it easily via the [Xml Configuration](xml-configuration.html). e.g. + + + +This will make the broker use the [](http://activemq.apache.org/maven/apidocs/org/apache/activemq/store/memory/MemoryPersistenceAdapter.html) +For an example of using a configuration URI see [How To Unit Test JMS Code](how-to-unit-test-jms-code.html) + diff --git a/php.md b/php.md new file mode 100644 index 0000000..ed6b4c0 --- /dev/null +++ b/php.md @@ -0,0 +1,172 @@ +Apache ActiveMQ ™ -- PHP + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [PHP](php.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.7.0/activemq-core/apidocs/) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +PHP Support +----------- + +For PHP support we recommend the PHP Stomp Client. A list of available clients for PHP is available [here](http://stomp.codehaus.org/implementations.html). +Among others you can grab a stomp-php client from [here](http://stomp.fusesource.org/release/php/1.0/stomp-php-1.0.0.tar.gz) + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/pike.md b/pike.md new file mode 100644 index 0000000..2f16384 --- /dev/null +++ b/pike.md @@ -0,0 +1,171 @@ +Apache ActiveMQ ™ -- Pike + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [Pike](pike.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.7.0/activemq-core/apidocs/) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Pike Support +------------ + +For Pike support we recommend the [Pike Stomp Client](http://stomp.codehaus.org/Pike) + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/pluggable-storage-lockers.md b/pluggable-storage-lockers.md new file mode 100644 index 0000000..1f37577 --- /dev/null +++ b/pluggable-storage-lockers.md @@ -0,0 +1,151 @@ +Apache ActiveMQ ™ -- Pluggable storage lockers + +[Features](features.html) > [Persistence](persistence.html) > [Pluggable storage lockers](pluggable-storage-lockers.html) + + +As of the 5.7.0 release of ActiveMQ the choice of storage locking mechanism, as used by a persistence adapter, has been made pluggable. This feature is only meaningful to brokers configured in a shared storage master/slave topology. Prior to release 5.7.0 the storage locking mechanism (and thus master election) was dictated by the choice of persistence adapter. With the KahaDB persistence adapter, for example, the storage locking mechanism was based on a shared file lock. Similarly, the JDBC persistence adapter used a database backed storage lock. + +Now that the choice of storage locker is divorced from that of the persistence adapter one can mix and match combinations of the two. Storage locker pluggability is made possible by the [Locker](https://fisheye6.atlassian.com/browse/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/Locker.java?hb=true) interface that all pluggable lockers must implement. This interface makes it easy to implement a custom storage locker that meets local requirements. + +Every persistence adapter, however, has its own default locker which works as before. + +Lockers +------- + +Every locker must implement the [Locker](https://fisheye6.atlassian.com/browse/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/Locker.java?hb=true) interface. The locker interface has the following properties: + +Property Name + +Default Value + +Description + +**`lockAcquireSleepInterval`** + +`10000` + +The polling interval (in milliseconds) between lock acquire attempts. + +**`failIfLocked`** + +`false` + +Should the broker start fail if the lock is not immediately available. When **`true`** slave brokers will not start. + +Persistence Adapters +-------------------- + +Every persistence adapter (or any other broker service that wishes to use locks) must implement the [Lockable](https://fisheye6.atlassian.com/browse/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/Lockable.java?r=1383400) interface. This interface has the following properties: + +Property Name + +Default Value + +Description + +**`useLock`** + +`true` + +Should the persistence adapter use the configured locker. Intended primarily for use during development to temporarily disable the use of the locker without having to remove its configuration. + +**`lockKeepAlivePeriod`** + +`0` + +The duration (in milliseconds) to keep the lock alive, when greater than `0`. + +Existing Lockers +---------------- + +### Shared File Locker + +The Shared File Locker is the default locker for the KahaDB persistence adapter. It locks a file to ensure that only the broker holding the lock (the master) is granted access to the message store. + +#### Example: + + + + + + + + + +The **`lockKeepAlivePeriod`** attribute is not applicable to versions of ActiveMQ older than 5.9.0. + +Consequences of lockKeepAlivePeriod = 0 + +For this locker **`lockKeepAlivePeriod`** should be greater than **`0`**.This period is the frequency with which the master broker makes lock keep alive calls. + +When **`lockKeepAlivePeriod = 0`** slave brokers are still unable to obtain the file lock. However, if some third party modifies the lock file (either modification or deletion) the master broker will not detect the change. Therefore a slave broker's next attempt (per its configured **`lockAcquireSleepInterval`**) to obtain the file lock will succeed. When this happens there will be two master brokers in the cluster. _This situation will result in message store corruption_! + +When **`lockKeepAlivePeriod`** is greater than **`0`**, the master broker will make a lock keep alive call every **`lockKeepAlivePeriod`** milliseconds. Therefore the master broker will detect any lock file changes when it makes its next keep alive call. Upon detecting said change the master broker will demote itself to a slave broker. + +Note that as of ActiveMQ 5.9.0 the KahaDB persistence adapter can also use the Lease Database Locker (see below). + +### Database Locker + +The Database Locker is the default locker for the JDBC persistence adapter. It locks a database table in a transaction to ensure that only single resource is used. + +#### Example: + + + + + + + + + +The Database Locker uses its **`keepAlive`** method to ensure the broker still holds the lock. You can set the keep alive period using the **`lockKeepAlivePeriod`** property. The default period is 30000 ms. If a broker fails to acquire the lock on the database, it will retry every **`lockAcquireSleepInterval`** milliseconds. + +This locker opens a JDBC transaction against a database table (**`activemq_lock`**) that lasts as long as the broker remains alive. This locks the entire table and prevents another broker from accessing the store. In most cases this will be a fairly long running JDBC transaction which occupies resources on the database over time. + +A problem with this locker can arise when the master broker crashes or loses its connection to the database causing the lock to remain in the database until the database responds to the half closed socket connection via a TCP timeout. The database lock expiry requirement can prevent the slave from starting some time. In addition, if the database supports failover, and the connection is dropped in the event of a replica failover, that JDBC transaction will be rolled back. The broker sees this as a failure. Both master and slave brokes will again compete for a lock. + +### Lease Database Locker + +The Lease Database Locker was created to solve the shortcomings of the Database Locker. The Lease Database Locker does not open a long running JDBC transaction. Instead it lets the master broker acquire a lock that's valid for a fixed (usually short) duration after which it expires. To retain the lock the master broker must periodically extend the lock's lease before it expires. Simultaneously the slave broker checks periodically to see if the lease has expired. If, for whatever reason, the master broker fails to update its lease on the lock the slave will take ownership of the lock becoming the new master in the process. The leased lock can survive a DB replica failover. + +#### Example: + + + + + + + + + +In order for this mechanism to work correctly, each broker in a master/slave(s) cluster must have a unique value for the **`brokerName`** attribute as defined on the **``** tag. Alternatively, use unique values for the **`leaseHolderId`** attribute on the **``** tag as this value is used to create a lease lock definition. + +The lease based lock is acquired by blocking at startup. It is then retained for a period whose duration (in ms) is given by the **`lockKeepAlivePeriod`** attribute. To retain the lock the master broker periodically extends its lease by **`lockAcquireSleepInterval`** milliseconds each time. In theory, therefore, the master broker is always (**`lockAcquireSleepInterval - lockKeepAlivePeriod`**) ahead of the slave broker with regard to the lease. It is imperative that **`lockAcquireSleepInterval > lockKeepAlivePeriod`**, to ensure the lease is always current. As of ActiveMQ 5.9.0 a warning message is logged if this condition is not met. + +In the simplest case, the clocks between master and slave must be in sync for this solution to work properly. If the clocks cannot be in sync, the locker can use the system time from the database CURRENT TIME and adjust the timeouts in accordance with their local variance from the DB system time. If **`maxAllowableDiffFromDBTime`** is greater than zero the local periods will be adjusted by any delta that exceeds **`maxAllowableDiffFromDBTime`**. + +It is important to know if the default rules your JDBC driver uses for converting `TIME` values are JDBC compliant. If you're using MySQL, for example, the driver's JDBC URL should contain **`useJDBCCompliantTimezoneShift=true`** to ensure that `TIME` value conversion is JDBC compliant. If not the locker could report a large time difference when it compares the retrieved lease expiration time against the current system time. Consult your JDBC driver's documentation for more details. + +As of ActiveMQ 5.9.0 the lease database locker can be used in conjunction with the KahaDB persistence adapter. However, this particular combination requires that the lease database locker element contains a **``** child element. In the example below the **`lockTableName`** is also configured, although doing so is not mandatory. + +  + + + + + + entries: --> + + + + + + + +To see the complete list of attributes and SQL statements that can be overridden see the [Statements](https://fisheye6.atlassian.com/browse/activemq/trunk/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/Statements.java?hb=true) class. + +When the KahaDB persistence adapter is configured to use the **`lease-database-locker`** you must configure the broker to use your own IO exception handler as neither the **`DefaultIOExceptionHandler`** nor the **`JDBCIOExceptionHandler`** will work correctly with this combination. See [Configurable IOException Handlers](configurable-ioexception-handling.html) for details on how to write a handler. + +As of ActiveMQ 5.11, however, the **`JDBCIOExceptionHandler`** has been deprecated. It has been replaced by the **`org.apache.activemq.util.LeaseLockerIOExceptionHandler`** that will work with any persistence adapter that supports pluggable storage lockers, regardless if one is configured. + diff --git a/plugin-management.md b/plugin-management.md new file mode 100644 index 0000000..496a7cf --- /dev/null +++ b/plugin-management.md @@ -0,0 +1,274 @@ + ActiveMQ - Project Plugin Management + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * **Plugin Management** + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Project Plugin Management +------------------------- + +GroupId + +ArtifactId + +Version + +org.apache.activemq.protobuf + +[activemq-protobuf](http://activemq.apache.org/activemq-protobuf) + +1.1 + +org.apache.felix + +[maven-bundle-plugin](http://felix.apache.org/maven-bundle-plugin/) + +2.3.7 + +org.apache.maven.plugins + +[maven-antrun-plugin](http://maven.apache.org/plugins/maven-antrun-plugin/) + +1.3 + +org.apache.maven.plugins + +maven-archiver + +2.5 + +org.apache.maven.plugins + +[maven-assembly-plugin](http://maven.apache.org/plugins/maven-assembly-plugin/) + +2.3 + +org.apache.maven.plugins + +[maven-clean-plugin](http://maven.apache.org/plugins/maven-clean-plugin/) + +2.5 + +org.apache.maven.plugins + +[maven-compiler-plugin](http://maven.apache.org/plugins/maven-compiler-plugin/) + +2.5.1 + +org.apache.maven.plugins + +[maven-dependency-plugin](http://maven.apache.org/plugins/maven-dependency-plugin/) + +2.1 + +org.apache.maven.plugins + +[maven-deploy-plugin](http://maven.apache.org/plugins/maven-deploy-plugin/) + +2.7 + +org.apache.maven.plugins + +[maven-docck-plugin](http://maven.apache.org/plugins/maven-docck-plugin/) + +1.0 + +org.apache.maven.plugins + +[maven-eclipse-plugin](http://maven.apache.org/plugins/maven-eclipse-plugin/) + +2.9 + +org.apache.maven.plugins + +[maven-enforcer-plugin](http://maven.apache.org/plugins/maven-enforcer-plugin/) + +1.0.1 + +org.apache.maven.plugins + +[maven-gpg-plugin](http://maven.apache.org/plugins/maven-gpg-plugin/) + +1.4 + +org.apache.maven.plugins + +[maven-install-plugin](http://maven.apache.org/plugins/maven-install-plugin/) + +2.3.1 + +org.apache.maven.plugins + +[maven-invoker-plugin](http://maven.apache.org/plugins/maven-invoker-plugin/) + +1.6 + +org.apache.maven.plugins + +[maven-jar-plugin](http://maven.apache.org/plugins/maven-jar-plugin/) + +2.4 + +org.apache.maven.plugins + +[maven-javadoc-plugin](http://maven.apache.org/plugins/maven-javadoc-plugin/) + +2.8.1 + +org.apache.maven.plugins + +[maven-plugin-plugin](http://maven.apache.org/plugin-tools/maven-plugin-plugin/) + +3.1 + +org.apache.maven.plugins + +[maven-release-plugin](http://maven.apache.org/plugins/maven-release-plugin/) + +2.2.1 + +org.apache.maven.plugins + +[maven-remote-resources-plugin](http://maven.apache.org/plugins/maven-remote-resources-plugin/) + +1.3 + +org.apache.maven.plugins + +[maven-resources-plugin](http://maven.apache.org/plugins/maven-resources-plugin/) + +2.5 + +org.apache.maven.plugins + +scp://people.apache.org/www/maven.apache.org/scm/maven-scm-plugin + +1.7 + +org.apache.maven.plugins + +[maven-site-plugin](http://maven.apache.org/plugins/maven-site-plugin/) + +3.1 + +org.apache.maven.plugins + +[maven-source-plugin](http://maven.apache.org/plugins/maven-source-plugin/) + +2.1.2 + +org.apache.maven.plugins + +[maven-surefire-plugin](http://maven.apache.org/surefire/maven-surefire-plugin) + +2.12.3 + +org.apache.maven.plugins + +[maven-war-plugin](http://maven.apache.org/plugins/maven-war-plugin/) + +2.2 + +org.apache.rat + +[apache-rat-plugin](http://incubator.apache.org/rat/apache-rat-plugin) + +0.8 + +org.codehaus.mojo + +[build-helper-maven-plugin](http://mojo.codehaus.org/build-helper-maven-plugin) + +1.7 + +org.codehaus.mojo + +[clirr-maven-plugin](http://mojo.codehaus.org/clirr-maven-plugin) + +2.4 + +org.codehaus.mojo + +[cobertura-maven-plugin](http://mojo.codehaus.org/cobertura-maven-plugin/) + +2.5.2 + +org.codehaus.mojo + +[ianal-maven-plugin](http://mojo.codehaus.org/ianal-maven-plugin) + +1.0-alpha-1 + +org.codehaus.mojo + +[javacc-maven-plugin](http://mojo.codehaus.org/javacc-maven-plugin/) + +2.6 + +org.eclipse.jetty + +maven-jetty-plugin + +7.6.7.v20120910 + +org.eclipse.m2e + +lifecycle-mapping + +1.0.0 + diff --git a/plugins.md b/plugins.md new file mode 100644 index 0000000..e035bc1 --- /dev/null +++ b/plugins.md @@ -0,0 +1,157 @@ + ActiveMQ - Project Build Plugins + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * **Project Plugins** + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Project Build Plugins +--------------------- + +GroupId + +ArtifactId + +Version + +org.apache.felix + +[maven-bundle-plugin](http://felix.apache.org/maven-bundle-plugin/) + +2.3.7 + +org.apache.maven.plugins + +[maven-clean-plugin](http://maven.apache.org/plugins/maven-clean-plugin/) + +2.5 + +org.apache.maven.plugins + +[maven-compiler-plugin](http://maven.apache.org/plugins/maven-compiler-plugin/) + +2.5.1 + +org.apache.maven.plugins + +[maven-deploy-plugin](http://maven.apache.org/plugins/maven-deploy-plugin/) + +2.7 + +org.apache.maven.plugins + +[maven-enforcer-plugin](http://maven.apache.org/plugins/maven-enforcer-plugin/) + +1.0.1 + +org.apache.maven.plugins + +[maven-install-plugin](http://maven.apache.org/plugins/maven-install-plugin/) + +2.3.1 + +org.apache.maven.plugins + +[maven-remote-resources-plugin](http://maven.apache.org/plugins/maven-remote-resources-plugin/) + +1.3 + +org.apache.maven.plugins + +[maven-site-plugin](http://maven.apache.org/plugins/maven-site-plugin/) + +3.1 + +org.apache.rat + +[apache-rat-plugin](http://incubator.apache.org/rat/apache-rat-plugin) + +0.8 + +org.codehaus.mojo + +[ianal-maven-plugin](http://mojo.codehaus.org/ianal-maven-plugin) + +1.0-alpha-1 + +Project Report Plugins +---------------------- + +GroupId + +ArtifactId + +Version + +org.apache.maven.plugins + +[maven-javadoc-plugin](http://maven.apache.org/plugins/maven-javadoc-plugin/) + +2.8.1 + +org.apache.maven.plugins + +[maven-project-info-reports-plugin](http://maven.apache.org/plugins/maven-project-info-reports-plugin/) + +2.5 + +org.codehaus.mojo + +[taglist-maven-plugin](http://mojo.codehaus.org/taglist-maven-plugin) + +2.4 + diff --git a/pmc-templates.md b/pmc-templates.md new file mode 100644 index 0000000..f5c0143 --- /dev/null +++ b/pmc-templates.md @@ -0,0 +1,186 @@ +Apache ActiveMQ ™ -- PMC Templates + +[Community](community.html) > [PMC Templates](pmc-templates.html) + + +The following email templates are for use by the ActiveMQ PMC:  + +/**/ + +* [Committer Discussion](#PMCTemplates-CommitterDiscussion) +* [Committer Vote](#PMCTemplates-CommitterVote) +* [Committer Vote Result](#PMCTemplates-CommitterVoteResult) +* [Committer Invitation](#PMCTemplates-CommitterInvitation) +* [Committer Announcement](#PMCTemplates-CommitterAnnouncement) +* [Commiter Onboarding](#PMCTemplates-CommiterOnboarding) +* [PMC Discussion](#PMCTemplates-PMCDiscussion) +* [PMC Vote](#PMCTemplates-PMCVote) +* [PMC Invite](#PMCTemplates-PMCInvite) + +Committer Discussion +==================== + +To: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: \[DISCUSS\] Invite to become an ActiveMQ committer + +Considering ’s contributions to the ActiveMQ project... + + + +Based on this person's contributions above, I think we should invite to become a committer. + +Please remember that this is not a vote for this person to become a committer, at this point it is only a discussion. + +Committer Vote +============== + +To: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: \[VOTE\] Invite to become an ActiveMQ committer + +After positive discussion about ’s contributions to the project, I would like to initiate a formal vote. + +Considering as raised in the discussion thread... + +This vote will follow the ASF process for committer votes and consensus approval (at least three binding +1 votes and no vetoes)The vote will be open for 72 hours. + +\[ \] +1 Accept as a committer of Apache ActiveMQ +\[ \] +0 +\[ \] -1 Do not accept at this time because... + +Committer Vote Result +===================== + +To: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: \[RESULT\]\[VOTE\] Invite to become an ActiveMQ committer. + +This vote has been open for days and is now closed with the following results: + +\* Number of +1s +\* Number of 0s +\* Number of -1s + +The vote . + +Committer Invitation +==================== + +To: +Cc: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: Invitation to become Apache Active committer + +Hello , + +The Apache ActiveMQ Project Management Committee (PMC) hereby invites you to become committer on the project. These privileges are offered on the understanding that you'll use them reasonably and with common sense. We like to work on trust rather than unnecessary constraints. + +Being a committer enables you to more easily make changes without needing to go through the patch submission process. Although you will be granted commit access to project repositories, you will be expected to adhere to project best practices when committing. The following URL some good resources regarding expectations and processes: + +[http://www.apache.org/dev/new-committers-guide.html](http://www.apache.org/dev/new-committers-guide.html) + +This is a personal invitation for you to accept or decline in private. Please reply to the [private@activemq.apache.org](mailto:private@activemq.apache.org) address only. + +If you accept the invitation, the next step is to register an Individual Contributor License Agreement (ICLA) with the Apache Software Foundation if you have not already. Details of the ICLA and the forma can be found at the following URL: + +[http://www.apache.org/licenses/#clas](http://www.apache.org/licenses/#clas) + +The form provides instructions for its completion and submittal to the Secretary of the ASF. + +When you submit the completed ICLA, please request to notify the Apache ActiveMQ project upon official receipt.Once your ICLA has been acknowledged by the Secretary, you will need to choose a unique ASF ID. You can check to see if your preferred id is already taken by browsing the following list of ASF committers: + +[http://people.apache.org/committer-index.html](http://people.apache.org/committer-index.html) + +When your ICLA is recognized by the Secretary, you will receive a follow-up message with the next steps for establishing you as a committer. + +We look forward to your response! + +**IMPORTANT** + +Once the prospective committer has accepted the invitation and the ICLA has been acknowledged (check the following URL to be sure it has been submitted: [https://people.apache.org/unlistedclas.html](https://people.apache.org/unlistedclas.html)), locate the vote result thread permalink from the private@activemq list can be found using: [https://mail-search.apache.org/](https://mail-search.apache.org/) or [https://lists.apache.org/](https://lists.apache.org/) (authentication required). + +Upon locating the permalink, use the account request form to request the new ASF user id: [https://id.apache.org/acreq/pmc-chairs](https://id.apache.org/acreq/pmc-chairs)  If the name isn't in the list be sure to click the link on the bottom right. + +Committer Announcement +====================== + +To: [dev@activemq.apache.org](mailto:dev@activemq.apache.org) +Subject: \[ANNOUNCE\] New Apache ActiveMQ Committer + +On behalf of the Apache ActiveMQ PMC, I am very pleased to announce that has accepted an invitation to become a committer. We greatly appreciate all of 's hard work and generous contributions to the project. We look forward to continued involvement in the project. + +Welcome and congratulations! + +Commiter Onboarding +=================== + +To: [private@acctivemq.apache.org](mailto:private@acctivemq.apache.org), +Subject: \[committer\]: What to do now that you're a committer? + +, the ASF Infrastructure has set up your user account as the ''. + +To learn more about how the ASF works, please visit the following URL and read the items in the 'Committers and Contributors' section: + +[https://www.apache.org/dev/#committers](https://www.apache.org/dev/#committers) + +It is especially important to read through the New Committers Guide at the following URL: + +[https://www.apache.org/dev/new-committers-guide.html](https://www.apache.org/dev/new-committers-guide.html) + +Please ensure that you subscribed to the Apache ActiveMQ Developers mailing list [dev@activemq.apache.org](mailto:dev@activemq.apache.org). We also recommend subscribing to the users@ and commits@ mailing lists at [users@activemq.apache.org](mailto:users@activemq.apache.org) and [commits@activemq.apache.org](mailto:commits@activemq.apache.org). Please see the following page for more info about the mailing lists: + +[http://activemq.apache.org/mailing-lists.html](http://activemq.apache.org/mailing-lists.html) + +To push commits, ensure that you use HTTPS or SSH in your git remotes, or if you've been pulling from a mirror like Github, you'll need to add a remote such as: + + +$ git remote add apache [https://git-wip-us.apache.org/repos/asf/activemq.git](https://git-wip-us.apache.org/repos/asf/activemq.git) + + +If you have any questions please ask on the dev@activemq list. + +PMC Discussion +============== + +To: [private@activemq.apache.org +](mailto:private@activemq.apache.org)Subject: \[DISCUSS\] Invite to join ActiveMQ PMC + +Considering ’s contributions to the ActiveMQ project as a committer... + + + +Based on this person's contributions above, I think we should invite to become a committer. + +Please remember that this is not a vote for this person to become a committer, at this point it is only a discussion. + +PMC Vote +======== + +To: [private@activemq.apache.org](mailto:private@activemq.apache.org) +Subject: \[VOTE\] Invite to join Apache ActiveMQ PMC + +After positive discussion considering ’s contributions as a committer, I would like to initiate a formal vote. + + + +This vote will follow the ASF process for committer votes and consensus approval (at least three binding +1 votes and no vetoes) + +The vote will be open for 72 hours. + +\[ \] +1 Accept as a PMC member of Apache ActiveMQ +\[ \] +0 +\[ \] -1 Do not accept at this time because... + +PMC Invite +========== + +To: +Cc: [private@activemq.apache.org](mailto:private@activemq.apache.org) +Subject: Invitation to join the Apache ActiveMQ PMC + +, +In recognition of your continued contributions to the project, the Apache ActiveMQ PMC has voted to invite you to join the PMC. I am writing on behalf of the PMC to give you the opportunity to either accept or reject this invitation by replying to [private@activemq.apache.org](mailto:private@activemq.apache.org). + +In making your decision, please see the following URL for more information on PMCs: + +[https://www.apache.org/dev/pmc.html](https://www.apache.org/dev/pmc.html) + +If you have questions before making a decision, please let us know. + diff --git a/point-to-point-with-multiple-consumers.md b/point-to-point-with-multiple-consumers.md new file mode 100644 index 0000000..51ba428 --- /dev/null +++ b/point-to-point-with-multiple-consumers.md @@ -0,0 +1,184 @@ +Apache ActiveMQ ™ -- Point to Point with multiple Consumers + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [Point to Point with multiple Consumers](point-to-point-with-multiple-consumers.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Note: I am in to JMS and active MQ. +I am writing an application and would like to use Active MQ as Queue for queuing up processing request and have them consumed by the next available node in a distributed system. (One producer many consumers) + +In the JMS spec it says that the behavior of a point to point (Queue) with mutiple consumers is "undefined". +The behavior I want is that each consumer would get the next message available and only one consumer would get any single message. You know, like a queue. + +What I observe in Active MQ is what I would expect. Even the use of client AKK messages seem to work the way I would expect. That is, in client ACK mode the message is only sent to one consumer but if that consumer dies without ACKing the message, the message is re posted to the queue. + +My question is, are my observations correct and is this expected behavior for Active MQ and can I rely on this behavior. + +Thanks, +Brian Mason +bmason@chrome.com + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/polo-page.md b/polo-page.md new file mode 100644 index 0000000..a2d1cf5 --- /dev/null +++ b/polo-page.md @@ -0,0 +1,176 @@ +Apache ActiveMQ ™ -- polo page + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [polo page](polo-page.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +[Full Size](https://cwiki.apache.org/confluence/plugins/gliffy/viewlargediagram.action?name=test&ceoid=50841&key=ACTIVEMQ&pageId=50841) + +![](https://cwiki.apache.org/confluence/download/attachments/50841/test.png?version=2&modificationDate=1372086219000) + +**hello** + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/previous-docs.md b/previous-docs.md new file mode 100644 index 0000000..f889095 --- /dev/null +++ b/previous-docs.md @@ -0,0 +1,147 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +The documentation is available in several formats, click on the relevant version to view or download. + +Available documentation for Apache ActiveMQ Artemis +--------------------------------------------------- + +Version + +User Manual + +Hacking Guide + +API + +2.3.0 + +[HTML](docs/2.3.0/index.html) [PDF](docs/2.3.0/book.pdf) [Mobi](docs/2.3.0/book.mobi) [ePub](docs/2.3.0/book.epub) + +[HTML](docs/2.3.0/hacking-guide/index.html) + +[HTML](docs/javadocs/javadoc-2.3.0/index.html) + +2.2.0 + +[HTML](docs/2.2.0/index.html) [PDF](docs/2.2.0/book.pdf) [Mobi](docs/2.2.0/book.mobi) [ePub](docs/2.2.0/book.epub) + +[HTML](docs/2.2.0/hacking-guide/index.html) + +[HTML](docs/javadocs/javadoc-2.2.0/index.html) + +2.1.0 + +[HTML](docs/2.1.0/index.html) [PDF](docs/2.1.0/book.pdf) [Mobi](docs/2.1.0/book.mobi) [ePub](docs/2.1.0/book.epub) + +[HTML](docs/2.1.0/hacking-guide/index.html) + +[HTML](docs/javadocs/javadoc-2.1.0/index.html) + +2.1.0 + +[HTML](docs/2.1.0/index.html) [PDF](docs/2.1.0/book.pdf) [Mobi](docs/2.1.0/book.mobi) [ePub](docs/2.1.0/book.epub) + +[HTML](docs/2.1.0/hacking-guide/index.html) + +[HTML](docs/javadocs/javadoc-2.1.0/index.html) + +2.0.0 + +[HTML](docs/2.0.0/index.html) [PDF](docs/2.0.0/book.pdf) [Mobi](docs/2.0.0/book.mobi) [ePub](docs/2.0.0/book.epub) + +[HTML](docs/2.0.0/hacking-guide/index.html) [PDF](docs/2.0.0/hacking-guide/book.pdf) [Mobi](docs/2.0.0/hacking-guide/book.mobi) [ePub](docs/2.0.0/hacking-guide/book.epub) + +[HTML](docs/javadocs/javadoc-2.0.0/index.html) + +1.5.5 + +[HTML](docs/1.5.5/index.html) [PDF](docs/1.5.5/book.pdf) [Mobi](docs/1.5.5/book.mobi) [ePub](docs/1.5.5/book.epub) + +[HTML](docs/1.5.5/hacking-guide/index.html) + +[HTML](docs/javadocs/javadoc-1.5.5/index.html) + +1.5.4 + +[HTML](docs/1.5.4/index.html) [PDF](docs/1.5.4/book.pdf) [Mobi](docs/1.5.4/book.mobi) [ePub](docs/1.5.4/book.epub) + +[HTML](docs/1.5.4/hacking-guide/index.html) + +[HTML](docs/javadocs/javadoc-1.5.3/index.html) + +1.5.3 + +[HTML](docs/1.5.3/index.html) [PDF](docs/1.5.3/book.pdf) [Mobi](docs/1.5.3/book.mobi) [ePub](docs/1.5.3/book.epub) + +[HTML](docs/1.5.3/hacking-guide/index.html) [PDF](docs/1.5.3/hacking-guide/book.pdf) [Mobi](docs/1.5.3/hacking-guide/book.mobi) [ePub](docs/1.5.3/hacking-guide/book.epub) + +[HTML](docs/javadocs/javadoc-1.5.3/index.html) + +1.5.2 + +[HTML](docs/1.5.2/index.html) [PDF](docs/1.5.2/book.pdf) [Mobi](docs/1.5.2/book.mobi) [ePub](docs/1.5.2/book.epub) + +[HTML](docs/1.5.2/hacking-guide/index.html) [PDF](docs/1.5.2/hacking-guide/book.pdf) [Mobi](docs/1.5.2/hacking-guide/book.mobi) [ePub](docs/1.5.2/hacking-guide/book.epub) + +[HTML](docs/javadocs/javadoc-1.5.2/index.html) + +1.5.1 + +[HTML](docs/1.5.1/index.html) [PDF](docs/1.5.1/book.pdf) [Mobi](docs/1.5.1/book.mobi) [ePub](docs/1.5.1/book.epub) + +[HTML](docs/1.5.1/hacking-guide/index.html) [PDF](docs/1.5.1/hacking-guide/book.pdf) [Mobi](docs/1.5.1/hacking-guide/book.mobi) [ePub](docs/1.5.1/hacking-guide/book.epub) + +[HTML](docs/javadocs/javadoc-1.5.1/index.html) + +1.5.0 + +[HTML](docs/1.5.0/index.html) [PDF](docs/1.5.0/book.pdf) [Mobi](docs/1.5.0/book.mobi) [ePub](docs/1.5.0/book.epub) + +[HTML](docs/1.5.0/hacking-guide/index.html) [PDF](docs/1.5.0/hacking-guide/book.pdf) [Mobi](docs/1.5.0/hacking-guide/book.mobi) [ePub](docs/1.5.0/hacking-guide/book.epub) + +[HTML](docs/javadocs/javadoc-1.5.0/index.html) + +1.4.0 + +[HTML](docs/1.4.0/index.html) [PDF](docs/1.4.0/activemq-artemis-1.4.0.pdf) [Mobi](docs/1.4.0/activemq-artemis-1.4.0.mobi) [ePub](docs/1.4.0/activemq-artemis-1.4.0.epub) + +[HTML](docs/1.4.0/hacking-guide/index.html) [PDF](docs/1.4.0/hacking-guide/activemq-artemis-hacking-guide-1.4.0.pdf) [Mobi](docs/1.4.0/hacking-guide/activemq-artemis-hacking-guide-1.4.0.mobi) [ePub](docs/1.4.0/hacking-guide/activemq-artemis-hacking-guide-1.4.0.epub) + +[HTML](docs/javadocs/javadoc-1.4.0/index.html) + +1.3.0 + +[HTML](docs/1.3.0/index.html) [PDF](docs/1.3.0/activemq-artemis-1.3.0.pdf) [Mobi](docs/1.3.0/activemq-artemis-1.3.0.mobi) [ePub](docs/1.3.0/activemq-artemis-1.3.0.epub) + +[HTML](docs/1.3.0/hacking-guide/index.html) [PDF](docs/1.3.0/hacking-guide/activemq-artemis-hacking-guide-1.3.0.pdf) [Mobi](docs/1.3.0/hacking-guide/activemq-artemis-hacking-guide-1.3.0.mobi) [ePub](docs/1.3.0/hacking-guide/activemq-artemis-hacking-guide-1.3.0.epub) + +[HTML](docs/javadocs/javadoc-1.3.0/index.html) + +1.2.0 + +[HTML](docs/1.2.0/index.html) [PDF](docs/1.2.0/activemq-artemis-1.2.0.pdf) [Mobi](docs/1.2.0/activemq-artemis-1.2.0.mobi) [ePub](docs/1.2.0/activemq-artemis-1.2.0.epub) + +[HTML](docs/1.2.0/hacking-guide/index.html) [PDF](docs/1.2.0/hacking-guide/activemq-artemis-hacking-guide-1.2.0.pdf) [Mobi](docs/1.2.0/hacking-guide/activemq-artemis-hacking-guide-1.2.0.mobi) [ePub](docs/1.2.0/hacking-guide/activemq-artemis-hacking-guide-1.2.0.epub) + +[HTML](docs/javadocs/javadoc-1.2.0/index.html) + +1.1.0 + +[HTML](docs/1.1.0/index.html) [PDF](docs/1.1.0/activemq-artemis-1.1.0.pdf) [Mobi](docs/1.1.0/activemq-artemis-1.1.0.mobi) [ePub](docs/1.1.0/activemq-artemis-1.1.0.epub) + +[HTML](docs/javadocs/javadoc-1.1.0/index.html) + +1.0.0 + +[HTML](docs/1.0.0/index.html) [PDF](docs/1.0.0/activemq-artemis-1.0.0.pdf) [Mobi](docs/1.0.0/activemq-artemis-1.0.0.mobi) [ePub](docs/1.0.0/activemq-artemis-1.0.0.epub) + +[HTML](docs/javadocs/javadoc-1.0.0/index.html) \ No newline at end of file diff --git a/previous-versions.md b/previous-versions.md new file mode 100644 index 0000000..a927853 --- /dev/null +++ b/previous-versions.md @@ -0,0 +1,176 @@ +Apache ActiveMQ ™ -- Previous Versions + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [Previous Versions](previous-versions.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +* [ActiveMQ 3 Networks of Brokers](activemq-3-networks-of-brokers.html "ActiveMQ 3 Networks of Brokers") +* [ActiveMQ 3 Transport Configurations](activemq-3-transport-configurations.html "ActiveMQ 3 Transport Configurations") +* [Advisory Support in ActiveMQ 3](advisory-support-in-activemq-3.html "Advisory Support in ActiveMQ 3") +* [Getting Started 3.x](getting-started-3x.html "Getting Started 3.x") +* [Running a 3.x Broker](running-a-3x-broker.html "Running a 3.x Broker") + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/privacy-policy.md b/privacy-policy.md new file mode 100644 index 0000000..fd7644d --- /dev/null +++ b/privacy-policy.md @@ -0,0 +1,19 @@ +Apache ActiveMQ ™ -- Privacy Policy + +[Community](community.html) > [Privacy Policy](privacy-policy.html) + + +Information about your use of this website is collected using server access logs and a tracking cookie. The collected information consists of the following: + +1. The IP address from which you access the website; +2. The type of browser and operating system you use to access our site; +3. The date and time you access our site; +4. The pages you visit; and +5. The addresses of pages from where you followed a link to our site. + +Part of this information is gathered using a tracking cookie set by the [Google Analytics](http://www.google.com/analytics/) service and handled by Google as described in their [privacy policy](http://www.google.com/privacy.html). See your browser documentation for instructions on how to disable the cookie if you prefer not to share this data with Google. + +We use the gathered information to help us make our site more useful to visitors and to better understand how and when our site is used. We do not track or collect personally identifiable information or associate gathered data with any personally identifying information from other sources. + +By using this website, you consent to the collection of this data in the manner and for the purpose described above. + diff --git a/producer-flow-control.md b/producer-flow-control.md new file mode 100644 index 0000000..d8101a8 --- /dev/null +++ b/producer-flow-control.md @@ -0,0 +1,115 @@ +Apache ActiveMQ ™ -- Producer Flow Control + +[Features](features.html) > [Message Dispatching Features](message-dispatching-features.html) > [Producer Flow Control](producer-flow-control.html) + + +Producer Flow Control +--------------------- + +In ActiveMQ 4.x flow control was implemented using TCP flow control. The underlying network connection of throttled consumers was suspended to enforce flow control limits. This strategy is very efficient but can lead to deadlocks if there are multiple producers and consumers sharing the same connection. + +As of ActiveMQ 5.0, we can now individually flow control each producer on a shared connection without having to suspend the entire connection. By 'flow control' we mean that if the broker detects that the memory limit for the destination, or the temp- or file-store limits for the broker, have been exceeded, then the flow of messages can be slowed down. The producer will be either blocked until resources are available _or_ will receive a JMSException: this behaviour is configurable and described in the section below on ``. + +It's worth noting that the default `` settings will cause the producer to _block_ when the `memoryLimit` or `` limits are reached: this blocking behaviour is sometimes misinterpreted as a 'hung producer', when in fact the producer is simply diligently waiting until space is available. + +* Messages that are sent synchronously will automatically use per producer flow control; this applies generally to persistent messages which are sent synchronously _unless_ you enable the `useAsyncSend` flag. + +* Producers that use [Async Sends](async-sends.html) \- generally speaking, producers of non-persistent messages - don't bother waiting for any acknowledgement from the broker; so, if a memory limit has been exceeded, you will _not_ get notfied. If you do want to be aware of broker limits being exceeded, you will need to configure the ProducerWindowSize connection option so that even async messages are flow controlled per producer. + +ActiveMQConnectionFactory connctionFactory = ... +connctionFactory.setProducerWindowSize(1024000); + +The ProducerWindowSize is the maximum number of bytes of data that a producer will transmit to a broker before waiting for acknowledgment messages from the broker that it has accepted the previously sent messages. + +Alternatively, if you're sending non-persisted messages (which are by default sent async), and want to be informed if the queue or topic's memory limit has been breached, then you can simply configure the connection factory to 'alwaysSyncSend'. While this is going to be slower, it will ensure that your message producer is informed immediately of memory issues. + +If you like, you can disable flow control for specific JMS queues and topics on the broker by setting the `producerFlowControl` flag to false on the appropriate destination policy in the Broker configuration - e.g. + + + + + + + + + +see [Broker Configuration](xml-configuration.html). + +Note that, since the introduction of the new file cursor in ActiveMQ 5.x, non-persisted messages are shunted into the temporary file store to reduce the amount of memory used for non-persistent messaging. As a result, you may find that a queue's memoryLimit is never reached, as the cursor doesn't use very much memory. If you really do want to keep all your non-persistent messages in memory, and stop producers when the limit is reached, you should configure the ``. + + + + + + + +The fragment above will ensure that all non-persistent queue messages are kept in memory, with each queue having a limit of 1Mb. + +### How Producer Flow Control works + +If you are sending a persistent message (so that a response of the [OpenWire](openwire.html) Message is expected then the broker will send the producer a [ProducerAck](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) message. This informs the producer that the previous sending window has been processed, so that it can now send another window. Its kinda like consumer acks but in reverse. + +#### Advantage + +So a nice producer might wait for a producer ack before sending more data, to avoid flooding the broker (and forcing the broker to block the entire connection if a slow consumer occurs). To see how this works in source code, check out the [ActiveMQMessageProducer](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) code. + +Though a client can ignore the producer ACKs altogether and the broker should just stall the transport if it has to for slow consumer handling; though this does mean it'll stall the entire connection. + +### Configure Client-Side Exceptions + +An alternative to the indefinite blocking of the `send()` operation when no space is free on the broker is to instead configure that an exception to be thrown on the client-side. By configuring the `sendFailIfNoSpace` property to `true`, the broker will cause the `send()` operation to fail with a `javax.jms.ResourceAllocationException`, which will propagate to the client. Below is an example of this configuration: + + + + + + + + + +The advantage of this property is that the client can catch the `javax.jms.ResourceAllocationException`, wait a bit and retry the `send()` operation instead of just hanging indefinitely. + +Starting in version 5.3.1 the `sendFailIfNoSpaceAfterTimeout` property has been added. This property causes the `send()` operation to fail with an exception on the client-side, but only after waiting the given amount of time. If space on the broker is still not freed after the configured amount of time, only then does the `send()` operation fail with an exception to the client-side. Below is an example: + + + + + + + + + +The timeout is defined in milliseconds so the example above waits for three seconds before failing the `send()` operation with an exception to the client-side. The advantage of this property is that it will block for the configured amount of time instead of failing immediately or blocking indefinitely. This property offers not only an improvement on the broker-side, but also an improvement for the client so it can catch the exception, wait a bit and retry the `send()` operation. + +Starting in version 5.16.0 the `sendFailIfNoSpace` and `sendFailIfNoSpaceAfterTimeout` can be configured on a per destination basis via [destination policies](per-destination-policies.html). + +Disabling Flow Control +---------------------- + +A common requirement is to disable flow control so that message dispatching continues until all available disk is used up by pending messages (whether persistent or non persistent messaging is configured). To do this enable [Message Cursors](message-cursors.html). + +System usage +------------ + +You can also slow down producers via some attributes on the `` element. Take a look at the following example: + + + + + + + + + + + + + + + +You can set limits of memory for `NON_PERSISTENT` messages, disk storage for `PERSITENT` messages and total usage for temporary messages, the broker will use before it slowdown producers. _Using the default settings shown above, the broker will block the `send()` call until some messages are consumed and space becomes available on the broker._ The default values are shown above, you will probably need to increase these values for your environment. + +PercentUsage + + Both StoreUsage and TempUsage support a percentLimit attribute where the limit is determined as a percentage of the total available. From version 5.15.x there is an additional related total attribute that can be used to explicitly set the total available such that the file system is not queried. This is useful in the case that only part of a disk partition is available to the broker or where the underlying file store reports > Long.MAX_VALUE available capacity (e.g: EFS) which will overflow the long return value of [java.io](http://java.io).File#getTotalSpace. Note that when a total is specified, that actual data available will not be validated agains the file system, just the store usage relative to that absolute total. + diff --git a/project-info.md b/project-info.md new file mode 100644 index 0000000..0ff2b44 --- /dev/null +++ b/project-info.md @@ -0,0 +1,132 @@ + ActiveMQ - Project Information + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* **Project Information** + * [About](index.html "About") + * [Project Summary](project-summary.html "Project Summary") + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Project Information +------------------- + +This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by [Maven](http://maven.apache.org) on behalf of the project. + +### Overview + +Document + +Description + +[About](index.html) + +The Apache Software Foundation provides support for the Apache community of open-source software projects. The Apache projects are characterized by a collaborative, consensus based development process, an open and pragmatic software license, and a desire to create high quality software that leads the way in its field. We consider ourselves not simply a group of projects sharing a server, but rather a community of developers and users. + +[Project Summary](project-summary.html) + +This document lists other related information of this project + +[Project Modules](modules.html) + +This document lists the modules (sub-projects) of this project. + +[Project License](license.html) + +This is a link to the definitions of project licenses. + +[Project Team](team-list.html) + +This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another. + +[Source Repository](source-repository.html) + +This is a link to the online source repository that can be viewed via a web browser. + +[Issue Tracking](issue-tracking.html) + +This is a link to the issue management system for this project. Issues (bugs, features, change requests) can be created and queried using this link. + +[Mailing Lists](mail-lists.html) + +This document provides subscription and archive information for this project's mailing lists. + +[Dependency Management](dependency-management.html) + +This document lists the dependencies that are defined through dependencyManagement. + +[Dependencies](dependencies.html) + +This document lists the project's dependencies and provides information on each dependency. + +[Dependency Convergence](dependency-convergence.html) + +This document presents the convergence of dependency versions across the entire project, and its sub modules. + +[Continuous Integration](integration.html) + +This is a link to the definitions of all continuous integration processes that builds and tests code on a frequent, regular basis. + +[Plugin Management](plugin-management.html) + +This document lists the plugins that are defined through pluginManagement. + +[Project Plugins](plugins.html) + +This document lists the build plugins and the report plugins used by this project. + +[Distribution Management](distribution-management.html) + +This document provides informations on the distribution management of this project. + diff --git a/project-reports.md b/project-reports.md new file mode 100644 index 0000000..1dd1edb --- /dev/null +++ b/project-reports.md @@ -0,0 +1,67 @@ + ActiveMQ - Generated Reports + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") +* **Project Reports** + * [Test JavaDocs](testapidocs/index.html "Test JavaDocs") + * [JavaDocs](apidocs/index.html "JavaDocs") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Generated Reports +----------------- + +This document provides an overview of the various reports that are automatically generated by [Maven](http://maven.apache.org) . Each report is briefly described below. + +### Overview + +Document + +Description + +[Test JavaDocs](testapidocs/index.html) + +Test JavaDoc API documentation. + +[JavaDocs](apidocs/index.html) + +JavaDoc API documentation. + diff --git a/project-summary.md b/project-summary.md new file mode 100644 index 0000000..7719e3c --- /dev/null +++ b/project-summary.md @@ -0,0 +1,118 @@ + ActiveMQ - Project Summary + +ActiveMQ + +* * * + +Last Published: 2012-10-05  | Version: 5.7.0 + +[ActiveMQ](./ "ActiveMQ") + +* * * + +##### Modules + +* [ActiveMQ :: All JAR bundle](activemq-all/index.html "ActiveMQ :: All JAR bundle") +* [ActiveMQ :: Camel](activemq-camel/index.html "ActiveMQ :: Camel") +* [ActiveMQ :: Console](activemq-console/index.html "ActiveMQ :: Console") +* [ActiveMQ :: Core](activemq-core/index.html "ActiveMQ :: Core") +* [ActiveMQ :: File Server](activemq-fileserver/index.html "ActiveMQ :: File Server") +* [ActiveMQ :: JAAS](activemq-jaas/index.html "ActiveMQ :: JAAS") +* [ActiveMQ :: Blueprint](activemq-blueprint/index.html "ActiveMQ :: Blueprint") +* [ActiveMQ :: Apache Karaf](activemq-karaf/index.html "ActiveMQ :: Apache Karaf") +* [ActiveMQ :: LevelDB](activemq-leveldb/index.html "ActiveMQ :: LevelDB") +* [ActiveMQ :: Openwire Generator](activemq-openwire-generator/index.html "ActiveMQ :: Openwire Generator") +* [ActiveMQ :: Optional](activemq-optional/index.html "ActiveMQ :: Optional") +* [ActiveMQ :: Pool](activemq-pool/index.html "ActiveMQ :: Pool") +* [ActiveMQ :: RA](activemq-ra/index.html "ActiveMQ :: RA") +* [ActiveMQ :: RAR](activemq-rar/index.html "ActiveMQ :: RAR") +* [ActiveMQ :: Run Jar](activemq-run/index.html "ActiveMQ :: Run Jar") +* [ActiveMQ :: Spring](activemq-spring/index.html "ActiveMQ :: Spring") +* [ActiveMQ :: Tooling](activemq-tooling/index.html "ActiveMQ :: Tooling") +* [ActiveMQ :: Web](activemq-web/index.html "ActiveMQ :: Web") +* [ActiveMQ :: Web Demo](activemq-web-demo/index.html "ActiveMQ :: Web Demo") +* [ActiveMQ :: Web Console](activemq-web-console/index.html "ActiveMQ :: Web Console") +* [ActiveMQ :: XMPP](activemq-xmpp/index.html "ActiveMQ :: XMPP") +* [ActiveMQ :: Integration Tests](tests/index.html "ActiveMQ :: Integration Tests") +* [ActiveMQ :: Assembly](apache-activemq/index.html "ActiveMQ :: Assembly") +* [ActiveMQ :: KahaDB](kahadb/index.html "ActiveMQ :: KahaDB") + +##### Project Documentation + +* [Project Information](project-info.html "Project Information") + * [About](index.html "About") + * **Project Summary** + * [Project Modules](modules.html "Project Modules") + * [Project License](license.html "Project License") + * [Project Team](team-list.html "Project Team") + * [Source Repository](source-repository.html "Source Repository") + * [Issue Tracking](issue-tracking.html "Issue Tracking") + * [Mailing Lists](mail-lists.html "Mailing Lists") + * [Dependency Management](dependency-management.html "Dependency Management") + * [Dependencies](dependencies.html "Dependencies") + * [Dependency Convergence](dependency-convergence.html "Dependency Convergence") + * [Continuous Integration](integration.html "Continuous Integration") + * [Plugin Management](plugin-management.html "Plugin Management") + * [Project Plugins](plugins.html "Project Plugins") + * [Distribution Management](distribution-management.html "Distribution Management") +* [Project Reports](project-reports.html "Project Reports") + + [![Built by Maven](./images/logos/maven-feather.png)](http://maven.apache.org/ "Built by Maven") + +Project Summary +--------------- + +### Project Information + +Field + +Value + +Name + +ActiveMQ + +Description + +The Apache Software Foundation provides support for the Apache community of open-source software projects. The Apache projects are characterized by a collaborative, consensus based development process, an open and pragmatic software license, and a desire to create high quality software that leads the way in its field. We consider ourselves not simply a group of projects sharing a server, but rather a community of developers and users. + +Homepage + +[http://activemq.apache.org](http://activemq.apache.org) + +### Project Organization + +Field + +Value + +Name + +The Apache Software Foundation + +URL + +[http://www.apache.org/](http://www.apache.org/) + +### Build Information + +Field + +Value + +GroupId + +org.apache.activemq + +ArtifactId + +activemq-parent + +Version + +5.7.0 + +Type + +pom + diff --git a/projects-using-activemq.md b/projects-using-activemq.md new file mode 100644 index 0000000..e000055 --- /dev/null +++ b/projects-using-activemq.md @@ -0,0 +1,22 @@ +Apache ActiveMQ ™ -- Projects Using ActiveMQ + +[Community](community.html) > [Projects Using ActiveMQ](projects-using-activemq.html) + + +* [Apache Camel](http://activemq.apache.org/camel/) is a POJO based routing and mediation framework +* [Apache CXF](http://incubator.apache.org/cxf/) is a JAX-WS client and web services framework +* [Apache Geronimo](http://geronimo.apache.org/) is the J2EE server project of the Apache Software Foundation. +* [Apache ServiceMix](http://incubator.apache.org/servicemix/) an open source Enterprise Service Bus (ESB) based around the Java Business Integration specification (JSR 208). ServiceMix consists of a JBI container and component suite, massive [connectivity](http://incubator.apache.org/servicemix/Components) with complete integration with Spring and Geronimo as well as supporting straight through, SEDA and clustered message flows, smart routing and transformations and orchestration via BPEL. +* [Apache Jetspeed](http://portals.apache.org/jetspeed-2/) is the Apache enterprise portal. +* [Apache Directory](http://directory.apache.org/) is the Apache LDAP and Directory services project. +* [Apache TomEE](http://openejb.apache.org) ActiveMQ is the default JMS provider. +* [Lingo](http://lingo.codehaus.org/) a remoting framework for [Spring](http://www.springframework.org/) which use JMS and ActiveMQ by default. +* [Eclipse](http://www.eclipse.org/) is integrating ActiveMQ into the real time editing features for team development +* [ActiveCluster](http://activecluster.codehaus.org/) is a clustering API with an implementation which uses JMS and ActiveMQ by default. +* [ActiveSOAP](http://activesoap.codehaus.org/) is a lightweight and fast SOAP stack with pluggable transports +* [OpenIM Java Jabber ® Server](http://www.open-im.net/en/) is an open-source Java implementation (BSD License) of Jabber Instant Messager +* [Mule](http://mule.codehaus.org/) is an Enterprise Service Bus (ESB) messaging framework. It is a scalable, highly distributable object broker that can seamlessly handle interactions with services and applications using disparate transport and messaging technologies. +* [plan/b](http://planb.cloudnine.net.nz/) a distributed backup system +* [Hermes](http://www.hermesjms.com/) is a Swing application that allows you to interact with JMS providers. Hermes will work with any JMS enabled transport making it easy to browse or seach queues and topics, copy (via drag and drop) messages and delete them. +* [SpringSide](http://sourceforge.net/projects/springside/) Pragmatic Enterprise Application KickStart and Common Library Stack. Use Spring Framework as core,provided a enterprise application develop platform and demo the best practice in enterprise application. + diff --git a/proposed-c-client-architecture.md b/proposed-c-client-architecture.md new file mode 100644 index 0000000..01c1d51 --- /dev/null +++ b/proposed-c-client-architecture.md @@ -0,0 +1,17 @@ +Apache ActiveMQ ™ -- Proposed C Client Architecture + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Design Documents](design-documents.html) > [Proposed C Client Architecture](proposed-c-client-architecture.html) + + +4/16/06 - Attaching wire_formats.pdf - a first cut at defining all of the commands for both openwire an stomp.  Working toward an architecture that will support both.  + +///////////////////////////////////////////////  + +Given that there are several separate efforts going on now toward the common goal of creating an ActiveMQ c++ client, I've put together a [doc](http://docs.codehaus.org/download/attachments/48149/ActiveMQClientArchitecture.pdf)that attempts to merge our complete set of goals and propose an architecture (in rough form) that meets those goals.  I've stored the document here because it was too large for the distribution list. + +Please review and provide feedback at your earliest convenience. + + Regards, + +Nathan Mittler  + diff --git a/protocols.md b/protocols.md new file mode 100644 index 0000000..74829c4 --- /dev/null +++ b/protocols.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- Protocols + +[Connectivity](connectivity.html) > [Protocols](protocols.html) + + +Apache ActiveMQ is a message broker which supports multiple wire level protocols for maximum interoperability. + +* [AMQP](amqp.html) +* [AUTO](auto.html) +* [MQTT](mqtt.html) +* [OpenWire](openwire.html) +* [REST](rest.html) +* [RSS and Atom](rss-and-atom.html) +* [Stomp](stomp.html) +* [WSIF](wsif.html) +* [WS Notification](ws-notification.html) +* [XMPP](xmpp.html) + diff --git a/pure-master-slave.md b/pure-master-slave.md new file mode 100644 index 0000000..3ecf66c --- /dev/null +++ b/pure-master-slave.md @@ -0,0 +1,108 @@ +Apache ActiveMQ ™ -- Pure Master Slave + +[Features](features.html) > [Clustering](clustering.html) > [MasterSlave](masterslave.html) > [Pure Master Slave](pure-master-slave.html) + + +### Pure Master Slave + +This feature has been deprecated and will be removed in version 5.8 + +This feature will be removed in 5.8 as it has not evolved to be production ready. +You are advised to use [shared storage master/slave](masterslave.html) or the [Replicated LevelDB Store](replicated-leveldb-store.html). +See [AMQ-4165](https://issues.apache.org/jira/browse/AMQ-4165) + +A Pure Master Slave configuration provides a basic shared nothing, fully replicated topology which does not depend on a shared file system or shared database. + +### How Pure Master Slave works + +* A slave of a master broker consumes all message states from the master - messages, acknowledgments and transactional states. + Whilst a Slave is actively connected to the Master - it does not allow or start any network or transport connectors, it's sole purpose is to duplicate the state of the master. + +* The master broker will only respond to a client when a message exchange has been successfully passed to the slave. For example, a commit + in a clients transaction will not complete until the master and the slave have processed the commit. + +* In the event the master fails (e.g. hardware failure) the slave has optionally two modes of operation + 1. starts all it's network and transport connectors - allowing clients connected to the master to resume on the slave. + 2. or can be configured to close down. In this mode, the slave is simply used to duplicate state for the master. + +* clients should use a failover transport for connecting to the master broker first and then the slave. e.g. using a URL such as + +failover://(tcp://masterhost:61616,tcp://slavehost:61616)?randomize=false + +The **randomize** property just disables randomness so that the transport will always try the master first, then the slave if it can't connect to that. Note that the slave does not accept connections until it becomes the master + +### Limitations of Pure Master Slave + +* Only one slave can be connected to the Master +* A failed master cannot be re-introduced without shutting down the the slave broker (no automatic failback) +* There is no automatic synchronization between brokers. This is a manual process. + +### Recovering a Pure Master Slave topology + +This is a manual process - once a master has failed, the only sure way to ensure that the toplogy is synchronized again is manually: + +* shutdown the slave broker (The clients do not need to be shutdown - they will wait until the topology is re-established if they are failover clients +* copy the data directory from the slave over the data directory of the master broker +* re-start the master and the slave + +### Configuring Pure Master Slave + +You should not configure a connection between the master and a slave. The connection is automatically established with the slave's configuration. If you explicitly configure a network connection, you may encounter race conditions when the master broker is under heavy load. + +A master broker doesn't need any special configuration - it's a normal broker until a slave broker attaches itself. +To identify a broker as a slave - there is just one property to set (see below) as this [example shows](http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/ft/slave2.xml) \- so configuration is nice and easy: + + + + + + + + + + + +Broker Property + +default + +Description + +masterConnectorURI + +null + +URI to the master broker e.g. **_tcp://masterhost:62001_** + +shutdownOnMasterFailure + +false + +if true, the slave will shut down if the master fails otherwise the slave will take over as being the new master. The slave ensures that there is a separate copy of each message and acknowledgement on another machine which can protect against catastrophic hardware failure. If the master fails you might want the slave to shut down as well as you may always want to duplicate messages to 2 physical locations to prevent message loss on catastrophic data centre or hardware failure. If you would rather the system keep on running after a master failure then leave this flag as false. + +waitForSlave + +false + +version 5.2+, if true, a master will wait till a slave has attached before completing its startup sequence + +shutdownOnSlaveFailure + +false + +version 5.2+, if true, a master will shutdown if the slave connection is lost, ensuring that the master will not become out of sync with the slave. + +### Configuring the authentication of the Slave + +In ActiveMQ 4.1 or later you can use a **** element as an alternative XML configuration mechanism as shown in the following [example](http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/ft/slave2.xml) to configure the user and password that the slave will use to connect to the master + + + + + + + + + + + diff --git a/python.md b/python.md new file mode 100644 index 0000000..9cd30fe --- /dev/null +++ b/python.md @@ -0,0 +1,173 @@ +Apache ActiveMQ ™ -- Python + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [Python](python.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.7.0/activemq-core/apidocs/) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Python Support +-------------- + +For Python support we recommend the [Python Stomp Client](http://stomp.github.com/implementations.html) + +Alternatively, you can try [pyactivemq](http://code.google.com/p/pyactivemq/), which is a Python wrapper for the ActiveMQ C++ Library. Because the ActiveMQ C++ library supports both Stomp and Openwire, pyactivemq does too. + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/qos.md b/qos.md new file mode 100644 index 0000000..d0a9839 --- /dev/null +++ b/qos.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- QoS + +[Community](community.html) > [FAQ](faq.html) > [Terminology](terminology.html) > [QoS](qos.html) + + +QoS is a MOM abbreviation of the term _Quality of Service_. There are many different kinds of messaging with different qualities of service such as + +* topics versus queues +* durable messaging versus _reliable_ (some buffering takes place but if a consumer is down long enough the messages are discarded) +* message timeout + +etc. + diff --git a/quicklinks.md b/quicklinks.md new file mode 100644 index 0000000..36812fd --- /dev/null +++ b/quicklinks.md @@ -0,0 +1,6 @@ +Apache ActiveMQ ™ -- QuickLinks + +[Site](site.html) > [QuickLinks](quicklinks.html) + + + diff --git a/redelivery-policy.md b/redelivery-policy.md new file mode 100644 index 0000000..f2c60dc --- /dev/null +++ b/redelivery-policy.md @@ -0,0 +1,94 @@ +Apache ActiveMQ ™ -- Redelivery Policy + +[Features](features.html) > [Consumer Features](consumer-features.html) > [Redelivery Policy](redelivery-policy.html) + + +Redelivery Policy +----------------- + +Detail on when messages are redelivered to a client can be found in the [Message Redelivery and DLQ Handling](message-redelivery-and-dlq-handling.html) section. You can configure the [RedeliveryPolicy](http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/RedeliveryPolicy.java?view=markup) on your [ActiveMQConnectionFactory](http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnectionFactory.java?view=markup) or [ActiveMQConnection](http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/ActiveMQConnection.java?view=markup) to customize exactly how you want the redelivery to work. + +You can use Java code, Spring or the [Connection Configuration URI](connection-configuration-uri.html) to customize this. + +### Available Properties + +Property + +Default Value + +Description + +`backOffMultiplier` + +`5` + +The back-off multiplier. + +`collisionAvoidanceFactor` + +`0.15` + +The percentage of range of collision avoidance if enabled. + +`initialRedeliveryDelay` + +`1000L` + +The initial redelivery delay in milliseconds. + +`maximumRedeliveries` + +`6` + +Sets the maximum number of times a message will be redelivered before it is considered a **poisoned pill** and returned to the broker so it can go to a Dead Letter Queue. + +Set to **`-1`** for unlimited redeliveries. + +`maximumRedeliveryDelay` + +`-1` + +Sets the maximum delivery delay that will be applied if the **`useExponentialBackOff`** option is set. (use value **`-1`** to define that no maximum be applied) (v5.5). + +`redeliveryDelay` + +`1000L` + +The delivery delay if **`initialRedeliveryDelay=0`** (v5.4). + +`useCollisionAvoidance` + +`false` + +Should the redelivery policy use collision avoidance. + +`useExponentialBackOff` + +`false` + +Should exponential back-off be used, i.e., to exponentially increase the timeout. + +RedeliveryPolicy per Destination +-------------------------------- + +As of ActiveMQ v5.7.0 you can now configure a [RedeliveryPolicy](http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/RedeliveryPolicy.java?view=markup) on a per-destination bases. The **`ActiveMQConnection`** factory class now exposes a [RedeliveryPolicyMap](http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/broker/region/policy/RedeliveryPolicyMap.java?view=markup) property that allows to assign a RedeliveryPolicy using named destinations or using destination wildcards. The code snipped below shows how to configure a different [RedeliveryPolicy](http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/RedeliveryPolicy.java?view=markup) for Topics and Queues. + + ActiveMQConnection connection ... // Create a connection + + RedeliveryPolicy queuePolicy = new RedeliveryPolicy(); + queuePolicy.setInitialRedeliveryDelay(0); + queuePolicy.setRedeliveryDelay(1000); + queuePolicy.setUseExponentialBackOff(false); + queuePolicy.setMaximumRedeliveries(2); + + RedeliveryPolicy topicPolicy = new RedeliveryPolicy(); + topicPolicy.setInitialRedeliveryDelay(0); + topicPolicy.setRedeliveryDelay(1000); + topicPolicy.setUseExponentialBackOff(false); + topicPolicy.setMaximumRedeliveries(3); + + // Receive a message with the JMS API + RedeliveryPolicyMap map = connection.getRedeliveryPolicyMap(); + map.put(new ActiveMQTopic(">"), topicPolicy); + map.put(new ActiveMQQueue(">"), queuePolicy); + diff --git a/release-1.0.md b/release-1.0.md new file mode 100644 index 0000000..c668640 --- /dev/null +++ b/release-1.0.md @@ -0,0 +1,51 @@ + Apollo 1.0 + +* [Apollo 1.7.1](../../index.html) +* [Developers](../../community/developers.html) +* [Community](../../community/index.html) +* [Download](../../download.html) + +The [Apache ActiveMQ Project](http://activemq.apache.org) is pleased to announce the availability of Apollo 1.0. ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. Apollo is the fastest and most robust STOMP server. + +Apollo Features: + +* [Stomp 1.0](http://stomp.github.com/stomp-specification-1.0.html) Protocol Support +* [Stomp 1.1](http://stomp.github.com/stomp-specification-1.1.html) Protocol Support +* [Topics and Queues](http://activemq.apache.org/apollo/documentation/user-manual.html#Destination_Types) +* [Queue Browsers](http://activemq.apache.org/apollo/documentation/user-manual.html#Browsing_Subscriptions) +* [Durable Subscriptions on Topics](http://activemq.apache.org/apollo/documentation/user-manual.html#Topic_Durable_Subscriptions) +* [Mirrored Queues](http://activemq.apache.org/apollo/documentation/user-manual.html#Mirrored_Queues) +* [Reliable Messaging](http://activemq.apache.org/apollo/documentation/user-manual.html#Reliable_Messaging) +* [Message Expiration](http://activemq.apache.org/apollo/documentation/user-manual.html#Message_Expiration) +* [Message Swapping](http://activemq.apache.org/apollo/documentation/architecture.html#Message_Swapping) +* [Message Selectors](http://activemq.apache.org/apollo/documentation/user-manual.html#Message_Selectors) +* [JAAS Authentication](http://activemq.apache.org/apollo/documentation/user-manual.html#Authentication) +* [ACL based Authorization](http://activemq.apache.org/apollo/documentation/user-manual.html#Authorization) +* [SSL/TLS Support](http://activemq.apache.org/apollo/documentation/user-manual.html#Using_SSL_TLS) and Certificate based Authentication +* [REST Management API](http://activemq.apache.org/apollo/documentation/management-api.html) + +Noteworthy changes since the last beta include: + +* \[APLO-120\] - Add a —with-ssl option to the apollo create command to control if an SSL enabled configuration is created. +* \[APLO-134\] - LevelDB store should use a file lock so a broker instance get exclusive access to the store data. +* \[APLO-135\] - Add example to the distro that shows how you can boot up an embedded broker in a Java app. +* \[APLO-109\] - Apollo should run with assertions enabled by default unless APOLLO_ASSERTIONS=false is set in the env. +* \[APLO-110\] - Provide more information in case of authentication failure +* \[APLO-112\] - Support for TLS 1.2 +* \[APLO-118\] - All configuration attributes which configure memory/disk usage sizes should support values like “1k” “2G” etc. +* \[APLO-124\] - call the LoginModule.logout method +* \[APLO-125\] - Client authentication error message +* \[APLO-128\] - Simplify the leveldb-store's log record format so that every record has a checksum which can be used to quickly validate all read data in case your paranoid about data corruption in your FS +* \[APLO-130\] - Allow acquired queue entries to get swapped. This is especially handy if the entry was already persisted anyways. +* \[APLO-131\] - Stores should track “storage schema version number” to detect when the store is incompatible with a new broker version. +* \[APLO-136\] - Support dots in a dsub name +* \[APLO-141\] - The connection screen displays 'transport: tcp' even though the connection came in over the tls port. +* \[APLO-139\] - Simplify the JSON encoding of the @class field + +Further information: + +* [Download](http://activemq.apache.org/apollo/download.html) +* [Issues Fixed](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12316435&styleName=Text&projectId=12311310&Create=Create) +* [Documentation](http://activemq.apache.org/apollo/versions/1.0/website/documentation) + +[Feedback](http://activemq.apache.org/community/index.html) is always welcome! \ No newline at end of file diff --git a/release-1.1.md b/release-1.1.md new file mode 100644 index 0000000..8937fb8 --- /dev/null +++ b/release-1.1.md @@ -0,0 +1,23 @@ + Apollo 1.1 + +* [Apollo 1.7.1](../../index.html) +* [Developers](../../community/developers.html) +* [Community](../../community/index.html) +* [Download](../../download.html) + +The [Apache ActiveMQ Project](http://activemq.apache.org) is pleased to announce the availability of Apollo 1.1. ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. + +This release fixes several bugs, improves performance and introduces a few new features like: + +* \[APLO-145\] - Support WebSockets +* \[APLO-152\] - Support an option to have topics retain the last message sent to it + +This version introduces a change to the LevelDB store's file format so make sure you follow the [Migration Guide](http://activemq.apache.org/apollo/versions/1.1/website/documentation/migration-guide.html) if your upgradig from 1.0. + +For further information see: + +* [Download](http://activemq.apache.org/apollo/download.html) +* [Issues Fixed](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12316477&styleName=Text&projectId=12311310&Create=Create) +* [Documentation](http://activemq.apache.org/apollo/versions/1.1/website/documentation) + +[Feedback](http://activemq.apache.org/community/index.html) is always welcomed! \ No newline at end of file diff --git a/release-1.2.md b/release-1.2.md new file mode 100644 index 0000000..7195c45 --- /dev/null +++ b/release-1.2.md @@ -0,0 +1,30 @@ + Apollo 1.2 + +* [Apollo 1.7.1](../../index.html) +* [Developers](../../community/developers.html) +* [Community](../../community/index.html) +* [Download](../../download.html) + +The [Apache ActiveMQ Project](http://activemq.apache.org) is pleased to announce the availability of Apollo 1.2. ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. + +This release fixes several bugs, improves performance and introduces a few new features like: + +* Support Dead Letter Queues +* Support dropping messages on queues that are full. +* Allow customizing the settings of the per subscription queues created when slow_consumer_policy="queue” on a topic +* Support allowing cross origin resource sharing (CORS) of web admin APIs and websocket APIs. +* Experimental support for lossy UDP based messaging +* Experimental support for Swagger based REST API documentation acceisble at http://localhost:61680/api/index.html +* Include examples of how to use MQTT on Apollo +* Added a total disk space used to the reporting metrics +* You can now select the private key to be used for SSL in the keystore +* Sender IP address is now passed as a JAAS principal +* You can now force client side certs on SSL connections + +For further information see: + +* [Download](http://activemq.apache.org/apollo/download.html) +* [Issues Fixed](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12319854&styleName=Text&projectId=12311310&Create=Create) +* [Documentation](http://activemq.apache.org/apollo/versions/1.2/website/documentation) + +[Feedback](http://activemq.apache.org/community/index.html) is always welcomed! \ No newline at end of file diff --git a/release-1.3.md b/release-1.3.md new file mode 100644 index 0000000..1fd108c --- /dev/null +++ b/release-1.3.md @@ -0,0 +1,25 @@ + Apollo 1.3 + +* [Apollo 1.7.1](../../index.html) +* [Developers](../../community/developers.html) +* [Community](../../community/index.html) +* [Download](../../download.html) + +The [Apache ActiveMQ Project](http://activemq.apache.org) is pleased to announce the availability of Apollo 1.3. ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. + +This release fixes several bugs, improves performance and introduces a few new features: + +* \[APLO-160\] - Reduce memory overhead of many connections. +* \[APLO-188\] - Add “Access-Control-Allow-Methods” and “Access-Control-Allow-Headers” to CORS requests +* \[APLO-192\] - “java.lang.AssertionError: Dispatch queue 'virtual-host' was not executing” occurs when queue or dsub is deleted via web admin +* \[APLO-198\] - Apollo sometimes does not send all the messages in a queue +* \[APLO-193\] - Support filtering outgoing messages +* \[APLO-196\] - Allow protocol filters to drop a messages + +For further information see: + +* [Download](http://activemq.apache.org/apollo/download.html) +* [Issues Fixed](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12320358&styleName=Text&projectId=12311310&Create=Create) +* [Documentation](http://activemq.apache.org/apollo/versions/1.3/website/documentation) + +[Feedback](http://activemq.apache.org/community/index.html) is always welcomed! \ No newline at end of file diff --git a/release-1.4.md b/release-1.4.md new file mode 100644 index 0000000..c2529b7 --- /dev/null +++ b/release-1.4.md @@ -0,0 +1,21 @@ + Apollo 1.4 + +* [Apollo 1.7.1](../../index.html) +* [Developers](../../community/developers.html) +* [Community](../../community/index.html) +* [Download](../../download.html) + +The [Apache ActiveMQ Project](http://activemq.apache.org) is pleased to announce the availability of Apollo 1.4. ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. + +This release fixes several bugs especially around Openwire and WebSockets and introduces a few improvements like: + +* \[APLO-206\] - Load balance of job queues when 'credit:1,0' is used on the consumer. +* \[APLO-212\] - Allow topic deletion via the REST API + +For further information see: + +* [Download](http://activemq.apache.org/apollo/download.html) +* [Issues Fixed](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12320770&styleName=Text&projectId=12311310&Create=Create) +* [Documentation](http://activemq.apache.org/apollo/versions/1.4/website/documentation) + +[Feedback](http://activemq.apache.org/community/index.html) is always welcomed! \ No newline at end of file diff --git a/release-1.5.md b/release-1.5.md new file mode 100644 index 0000000..90a7c8a --- /dev/null +++ b/release-1.5.md @@ -0,0 +1,35 @@ + Apollo 1.5 + +* [Apollo 1.7.1](../../index.html) +* [Developers](../../community/developers.html) +* [Community](../../community/index.html) +* [Download](../../download.html) + +The [Apache ActiveMQ Project](http://activemq.apache.org) is pleased to announce the availability of Apollo 1.5. ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. + +This release fixes several bugs especially around Openwire and WebSockets and introduces a few improvements like: + +* \[APLO-30\] - Support the Openwire Protocol +* \[APLO-177\] - Add a UDP based protocol support to Apollo +* \[APLO-232\] - Add support for enforcing a message count based quota on queues +* \[APLO-239\] - Aggregate connection-level messages (and bytes) metrics at connector and broker level +* \[APLO-242\] - Support STOMP frames over UDP +* \[APLO-260\] - Contribute the FuseSource MQTT impl to Apache and included as part of the default Apollo distribution. +* \[APLO-261\] - Support the 1.2 STOMP spec. +* \[APLO-163\] - Auto tune the per-connection buffers (receive_buffer_size and send_buffer_size) +* \[APLO-179\] - Remove the list of connections from the toplevel REST URI +* \[APLO-200\] - Support configuring protocol filters +* \[APLO-243\] - Do not lower the maximum number of open files +* \[APLO-250\] - add_user_header should prevent forging +* \[APLO-251\] - Share a single queue for all consumers on topic configured with slow_consumer_policy="queue” +* \[APLO-259\] - Support Telnet clients that send '\\r\\n' character to terminate a line +* \[APLO-262\] - Documented OpenWire features +* \[APLO-263\] - Remove slf4j from openwire examples + +For further information see: + +* [Download](http://activemq.apache.org/apollo/download.html) +* [Issues Fixed](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311310&version=12321266) +* [Documentation](http://activemq.apache.org/apollo/versions/1.5/website/documentation) + +[Feedback](http://activemq.apache.org/community/index.html) is always welcomed! \ No newline at end of file diff --git a/release-1.6.md b/release-1.6.md new file mode 100644 index 0000000..85dfb69 --- /dev/null +++ b/release-1.6.md @@ -0,0 +1,28 @@ + Apollo 1.6 + +* [Apollo 1.7.1](../../index.html) +* [Developers](../../community/developers.html) +* [Community](../../community/index.html) +* [Download](../../download.html) + +The [Apache ActiveMQ Project](http://activemq.apache.org) is pleased to announce the availability of Apollo 1.6. ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. + +This release fixes several bugs especially around Openwire and WebSockets and introduces a few improvements like: + +* \[APLO-275\] - Add AMQP 1.0 Protocol Support +* \[APLO-273\] - STOMP 1.1 Over WebSocket +* \[APLO-268\] - Examples for stompest Python STOMP client +* \[APLO-280\] - Clarification about message groups +* \[APLO-19\] - Support message groups +* \[APLO-271\] - Integrate jolokia into Apollo for nice REST based access to JMX. +* \[APLO-272\] - Support creating topics and queues via the REST management api. +* \[APLO-274\] - Support accessing environment variables via ${env.*} references in the the config file. +* \[APLO-278\] - Support option on queues to control if a round robin message distribution strategy should be used when multiple consumer are attached to the queue. + +For further information see: + +* [Download](http://activemq.apache.org/apollo/download.html) +* [Issues Fixed](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311310&version=12322470) +* [Documentation](http://activemq.apache.org/apollo/versions/1.6/website/documentation) + +[Feedback](http://activemq.apache.org/community/index.html) is always welcomed! \ No newline at end of file diff --git a/release-1.7.md b/release-1.7.md new file mode 100644 index 0000000..141d87c --- /dev/null +++ b/release-1.7.md @@ -0,0 +1,44 @@ + Apollo 1.7 + +* [Apollo 1.7.1](../../index.html) +* [Developers](../../community/developers.html) +* [Community](../../community/index.html) +* [Download](../../download.html) + +The [Apache ActiveMQ Project](http://activemq.apache.org) is pleased to announce the availability of Apollo 1.7. ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. + +This release fixes several bugs: + +* \[APLO-287\] - SSL errors with Java 7 (Diffie-Hellman cypher suite sessions) +* \[APLO-305\] - Wrong exist status codes in the init scripts! +* \[APLO-308\] - Filesystem permissions in released package are broken.. +* \[APLO-310\] - Wildcard durable subs do not receive messages from topics created after the durable sub is created. +* \[APLO-315\] - Apollo should protect itself against clients that send many frames with receipt requests, but which do not read the socket for those receipts. +* \[APLO-319\] - Don't auto delete Topics if it's holding retained messages +* \[APLO-320\] - Occasionally on restart 'Invalid log position:' warning messages get logged +* \[APLO-328\] - cors_origin configuration attribute of the the web connectors not properly setting the Access-Control-Allow-Headers +* \[APLO-330\] - Support using a different Authorizer Authenticator implementations. +* \[APLO-338\] - PeriodStat buffer in Broker grows infinitely +* \[APLO-339\] - java.nio.channels.CancelledKeyException +* \[APLO-346\] - Debug log doesn't log a deleting queue +* \[APLO-347\] - Action not Authorized Errors when viewing admin interface over HTTPS +* \[APLO-349\] - Empty STOMP Header Name is Allowed + +And introduces improvements like: + +* \[APLO-296\] - Support configuring the LevelDB auto compaction frequency +* \[APLO-312\] - Apollo fails to bumb up the ulimit! +* \[APLO-325\] - Allow larger text messages on websocket connection +* \[APLO-348\] - Decouple cli argument parsing from the Karaf version used using Airline to parse the args +* \[APLO-213\] - Support an option to set the JMSXUserID openwire header based on the authenticated user. +* \[APLO-313\] - Avoid blocking producers if consumers are not likely to catch up within a few seconds. +* \[APLO-314\] - If the leveldb paranoid_checks option is enabled, verify the integrity of index when it's copied/checkpointed + * \[APLO-301\] - Add a “ttl” header to control message expiration + +For further information see: + +* [Download](http://activemq.apache.org/apollo/download.html) +* [Issues Fixed](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12322515&styleName=Text&projectId=12311310&Create=Create) +* [Documentation](http://activemq.apache.org/apollo/versions/1.7/website/documentation) + +[Feedback](http://activemq.apache.org/community/index.html) is always welcomed! \ No newline at end of file diff --git a/release-guide.md b/release-guide.md new file mode 100644 index 0000000..3732345 --- /dev/null +++ b/release-guide.md @@ -0,0 +1,190 @@ +Apache ActiveMQ ™ -- Release Guide + +[Developers](developers.html) > [Release Guide](release-guide.html) + + +How to create and announce an ActiveMQ release. This release is based on [General guide for releasing Maven-based project at Apache](http://maven.apache.org/developers/release/apache-release.html) , so be sure to check it out before continuing and meet all prerequisites. + +Maven 2 Setup +------------- + +Before you deploy anything to the maven repository using Maven 2, you should configure your ~/.m2/settings.xml file +so that the file permissions of the deployed artifacts are group writeable. If you do not do this, other developers will not able to overwrite your SNAPSHOT releases with newer versions. + + + ... + + + + apache.snapshots.https + dejanb + + + + apache.website + dejanb + 664 + 775 + + + + apache.releases.https + dejanb + + + + stagingSite + dejanb + 664 + 775 + + + + ... + + +It is also essential that you configure your umask to 2 on people.apache.org for non-interactive login. If your shell is tcsh you can edit .cshrc to include + +umask 2 + +Other shell initialization files may interfere with this setting but if this is the only umask setting it appears to work. Instructions for other shells would be welcome. + +### Additional local configuration for using release and staging plugins. + +To effectively use the release and staging plugins you need some information about where the staging will happen and signing information for gpg. Your ~/.m2/settings.xml should contain a profile like this: + + + + + apache-release + + secretPhrase + + + + ... + + +Creating the ActiveMQ Release +----------------------------- + +The release plugin will prompt for a release version, tag and next release version. Use a three digit release version of the form: 5.x.x and for the tag use a string of the form: activemq-5.x.x. The next version string should use the two digit from: 5.x-SNAPSHOT as this can be consistent for future SNAPSHOT releases. + +1. Verify the to-be-released version identifier exists in the [META-INF/spring.schemas](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=activemq-spring/src/main/resources/META-INF/spring.schemas;hb=HEAD) mappings file AND [activemq-osgi/src/main/resources/META-INF/spring.schemas](https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=activemq-osgi/src/main/resources/META-INF/spring.schemas;hb=HEAD) file, if not add it and commit. It should contain: + + http\\://activemq.apache.org/schema/core/activemq-core-${pom.version}.xsd=activemq.xsd + +2. Verify headers with [rat](http://incubator.apache.org/rat/apache-rat-plugin/usage.html) + + mvn -e apache-rat:check + grep -e ' !?????' target/rat.txt -- will show any files without licenses + +3. Do a release dry run to check for problems + + mvn release:prepare -DdryRun=true + + Check that you are happy with the results. The poms for the proposed tags will be in pom.xml.tag. When you like the results, clean up: + + mvn release:clean + +4. Prepare the release + + mvn release:prepare + + This will create the tag in git and leave various stuff around locally to direct the perform phase. + +5. Make a local copy of the release configuration in case something goes wrong + + cd .. + cp -r activemq-release activemq-release-prepared + cd activemq-release + +6. Perform the release to the staging repo + + mvn release:perform + + This uses both the activemq release profile which directs building source jars, javadoc jars, and signing everything, and also the settings release profile that says where to + put stuff and how to sign it. + +7. Close the staging repository + Quote from the [Maven release guide for Apache projects](http://maven.apache.org/developers/release/apache-release.html) + + > Login to [https://repository.apache.org](https://repository.apache.org) using your Apache LDAP credentials. Click on "Staging". Then click on "maven" in the list of repositories. In the panel below you should see an open repository that is linked to your username and ip. Right click on this repository and select "Close". This will close the repository from future deployments and make it available for others to view. If you are staging multiple releases together, skip this step until you have staged everything. Enter the name and version of the artifact being released in the "Description" field and then click "Close". This will make it easier to identify it later. + + See the image in the original guide for more info. +8. Verify staged artifacts + Quote from the [original guide](http://maven.apache.org/developers/release/apache-release.html) + + > If you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of *.asc (signature) files. If the you don't like the content of the repository, right click your repository and choose "Drop". You can then rollback your release and repeat the process. + > Note the repository URL, you will need this in your vote email. + +9. Build the site from the tag that release:perform checked out into target/checkout in the previous step. + Note that the -Prelease profile is needed to specify the profile in settings.xml that configures the staging location. + + cd target/checkout + mvn site -Prelease + +10. Populate the Javadocs site in svn + + svn co https://svn.apache.org/repos/infra/websites/production/activemq/content + cd content/maven + mkdir + #copy over apidocs folder that was created by the site plugin to /apidocs + svn add + svn rm apidocs + ln -s /apidocs apidocs + svn add apidocs + \# and commit once it looks good. + +11. Stage the official release artifacts in the SVN dist dev area for folks to test and vote on, using the helper script already in the repo: + + svn co https://dist.apache.org/repos/dist/dev/activemq/activemq/ + cd activemq + ./prepare-release.sh + \# Example: ./prepare-release.sh https://repository.apache.org/content/repositories/orgapacheactivemq-1149 5.15.1 + svn add + and commit once it looks good. + +12. Call a vote on the dev list, listing the great new features of the release. + +After the vote passes +--------------------- + +1. Promote the release (i.e. release the staging repository): login to[https://repository.apache.org](https://repository.apache.org/), navigate to the staging repository and click the "release" button.  +2. Copy the staged release files from the SVN dist dev folder to the SVN dist release folder: [https://dist.apache.org/repos/dist/release/activemq/](https://dist.apache.org/repos/dist/release/activemq/) + + svn cp -m "add files for activemq-" https://dist.apache.org/repos/dist/dev/activemq/activemq/ https://dist.apache.org/repos/dist/release/activemq/ + \# Example: svn cp -m "add files for activemq-5.15.1" https://dist.apache.org/repos/dist/dev/activemq/activemq/5.15.1 https://dist.apache.org/repos/dist/release/activemq/5.15.1 + +3. Populate the schema site in svn + + svn co https://svn.apache.org/repos/infra/websites/production/activemq/content + cd content/schema/core + curl --remote-name-all https://repository.apache.org/content/repositories/releases/org/apache/activemq/activemq-spring//activemq-spring-{-schema.html,.xsd}{.asc,.asc.md5,.asc.sha1,.sha1,.md5,} + for i in activemq-spring-5.9.0*; do mv -- "$i" "${i//spring/core}"; done; + svn add activemq-core-5.9.0* + svn rm activemq-core.xsd + ln -s activemq-core-5.9.0.xsd activemq-core.xsd + svn add activemq-core.xsd + \# and commit once it looks good. + +4. Continue with the Announcing section below +5. Created a in progress wiki page for the next release +6. Remove any releases from the dist site that are no longer supported and update the wiki page for that release to point to the archives for downloads. + +Announcing the ActiveMQ Release +------------------------------- + +1. Perform a release in JIRA and create a new release version in JIRA. + 1. Move unresolved issues to the next release first, in a bulk (do not send email) update + 2. You might also want to search for resolved/closed issues with no fix version just in case +2. Create a download page for the release in the WIKI similar like the [ActiveMQ 5.3.0 Release](activemq-530-release.html); also update the main [Download](download.html) page as appropriate +3. Update the [Xml Reference](xml-reference.html) page with a link to the HTML and XSD +4. Update latest release link on home page +5. Change the links for the prior release to reference the archive (at [http://archive.apache.org/dist/activemq/](http://archive.apache.org/dist/activemq/)); otherwise, users will not be able to locate the older release for download +6. Update [QuickLinks](quicklinks.html) and [JavaDocs](javadocs.html) pages +7. Mail the [dev](mailto:dev@activemq.codehaus.org) & [user](mailto:user@activemq.codehaus.org) lists +8. [Post](http://cwiki.apache.org/confluence/pages/viewrecentblogposts.action?key=ACTIVEMQ) a news entry on the WIKI +9. tweet +10. Have a beer! ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) + diff --git a/release-info.md b/release-info.md new file mode 100644 index 0000000..52ec910 --- /dev/null +++ b/release-info.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Release Info + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Release Plans](release-plans.html) > [Release Info](release-info.html) + + +General Release Information +--------------------------- + +* [Current RoadMap](http://jira.activemq.org/jira/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Release Guide](release-guide.html) +* [Signing Releases](http://wiki.apache.org/incubator/SigningReleases) +* [Apache Mirror Guidelines](http://apache.org/dev/mirrors.html) + diff --git a/release-notes-1.1.0.md b/release-notes-1.1.0.md new file mode 100644 index 0000000..cdb7e2a --- /dev/null +++ b/release-notes-1.1.0.md @@ -0,0 +1,41 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.1.0 +--------------------------------------------- + +A complete list of JIRAs for the 1.1.0 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12332642&styleName=Html&projectId=12315920&Create=Create&atl_token=A5KQ-2QAV-T4JA-FDED%7C708a588702fdb54724fe817fd07ee4c5610de292%7Clin) + +Overall Apache ActiveMQ Artemis 1.1.0 has several improvements and it's a nice polish on top of Apache ActiveMQ Artemis 1.0.0, things like better examples, better OpenWire support and the first release of MQTT. + +We would like to highlight the following accomplishments on this release: + +* \[[ARTEMIS-154](https://issues.apache.org/jira/browse/ARTEMIS-154)\] This is our first implementation of the MQTT support. + +* [ARTEMIS-178](https://issues.apache.org/jira/browse/ARTEMIS-178) The examples are now using the CLI to create and start servers reflecting real cases used in production. The documentation about the examples has been updated. Please refer to the documentation for more information about this. + +* \[[ARTEMIS-116](https://issues.apache.org/jira/browse/ARTEMIS-116)\] The CLI has been improved. There are new tools to compact the journal and we did a lot of polish around the CLI. + +* **Improvements on OpenWire** We fixed several issues around OpenWire + + +### Where we are still improving. + +1.1.0 has improved a lot, and these are the areas we are still working on: + +* This is the first release with MQTT. We would like to hear from you if you have any issues around MQTT as we are continuously improving the MQTT support + +* Short list of what need to be implemented on OpenWire for future releases: + * Reconnection + * Better Flow Control on producers + * Compressed messages + * Optimized ACKs + * Streamlet support \ No newline at end of file diff --git a/release-notes-1.2.0.md b/release-notes-1.2.0.md new file mode 100644 index 0000000..cef4379 --- /dev/null +++ b/release-notes-1.2.0.md @@ -0,0 +1,17 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.2.0 +--------------------------------------------- + +A complete list of JIRAs for the 1.2.0 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12333274) + +Apache ActiveMQ Artemis 1.2.0 has several improvements around performance, support for OSGi, LDAP integration and better OpenWire support. \ No newline at end of file diff --git a/release-notes-1.3.0.md b/release-notes-1.3.0.md new file mode 100644 index 0000000..74bc34b --- /dev/null +++ b/release-notes-1.3.0.md @@ -0,0 +1,23 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.3.0 +--------------------------------------------- + +A complete list of JIRAs for the 1.3.0 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12328978) + +Apache ActiveMQ Artemis 1.3.0 has introduced several new additions, such as: + +* Feature complete OpenWire implementation +* Support for all ActiveMQ 5.x LDAP modules +* Intiial implementation of a JDBC store, including support for PostGreSQL, MySQL and Apache Derby. + +There has also been a number of improvements around stability, performance and HA. \ No newline at end of file diff --git a/release-notes-1.4.0.md b/release-notes-1.4.0.md new file mode 100644 index 0000000..311d396 --- /dev/null +++ b/release-notes-1.4.0.md @@ -0,0 +1,24 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.4.0 +--------------------------------------------- + +A complete list of JIRAs for the 1.4.0 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12336052) + +Apache ActiveMQ Artemis 1.4.0 has introduced several new additions, such as: + +* [Interceptors on the MQTT Protocol](https://issues.apache.org/jira/browse/ARTEMIS-607) +* [Reload configuration support](https://issues.apache.org/jira/browse/ARTEMIS-601) +* [Global size Paging and Producer's flow control when disk full](https://issues.apache.org/jira/browse/ARTEMIS-581) +* Improved support on AMQP and STOMP + +There has also been a number of improvements around stability, performance and HA. \ No newline at end of file diff --git a/release-notes-1.5.0.md b/release-notes-1.5.0.md new file mode 100644 index 0000000..63a449f --- /dev/null +++ b/release-notes-1.5.0.md @@ -0,0 +1,24 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.5.0 +--------------------------------------------- + +A complete list of JIRAs for the 1.5.0 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12338118") + +Features for the current release: + +* \[[ARTEMIS-724](https://issues.apache.org/jira/browse/ARTEMIS-724)\] \- Implement no-local consumer support in AMQP +* \[[ARTEMIS-737](https://issues.apache.org/jira/browse/ARTEMIS-737)\] \- Add JUnit Rules +* \[[ARTEMIS-743](https://issues.apache.org/jira/browse/ARTEMIS-743)\] \- Default the queue address to the queue name +* \[[ARTEMIS-753](https://issues.apache.org/jira/browse/ARTEMIS-753)\] \- Persist pause status after restart of the broker. +* \[[ARTEMIS-756](https://issues.apache.org/jira/browse/ARTEMIS-756)\] \- Add basic CDI integration +* \[[ARTEMIS-824](https://issues.apache.org/jira/browse/ARTEMIS-824)\] \- Management operations for creating and destroying connector services \ No newline at end of file diff --git a/release-notes-1.5.1.md b/release-notes-1.5.1.md new file mode 100644 index 0000000..0add306 --- /dev/null +++ b/release-notes-1.5.1.md @@ -0,0 +1,39 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.5.1 +--------------------------------------------- + +A complete list of JIRAs for the 1.5.1 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12338661&styleName=Html&projectId=12315920&Create=Create") + +Bug Fixes: + +* \[[ARTEMIS-748](https://issues.apache.org/jira/browse/ARTEMIS-748)\] \- AddressSize show a negative number. +* \[[ARTEMIS-823](https://issues.apache.org/jira/browse/ARTEMIS-823)\] \- Broker doesn't settle rejected messages +* \[[ARTEMIS-827](https://issues.apache.org/jira/browse/ARTEMIS-827)\] \- AMQP test client validator classes not thread safe +* \[[ARTEMIS-840](https://issues.apache.org/jira/browse/ARTEMIS-840)\] \- Passwords logged in plaintext +* \[[ARTEMIS-842](https://issues.apache.org/jira/browse/ARTEMIS-842)\] \- JMSMessageID doesn't appear to work in selector +* \[[ARTEMIS-849](https://issues.apache.org/jira/browse/ARTEMIS-849)\] \- CDI Integration doc missing +* \[[ARTEMIS-852](https://issues.apache.org/jira/browse/ARTEMIS-852)\] \- Add indices to tables from JDBC backend to increase performance +* \[[ARTEMIS-859](https://issues.apache.org/jira/browse/ARTEMIS-859)\] \- BACKLOG\_PROP\_NAME is not part of allowable properties on the acceptor +* \[[ARTEMIS-860](https://issues.apache.org/jira/browse/ARTEMIS-860)\] \- openwire protocol not installed in artemis-osgi + +Improvements: + +* \[[ARTEMIS-814](https://issues.apache.org/jira/browse/ARTEMIS-814)\] \- Support outgoing connections for AMQP +* \[[ARTEMIS-841](https://issues.apache.org/jira/browse/ARTEMIS-841)\] \- Hash Processors lock free lazy singleton instantiation +* \[[ARTEMIS-845](https://issues.apache.org/jira/browse/ARTEMIS-845)\] \- Making Default Acceptor Protocols a bit more clear +* \[[ARTEMIS-846](https://issues.apache.org/jira/browse/ARTEMIS-846)\] \- Once the disk is full the blocked producer should log about disk full +* \[[ARTEMIS-863](https://issues.apache.org/jira/browse/ARTEMIS-863)\] \- The broker should deal with Network Failures. + +Tasks: + +* \[[ARTEMIS-865](https://issues.apache.org/jira/browse/ARTEMIS-865)\] \- Remove e.printStackTrace() from code \ No newline at end of file diff --git a/release-notes-1.5.2.md b/release-notes-1.5.2.md new file mode 100644 index 0000000..aea053a --- /dev/null +++ b/release-notes-1.5.2.md @@ -0,0 +1,42 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.5.2 +--------------------------------------------- + +A complete list of JIRAs for the 1.5.2 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12338833") + +Release Notes - ActiveMQ Artemis - Version 1.5.2 + +Bug +--- + +* \[[ARTEMIS-882](https://issues.apache.org/jira/browse/ARTEMIS-882)\] \- Some objects don't support lists on the connection factory definition +* \[[ARTEMIS-886](https://issues.apache.org/jira/browse/ARTEMIS-886)\] \- Tiny error in documentation +* \[[ARTEMIS-890](https://issues.apache.org/jira/browse/ARTEMIS-890)\] \- Dropped Messages, Paging and Block are ignored when broker is non persistent +* \[[ARTEMIS-892](https://issues.apache.org/jira/browse/ARTEMIS-892)\] \- Error decoding AMQP frame sent by Artemis +* \[[ARTEMIS-913](https://issues.apache.org/jira/browse/ARTEMIS-913)\] \- Slow consumer detection not working when paging +* \[[ARTEMIS-914](https://issues.apache.org/jira/browse/ARTEMIS-914)\] \- Max saved replicated journal size on Live node should not be -1 +* \[[ARTEMIS-921](https://issues.apache.org/jira/browse/ARTEMIS-921)\] \- Consumers killed as slow even if overall consuming rate is above threshold +* \[[ARTEMIS-926](https://issues.apache.org/jira/browse/ARTEMIS-926)\] \- CME when Artemis server start +* \[[ARTEMIS-927](https://issues.apache.org/jira/browse/ARTEMIS-927)\] \- ActiveMQ logs cluster password in plain text + +Improvement +----------- + +* \[[ARTEMIS-560](https://issues.apache.org/jira/browse/ARTEMIS-560)\] \- Add support for Paging using JDBC Store +* \[[ARTEMIS-920](https://issues.apache.org/jira/browse/ARTEMIS-920)\] \- Log SQL Exceptions and Warnings +* \[[ARTEMIS-928](https://issues.apache.org/jira/browse/ARTEMIS-928)\] \- Remoting Layer will reuse ByteBuffer Pools on messages + +Task +---- + +* \[[ARTEMIS-891](https://issues.apache.org/jira/browse/ARTEMIS-891)\] \- upgrade proton to 0.16 \ No newline at end of file diff --git a/release-notes-1.5.3.md b/release-notes-1.5.3.md new file mode 100644 index 0000000..f8a0c16 --- /dev/null +++ b/release-notes-1.5.3.md @@ -0,0 +1,36 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.5.3 +--------------------------------------------- + +A complete list of JIRAs for the 1.5.3 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12339575&styleName=Html&projectId=12315920&Create=Create&atl_token=A5KQ-2QAV-T4JA-FDED%7Ce0a2038e11728890d51e45bf9f28e4d2105fddab%7Clout") + +Release Notes - ActiveMQ Artemis - Version 1.5.3 + +Bug +--- + +* \[[ARTEMIS-917](https://issues.apache.org/jira/browse/ARTEMIS-917)\] \- Retained messages from file system contain weird chars +* \[[ARTEMIS-931](https://issues.apache.org/jira/browse/ARTEMIS-931)\] \- Improve HTTP upgrade connection +* \[[ARTEMIS-934](https://issues.apache.org/jira/browse/ARTEMIS-934)\] \- Stomp server keeps pinging client after client stops responding +* \[[ARTEMIS-937](https://issues.apache.org/jira/browse/ARTEMIS-937)\] \- Use Proper disk alignment over libaio instead of 512 hard coded. +* \[[ARTEMIS-939](https://issues.apache.org/jira/browse/ARTEMIS-939)\] \- User list not updated on the broker dynamically +* \[[ARTEMIS-951](https://issues.apache.org/jira/browse/ARTEMIS-951)\] \- MQTT Messages Acks are not auto-committed +* \[[ARTEMIS-952](https://issues.apache.org/jira/browse/ARTEMIS-952)\] \- MQTT Clean session should delete subscription queues + +Improvement +----------- + +* \[[ARTEMIS-873](https://issues.apache.org/jira/browse/ARTEMIS-873)\] \- Use K,M,G notations on broker.xml +* \[[ARTEMIS-935](https://issues.apache.org/jira/browse/ARTEMIS-935)\] \- Tool to recalculate disk sync times +* \[[ARTEMIS-938](https://issues.apache.org/jira/browse/ARTEMIS-938)\] \- JDBC persistence-store should use BIGINT type for IDs in database tables +* \[[ARTEMIS-957](https://issues.apache.org/jira/browse/ARTEMIS-957)\] \- JDBC Store should use setBytes API vs using Concat on BLOB \ No newline at end of file diff --git a/release-notes-1.5.4.md b/release-notes-1.5.4.md new file mode 100644 index 0000000..2ac0d99 --- /dev/null +++ b/release-notes-1.5.4.md @@ -0,0 +1,52 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.5.4 +--------------------------------------------- + +A complete list of JIRAs for the 1.5.4 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12339158") + +Release Notes - ActiveMQ Artemis - Version 1.5.4 + +Bug +--- + +* \[[ARTEMIS-919](https://issues.apache.org/jira/browse/ARTEMIS-919)\] \- Issues creating jms queues in core config in broker.xml when hot reloading configuration +* \[[ARTEMIS-932](https://issues.apache.org/jira/browse/ARTEMIS-932)\] \- 2 brokers can be started using the same store +* \[[ARTEMIS-950](https://issues.apache.org/jira/browse/ARTEMIS-950)\] \- Change log level from INFO to WARN for "Invalid "host" value "0.0.0.0" detected for..." when Artemis is bound to 0.0.0.0 +* \[[ARTEMIS-963](https://issues.apache.org/jira/browse/ARTEMIS-963)\] \- ClassCastException in ActiveMQChannelHandler +* \[[ARTEMIS-969](https://issues.apache.org/jira/browse/ARTEMIS-969)\] \- ReceiveMessage will expand unecessarily on core protocol +* \[[ARTEMIS-974](https://issues.apache.org/jira/browse/ARTEMIS-974)\] \- MQTT Will messages are not retained +* \[[ARTEMIS-976](https://issues.apache.org/jira/browse/ARTEMIS-976)\] \- PostgresSequentialSequentialFileDriver SQLProvider NPE +* \[[ARTEMIS-982](https://issues.apache.org/jira/browse/ARTEMIS-982)\] \- Deadlock on AMQP Close versus Delivery on AMQP +* \[[ARTEMIS-986](https://issues.apache.org/jira/browse/ARTEMIS-986)\] \- Integer overflow in MySQLSQLProvider.java +* \[[ARTEMIS-989](https://issues.apache.org/jira/browse/ARTEMIS-989)\] \- Individual Acknowledge: ActiveMQConnectionFactory.createContext(final int sessionMode) throws exception for ActiveMQJMSConstants.INDIVIDUAL_ACKNOWLEDGE +* \[[ARTEMIS-991](https://issues.apache.org/jira/browse/ARTEMIS-991)\] \- Null dereference after hitting Ctrl+d when prompted for password in \`artemis create\` +* \[[ARTEMIS-992](https://issues.apache.org/jira/browse/ARTEMIS-992)\] \- NPE and other trouble when cluster-connection has bad connector-ref +* \[[ARTEMIS-998](https://issues.apache.org/jira/browse/ARTEMIS-998)\] \- NPE when using JDBCFileDriver when Blob is null +* \[[ARTEMIS-1017](https://issues.apache.org/jira/browse/ARTEMIS-1017)\] \- Wrong error message when default destination for producer is not specified +* \[[ARTEMIS-1020](https://issues.apache.org/jira/browse/ARTEMIS-1020)\] \- CDI Extension doesn't discover Configuration via CDI producers + +Improvement +----------- + +* \[[ARTEMIS-1002](https://issues.apache.org/jira/browse/ARTEMIS-1002)\] \- ActiveMQBuffers creates a new netty pool increasing memory footprint +* \[[ARTEMIS-1006](https://issues.apache.org/jira/browse/ARTEMIS-1006)\] \- JDBC Storage Manager to show SQLExceptions on logs + +New Feature +----------- + +* \[[ARTEMIS-999](https://issues.apache.org/jira/browse/ARTEMIS-999)\] \- Support Oracle12C for Artemis JDBC Store + +Task +---- + +* \[[ARTEMIS-995](https://issues.apache.org/jira/browse/ARTEMIS-995)\] \- Cleanup test suite \ No newline at end of file diff --git a/release-notes-1.5.5.md b/release-notes-1.5.5.md new file mode 100644 index 0000000..e5e1306 --- /dev/null +++ b/release-notes-1.5.5.md @@ -0,0 +1,39 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 1.5.5 +--------------------------------------------- + +A complete list of JIRAs for the 1.5.4 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12339947&styleName=&projectId=12315920) + +Release Notes - ActiveMQ Artemis - Version 1.5.5 + +Bug +--- + +* \[[ARTEMIS-930](https://issues.apache.org/jira/browse/ARTEMIS-930)\] \- JDBC FileFactory Driver Prepared Statement does not always return ID +* \[[ARTEMIS-990](https://issues.apache.org/jira/browse/ARTEMIS-990)\] \- AMQ119032: User: Customer does not have permission='CREATE\_DURABLE\_QUEUE' on address $sys.mqtt.queue.qos2 +* \[[ARTEMIS-1033](https://issues.apache.org/jira/browse/ARTEMIS-1033)\] \- NPE on PageTransactions during startup in case of previous TX Failures +* \[[ARTEMIS-1043](https://issues.apache.org/jira/browse/ARTEMIS-1043)\] \- NettyConnector not working with IPv6 address +* \[[ARTEMIS-1057](https://issues.apache.org/jira/browse/ARTEMIS-1057)\] \- Lower log level of AMQ214023 +* \[[ARTEMIS-1071](https://issues.apache.org/jira/browse/ARTEMIS-1071)\] \- Invalid Type exception handling improvements +* \[[ARTEMIS-1072](https://issues.apache.org/jira/browse/ARTEMIS-1072)\] \- ./artemis create --java-opts will have options on bin instead of etc +* \[[ARTEMIS-1074](https://issues.apache.org/jira/browse/ARTEMIS-1074)\] \- Acceptors and Connectors that enable SSL don’t start up while using a password codec +* \[[ARTEMIS-1078](https://issues.apache.org/jira/browse/ARTEMIS-1078)\] \- Thread pool executor occasionally misses to create a new thread +* \[[ARTEMIS-1089](https://issues.apache.org/jira/browse/ARTEMIS-1089)\] \- Backup sync-up is slow when paging +* \[[ARTEMIS-1114](https://issues.apache.org/jira/browse/ARTEMIS-1114)\] \- Journal Compactor possibly losing records +* \[[ARTEMIS-1140](https://issues.apache.org/jira/browse/ARTEMIS-1140)\] \- Avoid Queue lock on queueQuery + +Improvement +----------- + +* \[[ARTEMIS-1077](https://issues.apache.org/jira/browse/ARTEMIS-1077)\] \- Improving InVM and Buffer usage +* \[[ARTEMIS-1124](https://issues.apache.org/jira/browse/ARTEMIS-1124)\] \- JDBC Network Timeout configuration \ No newline at end of file diff --git a/release-notes-2.0.0.md b/release-notes-2.0.0.md new file mode 100644 index 0000000..2169470 --- /dev/null +++ b/release-notes-2.0.0.md @@ -0,0 +1,168 @@ + /\* */ ActiveMQ Artemis + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 2.0.0 +--------------------------------------------- + +A complete list of JIRAs for the 2.0.0 release can be found at the [Apache ActiveMQ Artemis project JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12338813&styleName=Html&projectId=12315920&Create=Create&atl_token=A5KQ-2QAV-T4JA-FDED%7C3a4edecc0ebb5f9059c9c484a7c71713d9250294%7Clout") + +Release Notes - ActiveMQ Artemis - Version 2.0.0 + +Sub-task +-------- + +* \[[ARTEMIS-781](https://issues.apache.org/jira/browse/ARTEMIS-781)\] \- Create Address Journal Record Type +* \[[ARTEMIS-782](https://issues.apache.org/jira/browse/ARTEMIS-782)\] \- Add new configuration schema that includes first class Address elements +* \[[ARTEMIS-783](https://issues.apache.org/jira/browse/ARTEMIS-783)\] \- Implement "anycast" routing in Artemis PostOffice +* \[[ARTEMIS-784](https://issues.apache.org/jira/browse/ARTEMIS-784)\] \- Add new management methods to include new first class addresses +* \[[ARTEMIS-785](https://issues.apache.org/jira/browse/ARTEMIS-785)\] \- Update Examples to use new configuration +* \[[ARTEMIS-787](https://issues.apache.org/jira/browse/ARTEMIS-787)\] \- Update core client wireformat to support new addressing scheme +* \[[ARTEMIS-788](https://issues.apache.org/jira/browse/ARTEMIS-788)\] \- Update MQTT& STOMP to check that addresses are multicast +* \[[ARTEMIS-789](https://issues.apache.org/jira/browse/ARTEMIS-789)\] \- Update Tests +* \[[ARTEMIS-790](https://issues.apache.org/jira/browse/ARTEMIS-790)\] \- Create a Configv1 to Configv2 transformation tool +* \[[ARTEMIS-791](https://issues.apache.org/jira/browse/ARTEMIS-791)\] \- Define XSD for new configuration +* \[[ARTEMIS-813](https://issues.apache.org/jira/browse/ARTEMIS-813)\] \- Store Address Data and AutoCreate Address on Queue Load/Create +* \[[ARTEMIS-815](https://issues.apache.org/jira/browse/ARTEMIS-815)\] \- Make address path separator configurable +* \[[ARTEMIS-876](https://issues.apache.org/jira/browse/ARTEMIS-876)\] \- Remove JMS stuff from code-base +* \[[ARTEMIS-877](https://issues.apache.org/jira/browse/ARTEMIS-877)\] \- Update various protocols to deal with new addressing scheme +* \[[ARTEMIS-878](https://issues.apache.org/jira/browse/ARTEMIS-878)\] \- Update CLI +* \[[ARTEMIS-879](https://issues.apache.org/jira/browse/ARTEMIS-879)\] \- Implement new security roles for addresses +* \[[ARTEMIS-880](https://issues.apache.org/jira/browse/ARTEMIS-880)\] \- Support address prefixing +* \[[ARTEMIS-881](https://issues.apache.org/jira/browse/ARTEMIS-881)\] \- Add new address-settings to deal with new config options + +Bug +--- + +* \[[ARTEMIS-164](https://issues.apache.org/jira/browse/ARTEMIS-164)\] \- Add examples from qpid JMS +* \[[ARTEMIS-367](https://issues.apache.org/jira/browse/ARTEMIS-367)\] \- MQTT Tests log error checking DLQ +* \[[ARTEMIS-474](https://issues.apache.org/jira/browse/ARTEMIS-474)\] \- replication fails with colocated topologies +* \[[ARTEMIS-566](https://issues.apache.org/jira/browse/ARTEMIS-566)\] \- Cannot remove JMS queue that has been removed from Core side +* \[[ARTEMIS-773](https://issues.apache.org/jira/browse/ARTEMIS-773)\] \- AMQP: Transactional Acquistion and Retirement does not seem to work correctly. +* \[[ARTEMIS-882](https://issues.apache.org/jira/browse/ARTEMIS-882)\] \- Some objects don't support lists on the connection factory definition +* \[[ARTEMIS-883](https://issues.apache.org/jira/browse/ARTEMIS-883)\] \- Fix OpenWire policy=Block +* \[[ARTEMIS-885](https://issues.apache.org/jira/browse/ARTEMIS-885)\] \- Fix OpenWire wildcard conversion issue +* \[[ARTEMIS-886](https://issues.apache.org/jira/browse/ARTEMIS-886)\] \- Tiny error in documentation +* \[[ARTEMIS-887](https://issues.apache.org/jira/browse/ARTEMIS-887)\] \- Fix some OpenWire test failures +* \[[ARTEMIS-888](https://issues.apache.org/jira/browse/ARTEMIS-888)\] \- AMQP headers arent always set +* \[[ARTEMIS-890](https://issues.apache.org/jira/browse/ARTEMIS-890)\] \- Dropped Messages, Paging and Block are ignored when broker is non persistent +* \[[ARTEMIS-892](https://issues.apache.org/jira/browse/ARTEMIS-892)\] \- Error decoding AMQP frame sent by Artemis +* \[[ARTEMIS-893](https://issues.apache.org/jira/browse/ARTEMIS-893)\] \- Fix FailoverTransactionTest.testWaitForMissingRedeliveries +* \[[ARTEMIS-899](https://issues.apache.org/jira/browse/ARTEMIS-899)\] \- On user authentication a stack trace is logged to the error channel +* \[[ARTEMIS-900](https://issues.apache.org/jira/browse/ARTEMIS-900)\] \- Fix compatibility with older Artemis and HornetQ versions after the address changes +* \[[ARTEMIS-901](https://issues.apache.org/jira/browse/ARTEMIS-901)\] \- SASL PLAIN auth with AMQP doesn't take authzid into account +* \[[ARTEMIS-902](https://issues.apache.org/jira/browse/ARTEMIS-902)\] \- OpenWire Compression Issue +* \[[ARTEMIS-907](https://issues.apache.org/jira/browse/ARTEMIS-907)\] \- Fix NettySecurityClientTest +* \[[ARTEMIS-909](https://issues.apache.org/jira/browse/ARTEMIS-909)\] \- the default welcome files aren't served correctly +* \[[ARTEMIS-911](https://issues.apache.org/jira/browse/ARTEMIS-911)\] \- consumer ack count no increased with individual acknowledge +* \[[ARTEMIS-912](https://issues.apache.org/jira/browse/ARTEMIS-912)\] \- 1.x to 2.0 configuration migration tool does not work +* \[[ARTEMIS-913](https://issues.apache.org/jira/browse/ARTEMIS-913)\] \- Slow consumer detection not working when paging +* \[[ARTEMIS-914](https://issues.apache.org/jira/browse/ARTEMIS-914)\] \- Max saved replicated journal size on Live node should not be -1 +* \[[ARTEMIS-915](https://issues.apache.org/jira/browse/ARTEMIS-915)\] \- WebComponent stopped when backup failback +* \[[ARTEMIS-917](https://issues.apache.org/jira/browse/ARTEMIS-917)\] \- Retained messages from file system contain weird chars +* \[[ARTEMIS-918](https://issues.apache.org/jira/browse/ARTEMIS-918)\] \- Autocreated address is always anycast when using qpid-jms client +* \[[ARTEMIS-919](https://issues.apache.org/jira/browse/ARTEMIS-919)\] \- Issues creating jms queues in core config in broker.xml when hot reloading configuration +* \[[ARTEMIS-921](https://issues.apache.org/jira/browse/ARTEMIS-921)\] \- Consumers killed as slow even if overall consuming rate is above threshold +* \[[ARTEMIS-926](https://issues.apache.org/jira/browse/ARTEMIS-926)\] \- CME when Artemis server start +* \[[ARTEMIS-927](https://issues.apache.org/jira/browse/ARTEMIS-927)\] \- ActiveMQ logs cluster password in plain text +* \[[ARTEMIS-929](https://issues.apache.org/jira/browse/ARTEMIS-929)\] \- Artemis cli tools does not check non-existing options +* \[[ARTEMIS-930](https://issues.apache.org/jira/browse/ARTEMIS-930)\] \- JDBC FileFactory Driver Prepared Statement does not always return ID +* \[[ARTEMIS-931](https://issues.apache.org/jira/browse/ARTEMIS-931)\] \- Improve HTTP upgrade connection +* \[[ARTEMIS-934](https://issues.apache.org/jira/browse/ARTEMIS-934)\] \- Stomp server keeps pinging client after client stops responding +* \[[ARTEMIS-936](https://issues.apache.org/jira/browse/ARTEMIS-936)\] \- Allow AMQP transformers to be configured and default to native +* \[[ARTEMIS-937](https://issues.apache.org/jira/browse/ARTEMIS-937)\] \- Use Proper disk alignment over libaio instead of 512 hard coded. +* \[[ARTEMIS-939](https://issues.apache.org/jira/browse/ARTEMIS-939)\] \- User list not updated on the broker dynamically +* \[[ARTEMIS-944](https://issues.apache.org/jira/browse/ARTEMIS-944)\] \- Broker can't convert AMQP python message to Openwire format +* \[[ARTEMIS-945](https://issues.apache.org/jira/browse/ARTEMIS-945)\] \- The queue manager doesn't check for null when deleting queue +* \[[ARTEMIS-946](https://issues.apache.org/jira/browse/ARTEMIS-946)\] \- CLONE - Consumers killed as slow even if overall consuming rate is above threshold +* \[[ARTEMIS-949](https://issues.apache.org/jira/browse/ARTEMIS-949)\] \- Prevent Openwire from closing consumer twice +* \[[ARTEMIS-950](https://issues.apache.org/jira/browse/ARTEMIS-950)\] \- Change log level from INFO to WARN for "Invalid "host" value "0.0.0.0" detected for..." when Artemis is bound to 0.0.0.0 +* \[[ARTEMIS-951](https://issues.apache.org/jira/browse/ARTEMIS-951)\] \- MQTT Messages Acks are not auto-committed +* \[[ARTEMIS-952](https://issues.apache.org/jira/browse/ARTEMIS-952)\] \- MQTT Clean session should delete subscription queues +* \[[ARTEMIS-953](https://issues.apache.org/jira/browse/ARTEMIS-953)\] \- Refactor JMX object names +* \[[ARTEMIS-954](https://issues.apache.org/jira/browse/ARTEMIS-954)\] \- role does not default to amq as the documentation states. +* \[[ARTEMIS-958](https://issues.apache.org/jira/browse/ARTEMIS-958)\] \- Improve web server tmp dir cleanup +* \[[ARTEMIS-960](https://issues.apache.org/jira/browse/ARTEMIS-960)\] \- Send Will messages have extra string encoding +* \[[ARTEMIS-961](https://issues.apache.org/jira/browse/ARTEMIS-961)\] \- MQTT Will messages are not encoded as UTF8 +* \[[ARTEMIS-962](https://issues.apache.org/jira/browse/ARTEMIS-962)\] \- improve the OpenMBean support for browsing +* \[[ARTEMIS-963](https://issues.apache.org/jira/browse/ARTEMIS-963)\] \- ClassCastException in ActiveMQChannelHandler +* \[[ARTEMIS-969](https://issues.apache.org/jira/browse/ARTEMIS-969)\] \- ReceiveMessage will expand unecessarily on core protocol +* \[[ARTEMIS-970](https://issues.apache.org/jira/browse/ARTEMIS-970)\] \- javax.jms.Message.getJMSDestination() fails when message not sent with AMQP +* \[[ARTEMIS-974](https://issues.apache.org/jira/browse/ARTEMIS-974)\] \- MQTT Will messages are not retained +* \[[ARTEMIS-976](https://issues.apache.org/jira/browse/ARTEMIS-976)\] \- PostgresSequentialSequentialFileDriver SQLProvider NPE +* \[[ARTEMIS-977](https://issues.apache.org/jira/browse/ARTEMIS-977)\] \- record id of address not set on journal reload +* \[[ARTEMIS-978](https://issues.apache.org/jira/browse/ARTEMIS-978)\] \- Replicating live restarts as backup when both live and backup are killed in a cluster +* \[[ARTEMIS-979](https://issues.apache.org/jira/browse/ARTEMIS-979)\] \- OpenWire "no-Local" consumer not working +* \[[ARTEMIS-980](https://issues.apache.org/jira/browse/ARTEMIS-980)\] \- Openwire can't send message to temp destination +* \[[ARTEMIS-981](https://issues.apache.org/jira/browse/ARTEMIS-981)\] \- OpenWire can't receive empty ObjectMessage +* \[[ARTEMIS-982](https://issues.apache.org/jira/browse/ARTEMIS-982)\] \- Deadlock on AMQP Close versus Delivery on AMQP +* \[[ARTEMIS-986](https://issues.apache.org/jira/browse/ARTEMIS-986)\] \- Integer overflow in MySQLSQLProvider.java +* \[[ARTEMIS-988](https://issues.apache.org/jira/browse/ARTEMIS-988)\] \- Regression: web tmp dir not cleaned up +* \[[ARTEMIS-989](https://issues.apache.org/jira/browse/ARTEMIS-989)\] \- Individual Acknowledge: ActiveMQConnectionFactory.createContext(final int sessionMode) throws exception for ActiveMQJMSConstants.INDIVIDUAL_ACKNOWLEDGE +* \[[ARTEMIS-990](https://issues.apache.org/jira/browse/ARTEMIS-990)\] \- AMQ119032: User: Customer does not have permission='CREATE\_DURABLE\_QUEUE' on address $sys.mqtt.queue.qos2 +* \[[ARTEMIS-991](https://issues.apache.org/jira/browse/ARTEMIS-991)\] \- Null dereference after hitting Ctrl+d when prompted for password in \`artemis create\` +* \[[ARTEMIS-992](https://issues.apache.org/jira/browse/ARTEMIS-992)\] \- NPE and other trouble when cluster-connection has bad connector-ref +* \[[ARTEMIS-998](https://issues.apache.org/jira/browse/ARTEMIS-998)\] \- NPE when using JDBCFileDriver when Blob is null +* \[[ARTEMIS-1000](https://issues.apache.org/jira/browse/ARTEMIS-1000)\] \- Openwire exception response no correlation-id +* \[[ARTEMIS-1003](https://issues.apache.org/jira/browse/ARTEMIS-1003)\] \- Documentation uses incorrect variable in code example for Large Messaging +* \[[ARTEMIS-1007](https://issues.apache.org/jira/browse/ARTEMIS-1007)\] \- Missing management annotations +* \[[ARTEMIS-1010](https://issues.apache.org/jira/browse/ARTEMIS-1010)\] \- Oracle12C driver does not support table names with lower case letters +* \[[ARTEMIS-1017](https://issues.apache.org/jira/browse/ARTEMIS-1017)\] \- Wrong error message when default destination for producer is not specified +* \[[ARTEMIS-1020](https://issues.apache.org/jira/browse/ARTEMIS-1020)\] \- CDI Extension doesn't discover Configuration via CDI producers +* \[[ARTEMIS-1026](https://issues.apache.org/jira/browse/ARTEMIS-1026)\] \- Don't route to queue when consumerCount = 0 and purge-on-no-consumers = true + +Improvement +----------- + +* \[[ARTEMIS-410](https://issues.apache.org/jira/browse/ARTEMIS-410)\] \- STOMP destination prefixes should be configurable +* \[[ARTEMIS-537](https://issues.apache.org/jira/browse/ARTEMIS-537)\] \- Allow Artemis to use Karaf JAAS security +* \[[ARTEMIS-560](https://issues.apache.org/jira/browse/ARTEMIS-560)\] \- Add support for Paging using JDBC Store +* \[[ARTEMIS-762](https://issues.apache.org/jira/browse/ARTEMIS-762)\] \- AMQP Clients are not updated after management operations +* \[[ARTEMIS-829](https://issues.apache.org/jira/browse/ARTEMIS-829)\] \- Core Protocol Producers will re-encode messages on the server +* \[[ARTEMIS-851](https://issues.apache.org/jira/browse/ARTEMIS-851)\] \- Parse System.properties as Configuration +* \[[ARTEMIS-866](https://issues.apache.org/jira/browse/ARTEMIS-866)\] \- make replication and quorum voting configurable and more resilient +* \[[ARTEMIS-873](https://issues.apache.org/jira/browse/ARTEMIS-873)\] \- Use K,M,G notations on broker.xml +* \[[ARTEMIS-903](https://issues.apache.org/jira/browse/ARTEMIS-903)\] \- Add documentation for updating Artemis to newer versions +* \[[ARTEMIS-906](https://issues.apache.org/jira/browse/ARTEMIS-906)\] \- Memory Mapped JournalType +* \[[ARTEMIS-920](https://issues.apache.org/jira/browse/ARTEMIS-920)\] \- Log SQL Exceptions and Warnings +* \[[ARTEMIS-922](https://issues.apache.org/jira/browse/ARTEMIS-922)\] \- Clean up addressing API +* \[[ARTEMIS-928](https://issues.apache.org/jira/browse/ARTEMIS-928)\] \- Remoting Layer will reuse ByteBuffer Pools on messages +* \[[ARTEMIS-935](https://issues.apache.org/jira/browse/ARTEMIS-935)\] \- Tool to recalculate disk sync times +* \[[ARTEMIS-938](https://issues.apache.org/jira/browse/ARTEMIS-938)\] \- JDBC persistence-store should use BIGINT type for IDs in database tables +* \[[ARTEMIS-943](https://issues.apache.org/jira/browse/ARTEMIS-943)\] \- Update and document XML importer/exporter for new addressing scheme +* \[[ARTEMIS-947](https://issues.apache.org/jira/browse/ARTEMIS-947)\] \- Configuration reload logic should deal with new addressing scheme +* \[[ARTEMIS-957](https://issues.apache.org/jira/browse/ARTEMIS-957)\] \- JDBC Store should use setBytes API vs using Concat on BLOB +* \[[ARTEMIS-964](https://issues.apache.org/jira/browse/ARTEMIS-964)\] \- Move common XMLDataExporter logic into a utility class +* \[[ARTEMIS-993](https://issues.apache.org/jira/browse/ARTEMIS-993)\] \- ClientConsumerImpl.java contains unreachable code +* \[[ARTEMIS-996](https://issues.apache.org/jira/browse/ARTEMIS-996)\] \- Simplify and deduplicate lookupHome(path) in artemis-maven-plugin +* \[[ARTEMIS-1002](https://issues.apache.org/jira/browse/ARTEMIS-1002)\] \- ActiveMQBuffers creates a new netty pool increasing memory footprint +* \[[ARTEMIS-1006](https://issues.apache.org/jira/browse/ARTEMIS-1006)\] \- JDBC Storage Manager to show SQLExceptions on logs +* \[[ARTEMIS-1008](https://issues.apache.org/jira/browse/ARTEMIS-1008)\] \- Allow web server host to be set on create + +New Feature +----------- + +* \[[ARTEMIS-17](https://issues.apache.org/jira/browse/ARTEMIS-17)\] \- Add Broker Interceptor - like the Camel Broker Component in ActiveMQ 5 +* \[[ARTEMIS-24](https://issues.apache.org/jira/browse/ARTEMIS-24)\] \- Lazy conversions on Protocols / Persistency +* \[[ARTEMIS-562](https://issues.apache.org/jira/browse/ARTEMIS-562)\] \- Use 'to' field if sender target is null +* \[[ARTEMIS-780](https://issues.apache.org/jira/browse/ARTEMIS-780)\] \- Improve addressing, routing and JMS configuration in Artemis +* \[[ARTEMIS-983](https://issues.apache.org/jira/browse/ARTEMIS-983)\] \- Allow JMS client to fully qualify the queue it uses +* \[[ARTEMIS-999](https://issues.apache.org/jira/browse/ARTEMIS-999)\] \- Support Oracle12C for Artemis JDBC Store +* \[[ARTEMIS-1009](https://issues.apache.org/jira/browse/ARTEMIS-1009)\] \- Pure Encoding of Messages + +Task +---- + +* \[[ARTEMIS-891](https://issues.apache.org/jira/browse/ARTEMIS-891)\] \- upgrade proton to 0.16 +* \[[ARTEMIS-896](https://issues.apache.org/jira/browse/ARTEMIS-896)\] \- Remove 32 bits native library +* \[[ARTEMIS-923](https://issues.apache.org/jira/browse/ARTEMIS-923)\] \- Bump minimum Maven to 3.1.0 +* \[[ARTEMIS-995](https://issues.apache.org/jira/browse/ARTEMIS-995)\] \- Cleanup test suite +* \[[ARTEMIS-1019](https://issues.apache.org/jira/browse/ARTEMIS-1019)\] \- Removing defunct integrations (Aerogear and Vertx) +* \[[ARTEMIS-1029](https://issues.apache.org/jira/browse/ARTEMIS-1029)\] \- Cleanup testsuites \ No newline at end of file diff --git a/release-notes-2.1.0.md b/release-notes-2.1.0.md new file mode 100644 index 0000000..2fe2146 --- /dev/null +++ b/release-notes-2.1.0.md @@ -0,0 +1,146 @@ + /\* */ ActiveMQ Artemis Release Notes 2.1.0 + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 2.1.0 +--------------------------------------------- + +A complete list of JIRAs for the 2.1.0 release can be found [here.](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12339963) + +Release Notes - ActiveMQ Artemis - Version 2.1.0 + +Bug +--- + +* \[[ARTEMIS-56](https://issues.apache.org/jira/browse/ARTEMIS-56)\] \- the message-id of AMQP messages gets cleared within the broker +* \[[ARTEMIS-57](https://issues.apache.org/jira/browse/ARTEMIS-57)\] \- the 'to' field of AMQP messages gets cleared within the broker +* \[[ARTEMIS-59](https://issues.apache.org/jira/browse/ARTEMIS-59)\] \- AMQP messages published transactionally should be accepted using a TransactionalState +* \[[ARTEMIS-60](https://issues.apache.org/jira/browse/ARTEMIS-60)\] \- Transactionally consumed AMQP messages are settled without any disposition state. +* \[[ARTEMIS-267](https://issues.apache.org/jira/browse/ARTEMIS-267)\] \- AMQP messages without a Header section get persisted despite being non-durable +* \[[ARTEMIS-457](https://issues.apache.org/jira/browse/ARTEMIS-457)\] \- Scale down with live-only ha policy failing +* \[[ARTEMIS-547](https://issues.apache.org/jira/browse/ARTEMIS-547)\] \- Authorize AMQP sender/receive on link attach +* \[[ARTEMIS-688](https://issues.apache.org/jira/browse/ARTEMIS-688)\] \- java.util.ConcurrentModificationException when sending message to JMS client +* \[[ARTEMIS-712](https://issues.apache.org/jira/browse/ARTEMIS-712)\] \- Artemis does not support local transactions properly over AMQP +* \[[ARTEMIS-775](https://issues.apache.org/jira/browse/ARTEMIS-775)\] \- AMQP: Message seems to be delivered twice when receiver close with pending messages +* \[[ARTEMIS-826](https://issues.apache.org/jira/browse/ARTEMIS-826)\] \- MQTT with a long password field causes NPE exception +* \[[ARTEMIS-834](https://issues.apache.org/jira/browse/ARTEMIS-834)\] \- Management over AMQP throws exception +* \[[ARTEMIS-861](https://issues.apache.org/jira/browse/ARTEMIS-861)\] \- Artemis 1.5 compilation fails with IBM JDK +* \[[ARTEMIS-864](https://issues.apache.org/jira/browse/ARTEMIS-864)\] \- Sending to a destroyed temp queue didn't get exception +* \[[ARTEMIS-874](https://issues.apache.org/jira/browse/ARTEMIS-874)\] \- ThreadGroup memory leak +* \[[ARTEMIS-908](https://issues.apache.org/jira/browse/ARTEMIS-908)\] \- AMQP flow control misses unblock during heavy load +* \[[ARTEMIS-925](https://issues.apache.org/jira/browse/ARTEMIS-925)\] \- broker logs connection failure warning when client closes AMQP connection +* \[[ARTEMIS-956](https://issues.apache.org/jira/browse/ARTEMIS-956)\] \- exception when messages are settled separately +* \[[ARTEMIS-1012](https://issues.apache.org/jira/browse/ARTEMIS-1012)\] \- AMQP TX is redelivering message that are still aquired +* \[[ARTEMIS-1013](https://issues.apache.org/jira/browse/ARTEMIS-1013)\] \- AMQP Release does not redelivery message if flow or new message does not arrive +* \[[ARTEMIS-1024](https://issues.apache.org/jira/browse/ARTEMIS-1024)\] \- Management operation causes ClassNotFoundException +* \[[ARTEMIS-1031](https://issues.apache.org/jira/browse/ARTEMIS-1031)\] \- Prefixes no longer working with Core Client +* \[[ARTEMIS-1033](https://issues.apache.org/jira/browse/ARTEMIS-1033)\] \- NPE on PageTransactions during startup in case of previous TX Failures +* \[[ARTEMIS-1034](https://issues.apache.org/jira/browse/ARTEMIS-1034)\] \- \[AMQP\] non-durable subscription queue not ended on link close +* \[[ARTEMIS-1039](https://issues.apache.org/jira/browse/ARTEMIS-1039)\] \- AMQP: Broker does not replenish the credit for the receiver link of it transaction coordinator +* \[[ARTEMIS-1041](https://issues.apache.org/jira/browse/ARTEMIS-1041)\] \- AMQP: Broker not respecting absolute expiry time +* \[[ARTEMIS-1043](https://issues.apache.org/jira/browse/ARTEMIS-1043)\] \- NettyConnector not working with IPv6 address +* \[[ARTEMIS-1044](https://issues.apache.org/jira/browse/ARTEMIS-1044)\] \- Stackoverflow on AMQP sends +* \[[ARTEMIS-1046](https://issues.apache.org/jira/browse/ARTEMIS-1046)\] \- Transaction issues over AMQP +* \[[ARTEMIS-1048](https://issues.apache.org/jira/browse/ARTEMIS-1048)\] \- Filter is not working with AMQP Unsigned Types +* \[[ARTEMIS-1051](https://issues.apache.org/jira/browse/ARTEMIS-1051)\] \- Server Session is not thread safe +* \[[ARTEMIS-1053](https://issues.apache.org/jira/browse/ARTEMIS-1053)\] \- Use credentials when checking for active server +* \[[ARTEMIS-1057](https://issues.apache.org/jira/browse/ARTEMIS-1057)\] \- Lower log level of AMQ214023 +* \[[ARTEMIS-1064](https://issues.apache.org/jira/browse/ARTEMIS-1064)\] \- Getting "deliveryModes" of an Address from a client via management causes AMQ119034 +* \[[ARTEMIS-1065](https://issues.apache.org/jira/browse/ARTEMIS-1065)\] \- Bring back in v2.0.x the API that allows clients to get the list of JMS Topics and Queue +* \[[ARTEMIS-1067](https://issues.apache.org/jira/browse/ARTEMIS-1067)\] \- Wrong format string specifiers in exception messages +* \[[ARTEMIS-1068](https://issues.apache.org/jira/browse/ARTEMIS-1068)\] \- Routing for JMS over AMQP is broken +* \[[ARTEMIS-1069](https://issues.apache.org/jira/browse/ARTEMIS-1069)\] \- AMQP: Thread unsafe proton usage found +* \[[ARTEMIS-1072](https://issues.apache.org/jira/browse/ARTEMIS-1072)\] \- ./artemis create --java-opts will have options on bin instead of etc +* \[[ARTEMIS-1074](https://issues.apache.org/jira/browse/ARTEMIS-1074)\] \- Acceptors and Connectors that enable SSL don’t start up while using a password codec +* \[[ARTEMIS-1076](https://issues.apache.org/jira/browse/ARTEMIS-1076)\] \- Broken links in User Manual +* \[[ARTEMIS-1078](https://issues.apache.org/jira/browse/ARTEMIS-1078)\] \- Thread pool executor occasionally misses to create a new thread +* \[[ARTEMIS-1079](https://issues.apache.org/jira/browse/ARTEMIS-1079)\] \- CLI option for paging/blocking +* \[[ARTEMIS-1082](https://issues.apache.org/jira/browse/ARTEMIS-1082)\] \- OpenWire protocol race condition on create queue +* \[[ARTEMIS-1083](https://issues.apache.org/jira/browse/ARTEMIS-1083)\] \- WARNS are printed on start when no native persister is found for certain protocols +* \[[ARTEMIS-1085](https://issues.apache.org/jira/browse/ARTEMIS-1085)\] \- JDBC store does handle store lineup properly +* \[[ARTEMIS-1086](https://issues.apache.org/jira/browse/ARTEMIS-1086)\] \- Incorrect addition of SimpleString object to ApplicationProperties +* \[[ARTEMIS-1089](https://issues.apache.org/jira/browse/ARTEMIS-1089)\] \- Backup sync-up is slow when paging +* \[[ARTEMIS-1090](https://issues.apache.org/jira/browse/ARTEMIS-1090)\] \- Message not expired if absolute expiry time is 0 and ttl is set +* \[[ARTEMIS-1092](https://issues.apache.org/jira/browse/ARTEMIS-1092)\] \- Validated user + AMQP throwing exception +* \[[ARTEMIS-1093](https://issues.apache.org/jira/browse/ARTEMIS-1093)\] \- Full qualified queue name support +* \[[ARTEMIS-1094](https://issues.apache.org/jira/browse/ARTEMIS-1094)\] \- Replica can't connect to live via group-name when group size > 1 +* \[[ARTEMIS-1097](https://issues.apache.org/jira/browse/ARTEMIS-1097)\] \- Message priority ordering not being respected +* \[[ARTEMIS-1100](https://issues.apache.org/jira/browse/ARTEMIS-1100)\] \- AMQPMessage doesn't store header +* \[[ARTEMIS-1101](https://issues.apache.org/jira/browse/ARTEMIS-1101)\] \- Get of UserID and Timestamp incorrect in AMQPMessage +* \[[ARTEMIS-1105](https://issues.apache.org/jira/browse/ARTEMIS-1105)\] \- Null pointer when replicating paged messages +* \[[ARTEMIS-1107](https://issues.apache.org/jira/browse/ARTEMIS-1107)\] \- fix and Test AddressControl.sendMessage() +* \[[ARTEMIS-1108](https://issues.apache.org/jira/browse/ARTEMIS-1108)\] \- Shared-store with AIO fails to lock lockfile on NFS shares +* \[[ARTEMIS-1111](https://issues.apache.org/jira/browse/ARTEMIS-1111)\] \- Broker thread hangs if an AMQP consumer is closed during delivery +* \[[ARTEMIS-1113](https://issues.apache.org/jira/browse/ARTEMIS-1113)\] \- Stomp doesn't deal with management address appropriately +* \[[ARTEMIS-1114](https://issues.apache.org/jira/browse/ARTEMIS-1114)\] \- Journal Compactor possibly losing records +* \[[ARTEMIS-1121](https://issues.apache.org/jira/browse/ARTEMIS-1121)\] \- Expiry scanner under load might break queue +* \[[ARTEMIS-1122](https://issues.apache.org/jira/browse/ARTEMIS-1122)\] \- ActiveMQJAASSecurityManager class loading issue +* \[[ARTEMIS-1123](https://issues.apache.org/jira/browse/ARTEMIS-1123)\] \- Cleanup and add new AMQP protocol handling tests +* \[[ARTEMIS-1128](https://issues.apache.org/jira/browse/ARTEMIS-1128)\] \- QueueControlImpl.sendMessage() fixes +* \[[ARTEMIS-1130](https://issues.apache.org/jira/browse/ARTEMIS-1130)\] \- Log disallowed SSL protocols just once +* \[[ARTEMIS-1132](https://issues.apache.org/jira/browse/ARTEMIS-1132)\] \- Creating an AMQP resources when security is configured can hang or return wrong error type +* \[[ARTEMIS-1134](https://issues.apache.org/jira/browse/ARTEMIS-1134)\] \- Internal errors in AMQP protocol handler can lead to stalled connection +* \[[ARTEMIS-1135](https://issues.apache.org/jira/browse/ARTEMIS-1135)\] \- Overflows during integer addition or multiplication +* \[[ARTEMIS-1137](https://issues.apache.org/jira/browse/ARTEMIS-1137)\] \- Address configured without routing type causes exception on broker restart +* \[[ARTEMIS-1138](https://issues.apache.org/jira/browse/ARTEMIS-1138)\] \- OSGI Netty Epoll Fix +* \[[ARTEMIS-1140](https://issues.apache.org/jira/browse/ARTEMIS-1140)\] \- Avoid Queue lock on queueQuery +* \[[ARTEMIS-1150](https://issues.apache.org/jira/browse/ARTEMIS-1150)\] \- Logging config won't work when server has spaces + +Improvement +----------- + +* \[[ARTEMIS-590](https://issues.apache.org/jira/browse/ARTEMIS-590)\] \- Allow NettyConnector to use the default SSL Context +* \[[ARTEMIS-904](https://issues.apache.org/jira/browse/ARTEMIS-904)\] \- Remove cyclic dependencies from artemis-cli +* \[[ARTEMIS-1037](https://issues.apache.org/jira/browse/ARTEMIS-1037)\] \- Doc for the MAPPED journalType +* \[[ARTEMIS-1038](https://issues.apache.org/jira/browse/ARTEMIS-1038)\] \- Make use of Proton/Delivery.available and upgrade proton +* \[[ARTEMIS-1042](https://issues.apache.org/jira/browse/ARTEMIS-1042)\] \- Support AMQP failover lists +* \[[ARTEMIS-1045](https://issues.apache.org/jira/browse/ARTEMIS-1045)\] \- Performance improvement on AMQP +* \[[ARTEMIS-1047](https://issues.apache.org/jira/browse/ARTEMIS-1047)\] \- Improve GC Settings +* \[[ARTEMIS-1052](https://issues.apache.org/jira/browse/ARTEMIS-1052)\] \- Dealing with Expires and DLQ properly over AMQP +* \[[ARTEMIS-1054](https://issues.apache.org/jira/browse/ARTEMIS-1054)\] \- JVM Monitoring pauses logs +* \[[ARTEMIS-1056](https://issues.apache.org/jira/browse/ARTEMIS-1056)\] \- Performance improvements over AMQP +* \[[ARTEMIS-1059](https://issues.apache.org/jira/browse/ARTEMIS-1059)\] \- DEBUG option on Paging counters +* \[[ARTEMIS-1073](https://issues.apache.org/jira/browse/ARTEMIS-1073)\] \- Exposing AMQP Credits, and setting the default credits to 1000 +* \[[ARTEMIS-1075](https://issues.apache.org/jira/browse/ARTEMIS-1075)\] \- Add Routing Type to QueueControl management API +* \[[ARTEMIS-1077](https://issues.apache.org/jira/browse/ARTEMIS-1077)\] \- Improving InVM and Buffer usage +* \[[ARTEMIS-1084](https://issues.apache.org/jira/browse/ARTEMIS-1084)\] \- Oracle12C has table name size limit of 30 chars. When using paging and a table name of >10 chars. Artemis will work fine, until it's Page UUID size goes above 20 chars. Then start failing to page. +* \[[ARTEMIS-1096](https://issues.apache.org/jira/browse/ARTEMIS-1096)\] \- Load tests exhaust memory if global-max-size is not set +* \[[ARTEMIS-1102](https://issues.apache.org/jira/browse/ARTEMIS-1102)\] \- Implement cert-based auth for OpenWire +* \[[ARTEMIS-1110](https://issues.apache.org/jira/browse/ARTEMIS-1110)\] \- AMQP Transaction controller can reuse a single buffer for decoding commands +* \[[ARTEMIS-1117](https://issues.apache.org/jira/browse/ARTEMIS-1117)\] \- Improve IO Resilience to failures +* \[[ARTEMIS-1118](https://issues.apache.org/jira/browse/ARTEMIS-1118)\] \- AMQP is missing OperationContext callbacks +* \[[ARTEMIS-1119](https://issues.apache.org/jira/browse/ARTEMIS-1119)\] \- Flow control on ProtonHandler +* \[[ARTEMIS-1124](https://issues.apache.org/jira/browse/ARTEMIS-1124)\] \- JDBC Network Timeout configuration +* \[[ARTEMIS-1127](https://issues.apache.org/jira/browse/ARTEMIS-1127)\] \- AMQP: Match client SenderSettleMode instead of always defaulting to MIXED +* \[[ARTEMIS-1136](https://issues.apache.org/jira/browse/ARTEMIS-1136)\] \- Improve UnpooledUnsafeDirectByteBufWrapper +* \[[ARTEMIS-1141](https://issues.apache.org/jira/browse/ARTEMIS-1141)\] \- Validate Karaf features using the karaf plugin +* \[[ARTEMIS-1144](https://issues.apache.org/jira/browse/ARTEMIS-1144)\] \- Include SL4J->JUL logger bridge + +New Feature +----------- + +* \[[ARTEMIS-639](https://issues.apache.org/jira/browse/ARTEMIS-639)\] \- Make credit refresh size and refresh threshold configurable on AMQP protocol +* \[[ARTEMIS-898](https://issues.apache.org/jira/browse/ARTEMIS-898)\] \- Artemis Plugin Support +* \[[ARTEMIS-994](https://issues.apache.org/jira/browse/ARTEMIS-994)\] \- Support Netty Native Epoll on Linux +* \[[ARTEMIS-1080](https://issues.apache.org/jira/browse/ARTEMIS-1080)\] \- Implement AMQP::reject +* \[[ARTEMIS-1081](https://issues.apache.org/jira/browse/ARTEMIS-1081)\] \- Implement AMQP:undeliverableHere +* \[[ARTEMIS-1087](https://issues.apache.org/jira/browse/ARTEMIS-1087)\] \- Allow Buffer Pooling to be configurable for InVM Transport +* \[[ARTEMIS-1116](https://issues.apache.org/jira/browse/ARTEMIS-1116)\] \- map ldap roles to local artemis roles + +Task +---- + +* \[[ARTEMIS-794](https://issues.apache.org/jira/browse/ARTEMIS-794)\] \- AMQP: Modified and Rjected Outcomes are not being handled correctly +* \[[ARTEMIS-795](https://issues.apache.org/jira/browse/ARTEMIS-795)\] \- AMQP: Dynamic Node handling does not respect lifetime policies + +Test +---- + +* \[[ARTEMIS-1139](https://issues.apache.org/jira/browse/ARTEMIS-1139)\] \- Add some tests for AMQP over websockets \ No newline at end of file diff --git a/release-notes-2.2.0.md b/release-notes-2.2.0.md new file mode 100644 index 0000000..313571e --- /dev/null +++ b/release-notes-2.2.0.md @@ -0,0 +1,132 @@ + /\* */ ActiveMQ Artemis Release Notes 2.2.0 + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 2.2.0 +--------------------------------------------- + +A complete list of JIRAs for the 2.2.0 release can be found [here.](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12340541) + +Bug +--- + +* \[[ARTEMIS-565](https://issues.apache.org/jira/browse/ARTEMIS-565)\] \- Artemis use no free json.org +* \[[ARTEMIS-1154](https://issues.apache.org/jira/browse/ARTEMIS-1154)\] \- Backup activates if isolated on the network with no network health check +* \[[ARTEMIS-1155](https://issues.apache.org/jira/browse/ARTEMIS-1155)\] \- JDBC Sequential File would leak after open +* \[[ARTEMIS-1164](https://issues.apache.org/jira/browse/ARTEMIS-1164)\] \- NameNotFoundException when using java.naming.provider.url to set url via jndi +* \[[ARTEMIS-1172](https://issues.apache.org/jira/browse/ARTEMIS-1172)\] \- ActiveMQServerPlugin beforeDeliver and afterDeliver should pass in the ServerConsumer +* \[[ARTEMIS-1173](https://issues.apache.org/jira/browse/ARTEMIS-1173)\] \- AMQP assumes divert route to be non-null +* \[[ARTEMIS-1175](https://issues.apache.org/jira/browse/ARTEMIS-1175)\] \- Memory Leak Mqtt +* \[[ARTEMIS-1178](https://issues.apache.org/jira/browse/ARTEMIS-1178)\] \- Backwards compatibility issues +* \[[ARTEMIS-1180](https://issues.apache.org/jira/browse/ARTEMIS-1180)\] \- Artemis is logging warnings during server shut down +* \[[ARTEMIS-1186](https://issues.apache.org/jira/browse/ARTEMIS-1186)\] \- Consumer.receive hangs if http acceptor with non-zero batch-delay is configured +* \[[ARTEMIS-1187](https://issues.apache.org/jira/browse/ARTEMIS-1187)\] \- Incompatible version when recreating a session with older server +* \[[ARTEMIS-1189](https://issues.apache.org/jira/browse/ARTEMIS-1189)\] \- Fix checkstyle violations post checkstyle upgrade +* \[[ARTEMIS-1190](https://issues.apache.org/jira/browse/ARTEMIS-1190)\] \- Long/int type mismatch in JDBCSequentialFile.setWritePosition +* \[[ARTEMIS-1193](https://issues.apache.org/jira/browse/ARTEMIS-1193)\] \- \[extra-tests\] StartStopDeadlockTest#testDeadlock gets stuck +* \[[ARTEMIS-1195](https://issues.apache.org/jira/browse/ARTEMIS-1195)\] \- Artemis.create filters should be independent +* \[[ARTEMIS-1196](https://issues.apache.org/jira/browse/ARTEMIS-1196)\] \- Unusable JSON api on Karaf +* \[[ARTEMIS-1197](https://issues.apache.org/jira/browse/ARTEMIS-1197)\] \- Missing browse permission on Karaf +* \[[ARTEMIS-1204](https://issues.apache.org/jira/browse/ARTEMIS-1204)\] \- JDBCSequentialFile getSize does not work if the file is not open +* \[[ARTEMIS-1205](https://issues.apache.org/jira/browse/ARTEMIS-1205)\] \- AMQP Shared Durable Subscriber incorrect behaviour. +* \[[ARTEMIS-1206](https://issues.apache.org/jira/browse/ARTEMIS-1206)\] \- \[Core JMS Client\] Violates JMS Specification - allows two active connections with same clientid +* \[[ARTEMIS-1207](https://issues.apache.org/jira/browse/ARTEMIS-1207)\] \- \[Core JMS Client\] Align order of when setClientId can be called with AcitveMQ5 and QPID +* \[[ARTEMIS-1208](https://issues.apache.org/jira/browse/ARTEMIS-1208)\] \- Do not use reconnect-atempts=-1 in tests +* \[[ARTEMIS-1209](https://issues.apache.org/jira/browse/ARTEMIS-1209)\] \- JMS OpenWire client cannot read notifications from activemq.notifications topic +* \[[ARTEMIS-1212](https://issues.apache.org/jira/browse/ARTEMIS-1212)\] \- \[extra-tests\] HornetQProtocolManagerTest fails on InvalidDestinationException +* \[[ARTEMIS-1215](https://issues.apache.org/jira/browse/ARTEMIS-1215)\] \- Broker startup issue with MQTT +* \[[ARTEMIS-1220](https://issues.apache.org/jira/browse/ARTEMIS-1220)\] \- Diverted LargeMessage file corrupted during replication +* \[[ARTEMIS-1221](https://issues.apache.org/jira/browse/ARTEMIS-1221)\] \- Duplicated ID causes LargeMessage lost at backup +* \[[ARTEMIS-1223](https://issues.apache.org/jira/browse/ARTEMIS-1223)\] \- OutOfDirectMemoryError raised from TimedBuffer +* \[[ARTEMIS-1224](https://issues.apache.org/jira/browse/ARTEMIS-1224)\] \- Journal File Size needs to be multiple of alignment size +* \[[ARTEMIS-1225](https://issues.apache.org/jira/browse/ARTEMIS-1225)\] \- Log messages without prefixed id code in artemis-ra +* \[[ARTEMIS-1226](https://issues.apache.org/jira/browse/ARTEMIS-1226)\] \- Log messages without prefixed id code in artemis-jms-client +* \[[ARTEMIS-1228](https://issues.apache.org/jira/browse/ARTEMIS-1228)\] \- Log messages without prefixed id code in artemis-rest +* \[[ARTEMIS-1232](https://issues.apache.org/jira/browse/ARTEMIS-1232)\] \- deserialization black/white list are not used by regular JMS connection factories +* \[[ARTEMIS-1233](https://issues.apache.org/jira/browse/ARTEMIS-1233)\] \- Wrong Log level set on backupDeletingData log message. +* \[[ARTEMIS-1240](https://issues.apache.org/jira/browse/ARTEMIS-1240)\] \- Disconnect at client side on decoding error +* \[[ARTEMIS-1242](https://issues.apache.org/jira/browse/ARTEMIS-1242)\] \- OpenWire Transactions never removed +* \[[ARTEMIS-1243](https://issues.apache.org/jira/browse/ARTEMIS-1243)\] \- Release ReferenceCounted messages +* \[[ARTEMIS-1244](https://issues.apache.org/jira/browse/ARTEMIS-1244)\] \- \[mqtt\] Retain flag of received message is lost (caught by outgoing interceptor) +* \[[ARTEMIS-1246](https://issues.apache.org/jira/browse/ARTEMIS-1246)\] \- AMQ119019: Queue already exists +* \[[ARTEMIS-1247](https://issues.apache.org/jira/browse/ARTEMIS-1247)\] \- Allow tracing on ReplicatedJournal +* \[[ARTEMIS-1250](https://issues.apache.org/jira/browse/ARTEMIS-1250)\] \- ClusteredMessageCounterTest.testNonDurableMessageAddedWithPaging fails +* \[[ARTEMIS-1251](https://issues.apache.org/jira/browse/ARTEMIS-1251)\] \- Log messages without prefixed id code in artemis-jms-server +* \[[ARTEMIS-1253](https://issues.apache.org/jira/browse/ARTEMIS-1253)\] \- Regression: NetworkHealthCheck is not restarting the server +* \[[ARTEMIS-1254](https://issues.apache.org/jira/browse/ARTEMIS-1254)\] \- JDBCStorageManager does not allocate LargeMessage handler new executor +* \[[ARTEMIS-1256](https://issues.apache.org/jira/browse/ARTEMIS-1256)\] \- PagingOMETest.testPageCleanup fails +* \[[ARTEMIS-1257](https://issues.apache.org/jira/browse/ARTEMIS-1257)\] \- ActiveMQActivationSpec.java should use boxed types for attributes values according to the JCA specification +* \[[ARTEMIS-1259](https://issues.apache.org/jira/browse/ARTEMIS-1259)\] \- Log messages without prefixed id code in artemis-server-osgi +* \[[ARTEMIS-1261](https://issues.apache.org/jira/browse/ARTEMIS-1261)\] \- Adjust default confirmation-window-size for bridges +* \[[ARTEMIS-1268](https://issues.apache.org/jira/browse/ARTEMIS-1268)\] \- stomp client can send large message but not receive +* \[[ARTEMIS-1269](https://issues.apache.org/jira/browse/ARTEMIS-1269)\] \- Replication Initial Synchronization won't finish sometimes +* \[[ARTEMIS-1272](https://issues.apache.org/jira/browse/ARTEMIS-1272)\] \- Artemis incorrectly handle MQTT acknowledgement +* \[[ARTEMIS-1274](https://issues.apache.org/jira/browse/ARTEMIS-1274)\] \- MultipleProducersTest.wrongQueue fails +* \[[ARTEMIS-1277](https://issues.apache.org/jira/browse/ARTEMIS-1277)\] \- purgeOnNoConsumer is not working properly +* \[[ARTEMIS-1280](https://issues.apache.org/jira/browse/ARTEMIS-1280)\] \- Redistribution Future does not get deleted if it gets canceled before it's run +* \[[ARTEMIS-1282](https://issues.apache.org/jira/browse/ARTEMIS-1282)\] \- createQueue(String address, RoutingType routingType, String queueName) is creating a temporaryQueue +* \[[ARTEMIS-1283](https://issues.apache.org/jira/browse/ARTEMIS-1283)\] \- AMQP Drain of a link encounters unexpected response delay +* \[[ARTEMIS-1284](https://issues.apache.org/jira/browse/ARTEMIS-1284)\] \- Deleting queue is not cleaning up Paging +* \[[ARTEMIS-1288](https://issues.apache.org/jira/browse/ARTEMIS-1288)\] \- Crash on compacting could leave to server not being able to restart +* \[[ARTEMIS-1289](https://issues.apache.org/jira/browse/ARTEMIS-1289)\] \- Unable to configure queues containing "/" in broker.xml +* \[[ARTEMIS-1290](https://issues.apache.org/jira/browse/ARTEMIS-1290)\] \- Prefixes are not prepended on QueueQuery Results +* \[[ARTEMIS-1292](https://issues.apache.org/jira/browse/ARTEMIS-1292)\] \- Removing paging folder can lead to message loss +* \[[ARTEMIS-1293](https://issues.apache.org/jira/browse/ARTEMIS-1293)\] \- Log messages without prefixed id code in artemis-commons +* \[[ARTEMIS-1294](https://issues.apache.org/jira/browse/ARTEMIS-1294)\] \- TimedBuffer is not timing, reverting timeout policy +* \[[ARTEMIS-1296](https://issues.apache.org/jira/browse/ARTEMIS-1296)\] \- Quorum vote doesn't check for live +* \[[ARTEMIS-1300](https://issues.apache.org/jira/browse/ARTEMIS-1300)\] \- Sending Core & receiving AMQP can lead to deadlock when direct delivering +* \[[ARTEMIS-1301](https://issues.apache.org/jira/browse/ARTEMIS-1301)\] \- Network failures recognition on backpressure while streaming large messages +* \[[ARTEMIS-1304](https://issues.apache.org/jira/browse/ARTEMIS-1304)\] \- Communication Timeout on Commit & Failover can lead to message loss +* \[[ARTEMIS-1311](https://issues.apache.org/jira/browse/ARTEMIS-1311)\] \- Log messages without prefixed id code in artemis-core-client + +Improvement +----------- + +* \[[ARTEMIS-1129](https://issues.apache.org/jira/browse/ARTEMIS-1129)\] \- Client Dependencies +* \[[ARTEMIS-1156](https://issues.apache.org/jira/browse/ARTEMIS-1156)\] \- Long Autoboxing occurring on Hot Path +* \[[ARTEMIS-1158](https://issues.apache.org/jira/browse/ARTEMIS-1158)\] \- Expose Netty.channelID properly +* \[[ARTEMIS-1159](https://issues.apache.org/jira/browse/ARTEMIS-1159)\] \- Fixes and Improvement to the AMQP test client +* \[[ARTEMIS-1162](https://issues.apache.org/jira/browse/ARTEMIS-1162)\] \- Make new Adapting TimedBuffer and old Fixed TimedBuffer configurable +* \[[ARTEMIS-1163](https://issues.apache.org/jira/browse/ARTEMIS-1163)\] \- Refactory connection factory client creation +* \[[ARTEMIS-1169](https://issues.apache.org/jira/browse/ARTEMIS-1169)\] \- Implement Interceptors for the AMQP protocol +* \[[ARTEMIS-1174](https://issues.apache.org/jira/browse/ARTEMIS-1174)\] \- Update Hacking Guide Documentation: IDE Integration +* \[[ARTEMIS-1176](https://issues.apache.org/jira/browse/ARTEMIS-1176)\] \- Use text messages for management reply messages +* \[[ARTEMIS-1179](https://issues.apache.org/jira/browse/ARTEMIS-1179)\] \- Add Optional Client JMS Destination Cache +* \[[ARTEMIS-1188](https://issues.apache.org/jira/browse/ARTEMIS-1188)\] \- Update sevntu to 1.24.0 available in maven central +* \[[ARTEMIS-1211](https://issues.apache.org/jira/browse/ARTEMIS-1211)\] \- Allow local transactions when no jta in Resource Adapter +* \[[ARTEMIS-1214](https://issues.apache.org/jira/browse/ARTEMIS-1214)\] \- Improve performance of read on Paging +* \[[ARTEMIS-1248](https://issues.apache.org/jira/browse/ARTEMIS-1248)\] \- Reduce garbage while Paging +* \[[ARTEMIS-1252](https://issues.apache.org/jira/browse/ARTEMIS-1252)\] \- Add service loading of password codec to obtain its implementation from the application’s root context, rather than using a class loader +* \[[ARTEMIS-1258](https://issues.apache.org/jira/browse/ARTEMIS-1258)\] \- ActiveMQServerPlugin beforeSend and afterSend should pass in ServerSession +* \[[ARTEMIS-1302](https://issues.apache.org/jira/browse/ARTEMIS-1302)\] \- Make quorum voting more transparent + +New Feature +----------- + +* \[[ARTEMIS-821](https://issues.apache.org/jira/browse/ARTEMIS-821)\] \- Support scheduled messages with the STOMP protocol +* \[[ARTEMIS-1182](https://issues.apache.org/jira/browse/ARTEMIS-1182)\] \- Add / Port in support for JNDIReferenceFactory and JNDIStorable +* \[[ARTEMIS-1235](https://issues.apache.org/jira/browse/ARTEMIS-1235)\] \- Support the ability to enable queue and address deletion when broker.xml changes +* \[[ARTEMIS-1264](https://issues.apache.org/jira/browse/ARTEMIS-1264)\] \- Client authentication via Kerberos TLS Cipher Suites (RFC 2712) + +Task +---- + +* \[[ARTEMIS-1153](https://issues.apache.org/jira/browse/ARTEMIS-1153)\] \- Create an .NET client example for AMQP and Durable Subscriptions +* \[[ARTEMIS-1168](https://issues.apache.org/jira/browse/ARTEMIS-1168)\] \- Update Qpid JMS to 0.23.0 and Proton-J to 0.19.0 +* \[[ARTEMIS-1266](https://issues.apache.org/jira/browse/ARTEMIS-1266)\] \- Mapped Journal refactoring + +Test +---- + +* \[[ARTEMIS-1160](https://issues.apache.org/jira/browse/ARTEMIS-1160)\] \- AMQP Test client doesn't configure its netty WS handler with the AMQP frame size +* \[[ARTEMIS-1166](https://issues.apache.org/jira/browse/ARTEMIS-1166)\] \- Handle WebSocket continuation frames on AMQP test client +* \[[ARTEMIS-1167](https://issues.apache.org/jira/browse/ARTEMIS-1167)\] \- Add test to validate broker handling of AMQP idle timeout handling +* \[[ARTEMIS-1276](https://issues.apache.org/jira/browse/ARTEMIS-1276)\] \- \[openwire-tests\] Enable more OpenWire tests (from ActiveMQ 5) +* \[[ARTEMIS-1287](https://issues.apache.org/jira/browse/ARTEMIS-1287)\] \- Test Suite cleanups \ No newline at end of file diff --git a/release-notes-2.3.0.md b/release-notes-2.3.0.md new file mode 100644 index 0000000..5b2bae3 --- /dev/null +++ b/release-notes-2.3.0.md @@ -0,0 +1,91 @@ + /\* */ ActiveMQ Artemis Release Notes 2.3.0 + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 2.3.0 +--------------------------------------------- + +A complete list of JIRAs for the 2.3.0 release can be found [here.](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12341247) + +Bug +--- + +* \[[ARTEMIS-1255](https://issues.apache.org/jira/browse/ARTEMIS-1255)\] \- Unable to validate user +* \[[ARTEMIS-1271](https://issues.apache.org/jira/browse/ARTEMIS-1271)\] \- Deadlock on shutdown may occur if using shared store and network cable is pulled +* \[[ARTEMIS-1291](https://issues.apache.org/jira/browse/ARTEMIS-1291)\] \- Broken link in a documentation +* \[[ARTEMIS-1297](https://issues.apache.org/jira/browse/ARTEMIS-1297)\] \- AMQPMessages cannot be load balanced across a Message Bridge +* \[[ARTEMIS-1299](https://issues.apache.org/jira/browse/ARTEMIS-1299)\] \- Unable to configure comma delimited enabledProtocols +* \[[ARTEMIS-1303](https://issues.apache.org/jira/browse/ARTEMIS-1303)\] \- Potential dead lock in Replication Endpoint +* \[[ARTEMIS-1305](https://issues.apache.org/jira/browse/ARTEMIS-1305)\] \- Server Frozen during shutdown if RA is retrying +* \[[ARTEMIS-1308](https://issues.apache.org/jira/browse/ARTEMIS-1308)\] \- Client Acknowledge not performant +* \[[ARTEMIS-1310](https://issues.apache.org/jira/browse/ARTEMIS-1310)\] \- Provide GSSAPI (kerberos) SASL mechanism for AMQP +* \[[ARTEMIS-1311](https://issues.apache.org/jira/browse/ARTEMIS-1311)\] \- Log messages without prefixed id code in artemis-core-client +* \[[ARTEMIS-1312](https://issues.apache.org/jira/browse/ARTEMIS-1312)\] \- TimedBuffer doubled timeout with blocking flush +* \[[ARTEMIS-1313](https://issues.apache.org/jira/browse/ARTEMIS-1313)\] \- getAddresses in PostOfficeImpl does not correctly return all addresses +* \[[ARTEMIS-1315](https://issues.apache.org/jira/browse/ARTEMIS-1315)\] \- Client disconnection may cause consumer to hang +* \[[ARTEMIS-1317](https://issues.apache.org/jira/browse/ARTEMIS-1317)\] \- Messages that expire on OpenWire client are lost (never make it to ExpiryQueue, if one is configured) +* \[[ARTEMIS-1320](https://issues.apache.org/jira/browse/ARTEMIS-1320)\] \- Support arbitrary URL for connection between REST interface and broker +* \[[ARTEMIS-1323](https://issues.apache.org/jira/browse/ARTEMIS-1323)\] \- REST: manual acknowledgment not working as documented +* \[[ARTEMIS-1328](https://issues.apache.org/jira/browse/ARTEMIS-1328)\] \- Delivery guard can take too long +* \[[ARTEMIS-1332](https://issues.apache.org/jira/browse/ARTEMIS-1332)\] \- The broker should always return a response when a client adds metadata +* \[[ARTEMIS-1333](https://issues.apache.org/jira/browse/ARTEMIS-1333)\] \- Completion listener can lead to message loss in case of crash +* \[[ARTEMIS-1353](https://issues.apache.org/jira/browse/ARTEMIS-1353)\] \- Replication packets can get out of order +* \[[ARTEMIS-1354](https://issues.apache.org/jira/browse/ARTEMIS-1354)\] \- AIOSequentialFile does not call IOError on write failure +* \[[ARTEMIS-1355](https://issues.apache.org/jira/browse/ARTEMIS-1355)\] \- Default config for client reconnection attempts does not match documentation +* \[[ARTEMIS-1359](https://issues.apache.org/jira/browse/ARTEMIS-1359)\] \- AMQP: Broker reencodes the message Header needlessly on outbound dispatch +* \[[ARTEMIS-1368](https://issues.apache.org/jira/browse/ARTEMIS-1368)\] \- Artemis gets to state when it doesn't respond to producer +* \[[ARTEMIS-1376](https://issues.apache.org/jira/browse/ARTEMIS-1376)\] \- AMQ224014: Failed to close session: java.lang.NullPointerException +* \[[ARTEMIS-1378](https://issues.apache.org/jira/browse/ARTEMIS-1378)\] \- ActiveMQServer.updateQueue or cli.updateQueue is broken, may lose messages +* \[[ARTEMIS-1379](https://issues.apache.org/jira/browse/ARTEMIS-1379)\] \- Some queue stats are not thread-safe +* \[[ARTEMIS-1385](https://issues.apache.org/jira/browse/ARTEMIS-1385)\] \- Incomplete comment in default broker.xml file +* \[[ARTEMIS-1389](https://issues.apache.org/jira/browse/ARTEMIS-1389)\] \- Closing session on open wire will throw a NPE on logs + +Improvement +----------- + +* \[[ARTEMIS-1306](https://issues.apache.org/jira/browse/ARTEMIS-1306)\] \- Clarify identity for authentication failures +* \[[ARTEMIS-1321](https://issues.apache.org/jira/browse/ARTEMIS-1321)\] \- Remove final modifier from org.apache.activemq.artemis.ra.ActiveMQRASession +* \[[ARTEMIS-1327](https://issues.apache.org/jira/browse/ARTEMIS-1327)\] \- Support checked exceptions from ActiveMQServerPlugin +* \[[ARTEMIS-1335](https://issues.apache.org/jira/browse/ARTEMIS-1335)\] \- Update Netty to 4.1.14 +* \[[ARTEMIS-1343](https://issues.apache.org/jira/browse/ARTEMIS-1343)\] \- Update Configuration Transport Documentation +* \[[ARTEMIS-1346](https://issues.apache.org/jira/browse/ARTEMIS-1346)\] \- Add documentation for new Management Console +* \[[ARTEMIS-1347](https://issues.apache.org/jira/browse/ARTEMIS-1347)\] \- ActiveMQServerPlugin beforeCreateConsumer should have the QueueBinding as an argument +* \[[ARTEMIS-1356](https://issues.apache.org/jira/browse/ARTEMIS-1356)\] \- Avoid allocations and atomic operations to recognize handler's thread +* \[[ARTEMIS-1357](https://issues.apache.org/jira/browse/ARTEMIS-1357)\] \- TypedProperties encode/decode improvement +* \[[ARTEMIS-1361](https://issues.apache.org/jira/browse/ARTEMIS-1361)\] \- Support Updating queue config from broker.xml at runtime +* \[[ARTEMIS-1367](https://issues.apache.org/jira/browse/ARTEMIS-1367)\] \- Add LOG to the Critical Analyzer policies +* \[[ARTEMIS-1369](https://issues.apache.org/jira/browse/ARTEMIS-1369)\] \- Include queue name in security errors where appropriate +* \[[ARTEMIS-1370](https://issues.apache.org/jira/browse/ARTEMIS-1370)\] \- consumer command, does not offer a ClientID command line arg +* \[[ARTEMIS-1374](https://issues.apache.org/jira/browse/ARTEMIS-1374)\] \- AMQP: Improve transfer tag generation and add tag pooling +* \[[ARTEMIS-1377](https://issues.apache.org/jira/browse/ARTEMIS-1377)\] \- AMQP: Better handle message disposition events +* \[[ARTEMIS-1381](https://issues.apache.org/jira/browse/ARTEMIS-1381)\] \- add a JMX operation removeAllMessages() to the queue +* \[[ARTEMIS-1384](https://issues.apache.org/jira/browse/ARTEMIS-1384)\] \- add a CLI command to display basic queue stats + +New Feature +----------- + +* \[[ARTEMIS-1270](https://issues.apache.org/jira/browse/ARTEMIS-1270)\] \- Provide a Management Console for Artemis +* \[[ARTEMIS-1322](https://issues.apache.org/jira/browse/ARTEMIS-1322)\] \- Add a ServerLocator option to ignore topology for load-balancing +* \[[ARTEMIS-1324](https://issues.apache.org/jira/browse/ARTEMIS-1324)\] \- Critical Analysis and deadlock detection on broker +* \[[ARTEMIS-1342](https://issues.apache.org/jira/browse/ARTEMIS-1342)\] \- Support Netty Native KQueue on MacOS +* \[[ARTEMIS-1348](https://issues.apache.org/jira/browse/ARTEMIS-1348)\] \- Support LVQ for AMQP +* \[[ARTEMIS-1372](https://issues.apache.org/jira/browse/ARTEMIS-1372)\] \- Support kerberos authentication to LDAP for the LdapJAASLoginModule +* \[[ARTEMIS-1373](https://issues.apache.org/jira/browse/ARTEMIS-1373)\] \- Allow chaining of Kerberos and LDAP JAAS Login Modules for authentication and authorisation + +Task +---- + +* \[[ARTEMIS-1316](https://issues.apache.org/jira/browse/ARTEMIS-1316)\] \- Document Scheduled message support over AMQP +* \[[ARTEMIS-1325](https://issues.apache.org/jira/browse/ARTEMIS-1325)\] \- Update Proton 0.20 and qpid-jms 0.24 +* \[[ARTEMIS-1350](https://issues.apache.org/jira/browse/ARTEMIS-1350)\] \- Update management console to expose client side objects +* \[[ARTEMIS-1358](https://issues.apache.org/jira/browse/ARTEMIS-1358)\] \- Eliminate code duplication in MQTTProtocolManager +* \[[ARTEMIS-1360](https://issues.apache.org/jira/browse/ARTEMIS-1360)\] \- Documenting runtime reloadable configuration +* \[[ARTEMIS-1371](https://issues.apache.org/jira/browse/ARTEMIS-1371)\] \- Update JGroups stack files +* \[[ARTEMIS-1380](https://issues.apache.org/jira/browse/ARTEMIS-1380)\] \- Simplify documentation to refer to URL syntax rather than API \ No newline at end of file diff --git a/release-notes-2.4.0.md b/release-notes-2.4.0.md new file mode 100644 index 0000000..c11abc2 --- /dev/null +++ b/release-notes-2.4.0.md @@ -0,0 +1,115 @@ + /\* */ ActiveMQ Artemis Release Notes 2.3.0 + +* [ActiveMQ Artemis](index.html) +* [Documentation](docs.html) +* [Download](download.html) + +![ActiveMQ logo](images/activemq-logo.png) + +ActiveMQ Artemis +================ + +Release Notes - Apache ActiveMQ Artemis 2.4.0 +--------------------------------------------- + +A complete list of JIRAs for the 2.4.0 release can be found [here.](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12341540&projectId=12315920) + +Bug +--- + +* \[[ARTEMIS-450](https://issues.apache.org/jira/browse/ARTEMIS-450)\] \- Deadlocked broker over addHead and Rollback with AMQP +* \[[ARTEMIS-1218](https://issues.apache.org/jira/browse/ARTEMIS-1218)\] \- Add support for MQTT "link stealing" (MQTT-3.1.4-2) +* \[[ARTEMIS-1227](https://issues.apache.org/jira/browse/ARTEMIS-1227)\] \- Internal properties not removed from messages +* \[[ARTEMIS-1314](https://issues.apache.org/jira/browse/ARTEMIS-1314)\] \- Using the message filter with JMSCorrelationID seems not to work +* \[[ARTEMIS-1352](https://issues.apache.org/jira/browse/ARTEMIS-1352)\] \- Artemis 2.2.0, createTopic create an anycast queue when there is no consumer created +* \[[ARTEMIS-1366](https://issues.apache.org/jira/browse/ARTEMIS-1366)\] \- Openwire consumer is listed twice in hawtio console, consuming from Advisory & requested queue/address +* \[[ARTEMIS-1382](https://issues.apache.org/jira/browse/ARTEMIS-1382)\] \- Log messages without prefixed id code in artemis-server +* \[[ARTEMIS-1391](https://issues.apache.org/jira/browse/ARTEMIS-1391)\] \- Embedding two instances of Artemis as MQTT broker doesn't work +* \[[ARTEMIS-1393](https://issues.apache.org/jira/browse/ARTEMIS-1393)\] \- CriticalAnalyzer timeout uses System::currentTimeMillis +* \[[ARTEMIS-1395](https://issues.apache.org/jira/browse/ARTEMIS-1395)\] \- FindBugs: Dubious method used: System.exit() in CoreMessage#toString() +* \[[ARTEMIS-1397](https://issues.apache.org/jira/browse/ARTEMIS-1397)\] \- io.netty.buffer.UnpooledUnsafeDirectByteBufWrapper not found when running in an OSGI container +* \[[ARTEMIS-1398](https://issues.apache.org/jira/browse/ARTEMIS-1398)\] \- MQTT client sending wrong password will hang indefinitely, broker logs Error disconnecting client: null +* \[[ARTEMIS-1400](https://issues.apache.org/jira/browse/ARTEMIS-1400)\] \- FindBugs warnings +* \[[ARTEMIS-1401](https://issues.apache.org/jira/browse/ARTEMIS-1401)\] \- Numerical overflow fix when using System::nanoTime +* \[[ARTEMIS-1403](https://issues.apache.org/jira/browse/ARTEMIS-1403)\] \- Wildcard matching should always respect delimiters +* \[[ARTEMIS-1405](https://issues.apache.org/jira/browse/ARTEMIS-1405)\] \- PurgeOnNoConsumer queue config is not persisted on restart +* \[[ARTEMIS-1407](https://issues.apache.org/jira/browse/ARTEMIS-1407)\] \- FindBugs: Suspicious calls to generic collection methods in AMQPConnectionCallback.java +* \[[ARTEMIS-1410](https://issues.apache.org/jira/browse/ARTEMIS-1410)\] \- Coverity: Identical code for different branches +* \[[ARTEMIS-1413](https://issues.apache.org/jira/browse/ARTEMIS-1413)\] \- JMSDeliveryMode/Priority is lost when AMQP Producer and CORE Consumer +* \[[ARTEMIS-1417](https://issues.apache.org/jira/browse/ARTEMIS-1417)\] \- Failback not working on NFSv4 +* \[[ARTEMIS-1418](https://issues.apache.org/jira/browse/ARTEMIS-1418)\] \- AIOSequentialFile does not throw Critical IO in several places +* \[[ARTEMIS-1419](https://issues.apache.org/jira/browse/ARTEMIS-1419)\] \- OpenWire advisory message never deleted +* \[[ARTEMIS-1421](https://issues.apache.org/jira/browse/ARTEMIS-1421)\] \- Duplicate queue in XML possible +* \[[ARTEMIS-1422](https://issues.apache.org/jira/browse/ARTEMIS-1422)\] \- Support wildcard config for address matching +* \[[ARTEMIS-1424](https://issues.apache.org/jira/browse/ARTEMIS-1424)\] \- Openwire not work with different tightEncoding options +* \[[ARTEMIS-1425](https://issues.apache.org/jira/browse/ARTEMIS-1425)\] \- Unable to purge messages in queue (via hawtio) +* \[[ARTEMIS-1431](https://issues.apache.org/jira/browse/ARTEMIS-1431)\] \- AMQ154003: Unable to reconnect org.apache.activemq.artemis.ra.inflow.ActiveMQActivationSpec +* \[[ARTEMIS-1438](https://issues.apache.org/jira/browse/ARTEMIS-1438)\] \- Upgrade hawtio to 1.5.4 +* \[[ARTEMIS-1440](https://issues.apache.org/jira/browse/ARTEMIS-1440)\] \- Artemis broker.forceFailover not shutting down broker +* \[[ARTEMIS-1441](https://issues.apache.org/jira/browse/ARTEMIS-1441)\] \- Critical Analyzer checkPeriod is not properly parsed +* \[[ARTEMIS-1442](https://issues.apache.org/jira/browse/ARTEMIS-1442)\] \- Server should shut itself down if can't open new file +* \[[ARTEMIS-1443](https://issues.apache.org/jira/browse/ARTEMIS-1443)\] \- When running Artemis in OSGI specifying CORE protocol causes it not to start +* \[[ARTEMIS-1444](https://issues.apache.org/jira/browse/ARTEMIS-1444)\] \- Large messages are not working with OpenWire protocol +* \[[ARTEMIS-1445](https://issues.apache.org/jira/browse/ARTEMIS-1445)\] \- Auto-created addresses and queues are not being auto-deleted for AMQP and OpenWire clients +* \[[ARTEMIS-1448](https://issues.apache.org/jira/browse/ARTEMIS-1448)\] \- Core to JMS message fails to convert priority +* \[[ARTEMIS-1450](https://issues.apache.org/jira/browse/ARTEMIS-1450)\] \- InitialMessagePacketSize property can not be set on ConnectionFactoryConfiguration +* \[[ARTEMIS-1455](https://issues.apache.org/jira/browse/ARTEMIS-1455)\] \- HQ222142: Error on resetting large message deliver - null: java.lang.NullPointerException +* \[[ARTEMIS-1456](https://issues.apache.org/jira/browse/ARTEMIS-1456)\] \- createQueue(null, ...) is failing, even though documentation says this is valid call +* \[[ARTEMIS-1457](https://issues.apache.org/jira/browse/ARTEMIS-1457)\] \- Diverts are not working with Openwire protocol +* \[[ARTEMIS-1461](https://issues.apache.org/jira/browse/ARTEMIS-1461)\] \- Allow Property changes on AMQP message and reencode +* \[[ARTEMIS-1464](https://issues.apache.org/jira/browse/ARTEMIS-1464)\] \- Core to AMQP conversion BytesMessage corrupts bytes +* \[[ARTEMIS-1468](https://issues.apache.org/jira/browse/ARTEMIS-1468)\] \- Address can't be deleted via management console +* \[[ARTEMIS-1470](https://issues.apache.org/jira/browse/ARTEMIS-1470)\] \- Console move message broken +* \[[ARTEMIS-1473](https://issues.apache.org/jira/browse/ARTEMIS-1473)\] \- System property BROKER\_BIND\_URL with parameters will not work if AMQ\_USER and AMQ\_PASSWORD also set +* \[[ARTEMIS-1475](https://issues.apache.org/jira/browse/ARTEMIS-1475)\] \- NPE when deploying 2 MDBs with same clientID/subscriptionName +* \[[ARTEMIS-1479](https://issues.apache.org/jira/browse/ARTEMIS-1479)\] \- Set validated user in all messages +* \[[ARTEMIS-1480](https://issues.apache.org/jira/browse/ARTEMIS-1480)\] \- Console purge Queue is broken +* \[[ARTEMIS-1482](https://issues.apache.org/jira/browse/ARTEMIS-1482)\] \- Catch malformed simple string +* \[[ARTEMIS-1483](https://issues.apache.org/jira/browse/ARTEMIS-1483)\] \- Upgrade beanutils +* \[[ARTEMIS-1484](https://issues.apache.org/jira/browse/ARTEMIS-1484)\] \- Live's topology update may be ignored +* \[[ARTEMIS-1490](https://issues.apache.org/jira/browse/ARTEMIS-1490)\] \- Race on deleteAddress when autocreated +* \[[ARTEMIS-1491](https://issues.apache.org/jira/browse/ARTEMIS-1491)\] \- multiple Jolokia instances shipped + +Improvement +----------- + +* \[[ARTEMIS-1318](https://issues.apache.org/jira/browse/ARTEMIS-1318)\] \- Uses unbuffered MAPPED Journal if no data-sync is required +* \[[ARTEMIS-1390](https://issues.apache.org/jira/browse/ARTEMIS-1390)\] \- 2 minute delay in hawtio startup on host with no internet access +* \[[ARTEMIS-1420](https://issues.apache.org/jira/browse/ARTEMIS-1420)\] \- enforce timeout on network client handshake +* \[[ARTEMIS-1423](https://issues.apache.org/jira/browse/ARTEMIS-1423)\] \- \[ActiveMQServerControl.listQueues(), filtering \] add numeric filtering for ActiveMQServerControl.listQueues() +* \[[ARTEMIS-1433](https://issues.apache.org/jira/browse/ARTEMIS-1433)\] \- expose total Address memory usage in JMX +* \[[ARTEMIS-1435](https://issues.apache.org/jira/browse/ARTEMIS-1435)\] \- Expose the Jolokia security configuration for the web console +* \[[ARTEMIS-1436](https://issues.apache.org/jira/browse/ARTEMIS-1436)\] \- update CLI StatQueue to allow greater\_than/less\_than operations +* \[[ARTEMIS-1439](https://issues.apache.org/jira/browse/ARTEMIS-1439)\] \- Upgrade to Netty 4.1.16.Final +* \[[ARTEMIS-1446](https://issues.apache.org/jira/browse/ARTEMIS-1446)\] \- Support passing in properties to Transformers for configuration +* \[[ARTEMIS-1451](https://issues.apache.org/jira/browse/ARTEMIS-1451)\] \- Remove synchronization on ActiveMQThreadPoolExecutor +* \[[ARTEMIS-1452](https://issues.apache.org/jira/browse/ARTEMIS-1452)\] \- Journal Configuration Improvements +* \[[ARTEMIS-1454](https://issues.apache.org/jira/browse/ARTEMIS-1454)\] \- Support SASL in outgoing AMQP connections +* \[[ARTEMIS-1465](https://issues.apache.org/jira/browse/ARTEMIS-1465)\] \- Improve MQTT protocol logging +* \[[ARTEMIS-1469](https://issues.apache.org/jira/browse/ARTEMIS-1469)\] \- Support trusting any SSL client certificate for testing purposes +* \[[ARTEMIS-1474](https://issues.apache.org/jira/browse/ARTEMIS-1474)\] \- TimedBuffer improved doc and refactored dead brenches on methods +* \[[ARTEMIS-1476](https://issues.apache.org/jira/browse/ARTEMIS-1476)\] \- HdrHistogram support on verbose SyncCalculation +* \[[ARTEMIS-1477](https://issues.apache.org/jira/browse/ARTEMIS-1477)\] \- Remove netty-all dependency from clients +* \[[ARTEMIS-1481](https://issues.apache.org/jira/browse/ARTEMIS-1481)\] \- Update to hawtio 1.5.5 +* \[[ARTEMIS-1485](https://issues.apache.org/jira/browse/ARTEMIS-1485)\] \- ActiveMQTestBase.threadDump should print information about locks and deadlocks +* \[[ARTEMIS-1489](https://issues.apache.org/jira/browse/ARTEMIS-1489)\] \- Add TimedBuffer to Critical Analyzer + +New Feature +----------- + +* \[[ARTEMIS-534](https://issues.apache.org/jira/browse/ARTEMIS-534)\] \- Allow JMX configuration from broker.xml +* \[[ARTEMIS-1428](https://issues.apache.org/jira/browse/ARTEMIS-1428)\] \- Allow configuration of max frame payload length for STOMP web-socket +* \[[ARTEMIS-1447](https://issues.apache.org/jira/browse/ARTEMIS-1447)\] \- JDBC NodeManager to support JDBC HA Shared Store +* \[[ARTEMIS-1463](https://issues.apache.org/jira/browse/ARTEMIS-1463)\] \- Implement rbac of management objects + +Task +---- + +* \[[ARTEMIS-1426](https://issues.apache.org/jira/browse/ARTEMIS-1426)\] \- Update stomp.js in chat example +* \[[ARTEMIS-1432](https://issues.apache.org/jira/browse/ARTEMIS-1432)\] \- update to qpid-jms 0.25.0 and proton-j 0.22.0 +* \[[ARTEMIS-1434](https://issues.apache.org/jira/browse/ARTEMIS-1434)\] \- handle edge cases when driving transport#tick(now) with nanoTime derived values +* \[[ARTEMIS-1453](https://issues.apache.org/jira/browse/ARTEMIS-1453)\] \- AMQP: Update Qpid JMS to latest 0.26.0 release +* \[[ARTEMIS-1462](https://issues.apache.org/jira/browse/ARTEMIS-1462)\] \- Allow ActiveMQScheduledComponent initial delay configuration +* \[[ARTEMIS-1466](https://issues.apache.org/jira/browse/ARTEMIS-1466)\] \- Upgrade Node.js version to comply with GitBook 3.2.3 +* \[[ARTEMIS-1467](https://issues.apache.org/jira/browse/ARTEMIS-1467)\] \- Create example for bridging messages from the 5.x broker to Artemis +* \[[ARTEMIS-1488](https://issues.apache.org/jira/browse/ARTEMIS-1488)\] \- Add "all" client jar to distribution \ No newline at end of file diff --git a/release-plans.md b/release-plans.md new file mode 100644 index 0000000..8c52245 --- /dev/null +++ b/release-plans.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- Release Plans + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Release Plans](release-plans.html) + + +### Information + +* [Release Info](release-info.html) +* [How you can help release](how-you-can-help-release.html) + +### Release Plans + +* [4.0 RC 1 Guide](40-rc-1-guide.html) + diff --git a/replicated-leveldb-store.md b/replicated-leveldb-store.md new file mode 100644 index 0000000..7d9c146 --- /dev/null +++ b/replicated-leveldb-store.md @@ -0,0 +1,228 @@ +Apache ActiveMQ ™ -- Replicated LevelDB Store + +[Features](features.html) > [Persistence](persistence.html) > [Replicated LevelDB Store](replicated-leveldb-store.html) + + +Warning + +The LevelDB store has been deprecated and is no longer supported or recommended for use. The recommended store is [KahaDB](kahadb.html) + +Synopsis +-------- + +The Replicated LevelDB Store uses Apache ZooKeeper to pick a master from a set of broker nodes configured to replicate a LevelDB Store. Then synchronizes all slave LevelDB Stores with the master keeps them up to date by replicating all updates from the master. + +The Replicated LevelDB Store uses the same data files as a LevelDB Store, so you can switch a broker configuration between replicated and non replicated whenever you want. + +Version Compatibility + +Available as of ActiveMQ 5.9.0. + +How it works. +------------- + +![](replicated-leveldb-store.data/replicated-leveldb-store.png) + +It uses [Apache ZooKeeper](http://zookeeper.apache.org/) to coordinate which node in the cluster becomes the master. The elected master broker node starts and accepts client connections. The other nodes go into slave mode and connect the the master and synchronize their persistent state /w it. The slave nodes do not accept client connections. All persistent operations are replicated to the connected slaves. If the master dies, the slaves with the latest update gets promoted to become the master. The failed node can then be brought back online and it will go into slave mode. + +All messaging operations which require a sync to disk will wait for the update to be replicated to a quorum of the nodes before completing. So if you configure the store with `replicas="3"` then the quorum size is `(3/2+1)=2`. The master will store the update locally and wait for 1 other slave to store the update before reporting success. Another way to think about it is that store will do synchronous replication to a quorum of the replication nodes and asynchronous replication replication to any additional nodes. + +When a new master is elected, you also need at least a quorum of nodes online to be able to find a node with the lastest updates. The node with the lastest updates will become the new master. Therefore, it's recommend that you run with at least 3 replica nodes so that you can take one down without suffering a service outage. + +### Deployment Tips + +Clients should be using the [Failover Transport](failover-transport-reference.html) to connect to the broker nodes in the replication cluster. e.g. using a URL something like the following: + +failover:(tcp://broker1:61616,tcp://broker2:61616,tcp://broker3:61616) + +You should run at least 3 ZooKeeper server nodes so that the ZooKeeper service is highly available. Don't overcommit your ZooKeeper servers. An overworked ZooKeeper might start thinking live replication nodes have gone offline due to delays in processing their 'keep-alive' messages. + +For best results, make sure you explicitly configure the hostname attribute with a hostname or ip address for the node that other cluster members to access the machine with. The automatically determined hostname is not always accessible by the other cluster members and results in slaves not being able to establish a replication session with the master. + +Configuration +------------- + +You can configure ActiveMQ to use LevelDB for its persistence adapter - like below : + + + ... + + + + ... + + +### Replicated LevelDB Store Properties + +All the broker nodes that are part of the same replication set should have matching `brokerName` XML attributes. The following configuration properties should be the same on all the broker nodes that are part of the same replication set: + +property name + +default value + +Comments + +`replicas` + +`3` + +The number of nodes that will exist in the cluster. At least (replicas/2)+1 nodes must be online to avoid service outage. + +`securityToken` + +A security token which must match on all replication nodes for them to accept each others replication requests. + +`zkAddress` + +`127.0.0.1:2181` + +A comma separated list of ZooKeeper servers. + +`zkPassword` + +The password to use when connecting to the ZooKeeper server. + +`zkPath` + +`/default` + +The path to the ZooKeeper directory where Master/Slave election information will be exchanged. + +`zkSessionTimeout` + +`2s` + +How quickly a node failure will be detected by ZooKeeper. (prior to 5.11 - this had a typo zkSessionTmeout) + +`sync` + +`quorum_mem` + +Controls where updates are reside before being considered complete. This setting is a comma separated list of the following options: `local_mem`, `local_disk`, `remote_mem`, `remote_disk`, `quorum_mem`, `quorum_disk`. If you combine two settings for a target, the stronger guarantee is used. For example, configuring `local_mem, local_disk` is the same as just using `local_disk`. quorum_mem is the same as `local_mem, remote_mem` and `quorum_disk` is the same as `local_disk, remote_disk` + +Different replication sets can share the same `zkPath` as long they have different `brokerName`. + +The following configuration properties can be unique per node: + +property name + +default value + +Comments + +`bind` + +`tcp://0.0.0.0:61619` + +When this node becomes a master, it will bind the configured address and port to service the replication protocol. Using dynamic ports is also supported. Just configure with `tcp://0.0.0.0:0` + +`hostname` + +The host name used to advertise the replication service when this node becomes the master. If not set it will be automatically determined. + +`weight` + +1 + +The replication node that has the latest update with the highest weight will become the master. Used to give preference to some nodes towards becoming master. + +The store also supports the same configuration properties of a standard [LevelDB Store](leveldb-store.html) but it does not support the pluggable storage lockers : + +### Standard LevelDB Store Properties + +property name + +default value + +Comments + +`directory` + +`LevelDB` + +The directory which the store will use to hold it's data files. The store will create the directory if it does not already exist. + +`readThreads` + +`10` + +The number of concurrent IO read threads to allowed. + +`logSize` + +`104857600` (100 MB) + +The max size (in bytes) of each data log file before log file rotation occurs. + +`verifyChecksums` + +`false` + +Set to true to force checksum verification of all data that is read from the file system. + +`paranoidChecks` + +`false` + +Make the store error out as soon as possible if it detects internal corruption. + +`indexFactory` + +`org.fusesource.leveldbjni.JniDBFactory, org.iq80.leveldb.impl.Iq80DBFactory` + +The factory classes to use when creating the LevelDB indexes + +`indexMaxOpenFiles` + +`1000` + +Number of open files that can be used by the index. + +`indexBlockRestartInterval` + +`16` + +Number keys between restart points for delta encoding of keys. + +`indexWriteBufferSize` + +`6291456` (6 MB) + +Amount of index data to build up in memory before converting to a sorted on-disk file. + +`indexBlockSize` + +`4096` (4 K) + +The size of index data packed per block. + +`indexCacheSize` + +`268435456` (256 MB) + +The maximum amount of off-heap memory to use to cache index blocks. + +`indexCompression` + +`snappy` + +The type of compression to apply to the index blocks. Can be snappy or none. + +`logCompression` + +`none` + +The type of compression to apply to the log records. Can be snappy or none. + +Caveats + +The LevelDB store does not yet support storing data associated with [Delay and Schedule Message Delivery](delay-and-schedule-message-delivery.html). Those are are stored in a separate non-replicated KahaDB data files. Unexpected results will occur if you use [Delay and Schedule Message Delivery](delay-and-schedule-message-delivery.html) with the replicated leveldb store since that data will be not be there when the master fails over to a slave. + diff --git a/replicated-message-store.md b/replicated-message-store.md new file mode 100644 index 0000000..ce2ceb3 --- /dev/null +++ b/replicated-message-store.md @@ -0,0 +1,33 @@ +Apache ActiveMQ ™ -- Replicated Message Store + +[Features](features.html) > [Clustering](clustering.html) > [Replicated Message Store](replicated-message-store.html) + + +If messages are stored on the hard drive of a broker or inside a single database; then you have a single point of failure with respect to the message persistence. If you lose the entire machine, disk or database, you have lost messages. + +For some high end users, messages should never be lost as they could have a large impact on the business. These kinds of users often require some kind of [DR](dr.html) stategy to support message replication so that they can loose an entire data centre and still not loose a message. + +There are various solutions to the problem of reducing chance of message loss. + +### Use RAID disks + +If you're using RAID disks striped sufficiently, you could just restart the machine - or move the disk to a new machine and restart the broker. This could be sufficient if you're a small business but if you've stringent [DR](dr.html) requirements then if you loose a datacentre the RAID option is not a solution. + +### SAN or shared network drive + +If you use one of the file based persistence mechanisms such as the default high performance journal and Apache Derby, you could write to a SAN or shared network drive and in times of failure, start up a new broker using the files from the failed broker. + +Also 4.1 allows you to start many brokers reading from the same shared file system to support high availability via the [Shared File System Master Slave](shared-file-system-master-slave.html) feature. + +### Master/Slave + +An alternative is to use the [MasterSlave](masterslave.html) feature to pair brokers together so that all messages are replicated to both brokers, the master and slave to ensure that there are two physical copies of the message so that catastrophic hardware failures (such as loss of an entire data centre) can be handled. + +### Clustered JDBC databases + +Various databases like Oracle and MySQL support clustered databases; so we can use these databases with the JDBC MessageStore to get a clustered message store. Note if this option is used then the high performance journal must be disabled (which severely affects performance) + +#### Use C-JDBC + +If you don't have or can't afford a clustered database then you could use [C-JDBC](http://c-jdbc.objectweb.org/) to replicate state across a number of physical datbases to avoid single point of failure and provide a [DR](dr.html) solution. As noted above using a replicated JDBC approach is very slow as it requires us to disable the high performance journal. + diff --git a/resource-adapter-does-not-seem-to-pool-connections.md b/resource-adapter-does-not-seem-to-pool-connections.md new file mode 100644 index 0000000..1529d0c --- /dev/null +++ b/resource-adapter-does-not-seem-to-pool-connections.md @@ -0,0 +1,14 @@ +Apache ActiveMQ ™ -- Resource Adapter does not seem to pool connections + +[Community](community.html) > [FAQ](faq.html) > [Errors](errors.html) > [Resource Adapter does not seem to pool connections](resource-adapter-does-not-seem-to-pool-connections.html) + + +It may seem like the resource adapter when used in an app server like geronimo or jboss is not pooling connections. Looking the the ActiveMQ broker logs, it will show multiple message for each use of a pooled conntion simlilar to: + +16:43:07 INFO Adding new client: ID:localhost-58375-1120682586690-1:0 on transport: TcpTransportChannel: Socket\[addr=/127.0.0.1,port=58376,localport=61616\] +16:43:08 INFO Removing client: ID:localhost-58375-1120682586690-1:0 on transport: TcpTransportChannel: Socket\[addr=/127.0.0.1,port=58376,localport=61616\] + +At first glance it may seem like a new connection is being established.. but if you look at the logs is more detail, you will noticed that the client connection id's are being reused since the connections are being pooled. This behavior is a side-effect of the connection being reset to a 'cleaned up' state. It allows the next client to use the connection as if it has just been created. + +So these messages are normal, and YES, your jms connections are being pooled! + diff --git a/resource-adapter-properties.md b/resource-adapter-properties.md new file mode 100644 index 0000000..acfb7a1 --- /dev/null +++ b/resource-adapter-properties.md @@ -0,0 +1,180 @@ +Apache ActiveMQ ™ -- Resource Adapter Properties + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Resource Adapter](resource-adapter.html) > [Resource Adapter Properties](resource-adapter-properties.html) + + +The ActiveMQ Resource Adapter allows you to configure several properties that: + +* sets the options used for connection used for inbound message delivery +* sets the default options used for the outbound connection factory objects. + +The properties that can be configured are: + +Property Name + +Required + +Default Value + +Description + +ServerUrl + +no + +tcp://localhost:61616 + +The URI to connect to the broker on + +UserName + +no + +defaultUser + +User name + +Password + +no + +defaultPassword + +Password + +Clientid + +no + +null + +The JMS client ID to use + +UseInboundSession + +no + +false + +BrokerXmlConfig + +no + +The ActiveMQ XML config file to use to deploy an embedded broker. E.g. to configure via an XML configuration file then use **xbean:activemq.xml** or to configure via a [Broker Configuration URI](broker-configuration-uri.html) (to avoid using Spring, XBean and XML) then use **broker:(tcp://localhost:61616)** + +#### Performance related settings + +Property Name + +Required + +Default Value + +Description + +AllPrefetchValues + +no + +Sets all the prefetch values in one setting + +DurableTopicPrefetch + +no + +100 + +The maximum number of messages sent to a consumer on a durable topic until acknowledgements are received + +QueuePrefetch + +no + +1000 + +The maximum number of messages sent to a consumer on a queue until acknowledgements are received + +InputStreamPrefetch + +no + +100 + +The maximum number of messages sent to a consumer on a JMS stream until acknowledgements are received + +TopicPrefetch + +no + +Short.MAX_VALUE - 1 + +The maximum number of messages sent to a consumer on a non-durable topic until acknowledgements are received + +#### Redelivery properties + +Property Name + +Required + +Default Value + +Description + +InitialRedeliveryDelay + +no + +1000 + +The delay before redeliveries start. Also configurable on the ActivationSpec. + +MaximumRedeliveries + +no + +5 + +The maximum number of redeliveries or -1 for no maximum. Also configurable on the ActivationSpec. + +RedeliveryBackOffMultiplier + +no + +5 + +The multiplier to use if exponential back off is enabled. Also configurable on the ActivationSpec. + +RedeliveryUseExponentialBackOff + +no + +false + +To enable exponential backoff. Also configurable on the ActivationSpec. + +#### ServerUrl + +The URL to the ActiveMQ server that you want this connection to connect to. If using an embedded broker, this value should be 'vm://localhost' if using the auto-created embedded broker, otherwise if you explicitly create a broker (e.g. using one of the [embedded broker](how-do-i-embed-a-broker-inside-a-connection.html) techniques), then this value should be 'vm://brokerName', where brokerName is replaced by the broker's name. + +#### UserName + +The default user name that will be used to establish connections to the ActiveMQ server. + +#### Password + +The default password that will be used to log the default user into the ActiveMQ server. + +#### Clientid + +The client id that will be set on the connection that is established to the ActiveMQ server. + +#### UseInboundSession + +Boolean to configure if outbound connections should reuse the inbound connection's session for sending messages. + +#### BrokerXmlConfig + +Sets the XML configuration file used to configure the embedded ActiveMQ broker via Spring if using embedded mode. If this property is omitted then no embedded broker is used and you must [run the broker](run-broker.html) in a separate process or deployment unit. + +BrokerXmlConfig is the filename which is assumed to be on the classpath unless a URL is specified. So a value of foo/bar.xml would be assumed to be on the classpath whereas file:dir/file.xml would use the file system. Any valid URL string is supported. + diff --git a/resource-adapter.md b/resource-adapter.md new file mode 100644 index 0000000..54ad7d1 --- /dev/null +++ b/resource-adapter.md @@ -0,0 +1,54 @@ +Apache ActiveMQ ™ -- Resource Adapter + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Resource Adapter](resource-adapter.html) + + +Introduction +------------ + +ActiveMQ includes a Java Connector Architecture (JCA) 1.5 Resource Adapter. JCA 1.5 defines the contract between an J2EE application server and external resources such as databases and messaging middleware. It allows the application server to efficiently pool connections, control transactions and manage security. The Resource Adapter allows ActiveMQ to be used from any J2EE 1.4 application server. We have tested that the Resource Adapter works in the following J2EE 1.4 containers + +* [TomEE](http://tomee.apache.org/tomcat-jms.html) 1 +* Geronimo 1 +* GlassFish +* JBoss 4 +* WebLogic 9 +* WebSphere 6 + +Features +-------- + +* Inbound connection delivers messages to MDBs via XA or local transactions. +* Outbound connections support standard container pooling or can reuse the inbound connection/session to avoid XA. +* JTA support: Can be enlisted in XA and local transactions. +* XA transaction recovery via XAResource.recover() supported. +* When used outside a JTA transaction, session transaction settings retain normal JMS semantics so that it be used by your web-app tier. +* Can configure and start up embedded broker. +* Can connect to external ActiveMQ broker or embedded broker. +* Inbound message delivery supports fine grain control of concurrency and prefetching. +* Batching so that multiple messages can be delivered within the same transaction for optimal performances. + +Downloading the RAR +------------------- + +The RAR is available via [maven central](http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22activemq-rar%22) + +Deployment Guides + +* [TomEE](tomee.html) +* [Geronimo](geronimo.html) +* [Integrating Apache ActiveMQ with Glassfish](integrating-apache-activemq-with-glassfish.html) +* [JBoss Integration](jboss-integration.html) + +The use of an Embedded Broker +----------------------------- + +The ActiveMQ Resource Adapter can connect to a remote broker using any of the available transports, or it can start up an embedded broker. As described in the [Resource Adapter Properties](resource-adapter-properties.html), you can enable an embedded broker using the **BrokerXmlConfig** property. + +Configuration Reference +----------------------- + +* [Resource Adapter Properties](resource-adapter-properties.html) +* [Connection Factory Properties](connection-factory-properties.html) +* [Activation Spec Properties](activation-spec-properties.html) + diff --git a/rest-protocols.md b/rest-protocols.md new file mode 100644 index 0000000..79fe24e --- /dev/null +++ b/rest-protocols.md @@ -0,0 +1,57 @@ +Apache ActiveMQ ™ -- REST protocols + +[Developers](developers.html) > [Developer Guide](developer-guide.html) > [Design Documents](design-documents.html) > [REST protocols](rest-protocols.html) + + +There are many ways to map JMS to REST... + +Crappy non-REST +--------------- + +Send via + +POST /queue/Destination + +Consume + +GET /queue/Destination + +This is bad as the GET is not idempotent. We can add a user ID or use a cookie + +GET /queue/Destination?jsessionId=.... + +though a caching proxy may keep returning the same message + +Simple REST using 1 at a time delivery +-------------------------------------- + +Subscribe via + +POST /subscribe/consumerId/Destination +POST /unsubscribe/consumerId/Destination + +Then get messges via + +POST /nextMessageForMe/consumerId + +If you want to acknowledge messages you then + +POST /ack/consumerId/messageId + +Batch message REST +------------------ + +POST lockNextMessage/consumerId?max=10 + +-\> give back up to 10 message URLs + +GET message/consumerId/messageId + +acknowledge them via + +DELETE /consumerId/messages/messageId + +### Further options... + +You can include ACK messages inside the POST; so the 2nd POST could include the ACKs - also you could return the batch of messages as well. + diff --git a/rest.md b/rest.md new file mode 100644 index 0000000..1bec186 --- /dev/null +++ b/rest.md @@ -0,0 +1,216 @@ +Apache ActiveMQ ™ -- REST + +[Connectivity](connectivity.html) > [Protocols](protocols.html) > [REST](rest.html) + + +ActiveMQ implements a RESTful API to messaging which allows any web capable device to publish or consume messages using a regular HTTP POST or GET. + +If you are interested in messaging directly from web browsers you might wanna check out our [Ajax](ajax.html) or [WebSockets](websockets.html) support or try [running the REST examples](web-samples.html) + +Mapping of REST to JMS +---------------------- + +To publish a message use a HTTP POST. To consume a message use HTTP DELETE or GET. + +ActiveMQ has a Servlet that takes care of the integration between HTTP and the ActiveMQ dispatcher. + +NOTE: The example below requires servlet mapping on the URL. For posting without the servlet mapping, see examples further down. + +You can map a URI to the servlet and then use the relative part of the URI as the topic or queue name. e.g. you could HTTP POST to + +http://www.acme.com/orders/input + +which would publish the contents of the HTTP POST to the orders.input queue on JMS.  + +Similarly you could perform a HTTP DELETE GET on the above URL to read from the same queue. In this case we will map the MessageServlet from ActiveMQ to the URI + +http://www.acme.com/queue + +and configure it to accept the URI as a queue destination. We can do similar things to support topic destinations too. + +We can use the HTTP session to denote a unique publisher or consumer. + +Note that strict REST requires that GET be a read only operation; so strictly speaking we should not use GET to allow folks to consume messages. Though we allow this as it simplifies HTTP/DHTML/Ajax integration somewhat. + +For a more cleaner mapping of a simple transfer protocol to different languages, you might wish to take a look at [Stomp](stomp.html). + +Default configuration +--------------------- + +Until version 5.8, REST API was part of the [Web Samples](web-samples.html) and was mapped to [http://localhost:8161/demo/message](http://localhost:8161/demo/message) url. From 5.8 onwards, the API is available by default at [http://localhost:8161/api/message](http://localhost:8161/api/message) url. Also, starting with 5.8, web server is secured by default (see [Web Console](web-console.html) for more information), so have that in mind when trying to use it. Examples below will assume new api location and secured web server. + +### Producing + +You can produce by sending a POST request to the server, like + +curl -u admin:admin -d "body=message" http://localhost:8161/api/message/TEST?type=queue + +NOTE: If no type parameter is specified, the default is to create a  topic. To change the default to queue, initialize  the servlet  with an init param in the `webapps/demo/WEB-INF/web.xml` + +As shown below: + + + MessageServlet + org.apache.activemq.web.MessageServlet + 1 + + topic + false + + + +#### Alternate Producing Syntax + +An alternative syntax for posting is supported, using the destination URL-encoded parameter; here are some examples:  + +\# Send to queue orders.input: +curl -XPOST -d "body=message" http://admin:admin@localhost:8161/api/message?destination=queue://orders.input + +\# Send to topic orders.input: +curl -XPOST -d "body=message" http://admin:admin@localhost:8161/api/message?destination=topic://orders.input + +### Timeouts + +When reading from a queue we might not have any messages. We can use a timeout query parameter to indicate how long we are prepared to wait for a message to arrive. This allows us to poll or block until a message arrives. + +Couple this with HTTP 1.1 keep-alive sockets and pipeline processing we can have efficient access to JMS over HTTP. + +Obviously if your client is Java then using ActiveMQ's JMS API is the fastest and most efficient way to work with the message broker; however, if you are not using Java or prefer the simplicity of HTTP then it should be fairly efficient, especially if your HTTP client supports keep-alive sockets and pipeline processing. + +#### Consuming + +When consuming messages using the REST API, you have to keep session alive between GET requests, or you'll create a separate consumer for every request and due to prefetch limit your succeeding call will hang. + +For example, you can use `wget` to consume messages, like this: + +wget --user admin --password admin --save-cookies cookies.txt --load-cookies cookies.txt --keep-session-cookies http://localhost:8161/api/message/TEST1?type=queue + +Also, if you plan to have multiple consumer using REST, it's advisable to set prefetch size to 1 so all consumers have an equal chance of getting the message. You can do that by passing a special parameter to the `MessageServlet` + + + MessageServlet + org.apache.activemq.web.MessageServlet + 1 + + destinationOptions + consumer.prefetchSize=1 + + + +in the `webapps/demo/WEB-INF/web.xml` + +#### Alternate Consuming Syntax + +As with producing, an alternative syntax for consuming messages is also supported, using the destination URL-encoded parameter; here are some examples:  + +\# Send to queue orders.input: +curl -XGET http://admin:admin@localhost:8161/api/message?destination=queue://orders.input + +\# Send to topic orders.input: +curl -XGET http://admin:admin@localhost:8161/api/message?destination=topic://orders.input + +#### Consuming without sessions + +Since 5.2.0 you can use `clientId` parameter to avoid storing actual JMS consumer in the request session. When using this approach, you don't need to keep sessions alive between requests, you just need to use the same `clientId` every time. + +wget --user admin --password admin http://localhost:8161/api/message/test?type=queue&clientId=consumerA + +Every such call will use the same JMS consumer and deliver messages send to it by the broker. + +In 5.4.1 it's also possible to unsubscribe the client. It's done by sending a POST call with `clientId` and `action=unsubscribe` parameters to the server, like + +http://localhost:8161/demo/message/test?clientId=consumerA&action=unsubscribe + +### Consuming with selectors + +As of ActiveMQ 5.4.0, you can use selectors when consuming using REST protocol. To do that, just specify the appropriate header with selector. To define a selector for the consumer, you have to provide it in an appropriate HTTP header. By default selector header name is `selector`, so the following example + +wget --user admin --password admin --save-cookies cookies.txt --load-cookies cookies.txt --keep-session-cookies --header="selector: test=2" http://localhost:8161/api/message/test?type=queue + +should consume only messages that have `test` property set to `2`. + +You can change the name of the selector header using the `org.apache.activemq.selectorName` Servlet context property in `WEB-INF/web.xml`, such as + + + org.apache.activemq.selectorName + activemq-selector + + +For more info, take a look at [RestTest](http://fisheye6.atlassian.com/browse/activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java?r=HEAD) + +### Consuming with One Shot Consumers + +One shot consumption allows a REST call to receive a single message and then immediately close the associated consumer. + +All of the examples so far lead to the servlet creating and holding on to consumers of the destination across multiple HTTP requests. Without care, these consumers could easily lead to confusion as messages are dispatched to them but then sit unused because the consuming HTTP session, or clientId, fails to connect to continue requesting the messages. One way around that problem is the use of one-shot consumers.  Simple add the `?oneShot=true` option and the consumer is removed once the consumption completes; as follows: + +curl -XGET http://admin:admin@localhost:8161/api/message?destination=queue://orders.input&oneShot=true + +Note that interrupting the call while the consumer is waiting for a message, the consumer may remain until the server times out the HTTP request, or until a message finally arrives. + +### Content Types + +By default messages are sent to the consumers with `text/xml` content type. Your REST-based application may expect JSON response instead of XML one. In that case, you can configure the servlet to send responses back by adding something like this + + + MessageServlet + org.apache.activemq.web.MessageServlet + 1 + + defaultContentType + application/json + + + +to your `WEB-INF/web.xml`. + +A default content type can also be overridden using request headers. Specifying `xml=true` or `json=true` URL parameter you'll get a response with the desired content type. + +wget --user admin --password admin http://localhost:8161/api/message/TEST?type=queue\\&clientId=A\\&json=true + +### Security + +Since 5.7.0 release REST API can connect to the secured brokers. The API uses basic authentication header format to get username and password information. + +For example, with curl you can do something like + +curl -u system:manager -d "body=message" http://localhost:8161/demo/message/TEST?type=queue + +Also, you might want to enable `ssl` for your connections. To do that, just uncomment SecureConnector in `conf/jetty.xml` + + + + + + + +Rest Management +--------------- + +Starting with version 5.8 we provide a REST management API for the broker. Using [Jolokia](http://www.jolokia.org/) JMX-HTTP bridge it's possible to access all broker metrics (like memory usage) and execute management operations (like purging queues) using REST API. By default the management API is exposed at [http://localhost:8161/api/jolokia/](http://localhost:8161/api/jolokia/) URL. So you can for example get basic broker data with + +wget --user admin --password admin --auth-no-challenge http://localhost:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost + +or to be more specific, total consumer count with + +wget --user admin --password admin --auth-no-challenge http://localhost:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost/TotalConsumerCount + +For more information on Jolokia protocol, see its reference manual. An API like this makes it easy to script monitoring and management operations against the broker, see also [How can I monitor ActiveMQ](how-can-i-monitor-activemq.html)? + +Gotcha's and other trivia +------------------------- + +1. Missing "body" parameter + +In the curl POST examples above, the use of "body=..." is critical. If this is not specified in front of the message body contents, the web servlet will attempt to read the body from the request (rather than from the -d parameter), and this will result in the following exception: + +java.lang.IllegalStateException: STREAMED +at org.eclipse.jetty.server.Request.getReader(Request.java:898) +at org.apache.activemq.web.MessageServletSupport.getPostedMessageBody(MessageServletSupport.java:347) +at org.apache.activemq.web.MessageServlet.doPost(MessageServlet.java:126) +... + +However, one option in this case would be to specify the content type explicitly: + +curl -u admin:admin -d "hello world $(date)" -H "Content-Type: text/plain" -XPOST http://localhost:8161/api/message?destination=queue://abc.def + diff --git a/restful-queue.md b/restful-queue.md new file mode 100644 index 0000000..60f969e --- /dev/null +++ b/restful-queue.md @@ -0,0 +1,156 @@ +Apache ActiveMQ ™ -- RESTful Queue + +[Developers](developers.html) > [Ideas](ideas.html) > [RESTful Queue](restful-queue.html) + + +RESTful Queue +------------- + +This document is intended to document the ideal RESTful interface to message queues in light of + +* [the discussion on rest-discuss](http://tech.groups.yahoo.com/group/rest-discuss/message/8955) +* [Atom Publishing Protocol](http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-17.html) (APP) +* [httplr](http://www.dehora.net/doc/httplr/draft-httplr-01.html) + +### Issues with Queues and REST + +One of the main issues with making a truly RESTful API to a message queue is that a message queue is essentially a load balancer, so each consumer of a queue sees essentially a different queue; as only one consumer gets a copy of each message. + +Also if a consumer goes away, the messages that were associated with that consumer need to be re-assigned to another consumer. So the main tricky part really is the operation for a consumer to find out what messages it may consume. + +### Queue administration + +This section deals with the general browsing and creation/deletion of queues. + +#### Browse available queues + +To browse the queues, they are a hierarchial structure usually, so lets browse them like any APP collection + +GET /queues +--------------------> + +200 OK +Atom Feed with one entry per directory/category/queue +<-------------------- + +#### Browse a queue's messages + +GET /queues/uk/products/books/computers +--------------------> + +200 OK +Atom Feed with one entry per pending message +<-------------------- + +Note that we could expose the queues as a tree, for example + +GET /queues/uk/products +--------------------> + +200 OK +Atom Feed with one entry per queue in uk.products.* together with any child catgory/directory +<-------------------- + +#### Creating a queue + +Creating a queue is typically idempotent; since really you are just creating a name that folks can post to. + +POST /queues +--------------------> + +201 OK +Location: someUniqueUrlForTheNewQueueToBePostedTo +<-------------------- + +#### Deleting a queue + +DELETE /queues/foo.bar +--------------------> + +200 OK +<-------------------- + +### Send to queue + +Sending to queue is the usual APP-style double request; one to get the unique URI to post to and secondly to do the actual post... + +POST /queues/foo.bar +--------------------> + +201 OK +Location: someUniqueUrlForTheNewMessageToBePostedTo +<-------------------- + +The client can then repeatedly POST the mesage to someUniqueUrlForTheNewMessageToBePostedTo until it gets a 200 OK which avoids duplicates. + +#### Optional alternative for single request + +If a smart client is capable of generating a system wide unique GUID (id) for the message, the server side could ignore duplicates. So posting to queue could be done without the double-request approach above + +POST /queues/foo.bar?guid=clientGeneratedUniqueId +--------------------> + +200 OK +<-------------------- + +### Consuming from a queue + +As described above, this is the tricky part of mapping message queues to REST. + +So we introduce a resource for a _subscription_ to a queue. The subscription remains active until some timeout value - so a subscription is a sort of lease. + +When a subscription is created it can be given a variety of different pieces of data such as + +* the [prefetch buffer](what-is-the-prefetch-limit-for.html) +* what destinations it applies to (for example we could use wildcards) +* whether a selector/filter is applied + +#### Create a subscription + +POST /subscriptions +--------------------> + +201 OK +Location: subscriptionUri +<-------------------- + +The actual subscription data could be form encoded key/value pairs. + +#### Deleting a subscription + +Good clients will delete subscriptions when they are no longer required; though they do timeout eventually. + +DELETE subscriptionUri +--------------------> + +200 OK +<-------------------- + +#### Consuming messages + +You consume messages by browsing the subscription (like any APP resource) then DELETEing the message when you have finished processing it. + +GET subscriptionUri +--------------------> + +200 OK +Atom Feed with one entry per message associated to this subscription +<-------------------- + +Then to acknowledge a particular message has been processed + +DELETE messageUri +--------------------> + +200 OK +<-------------------- + +Deltas with APP +--------------- + +Almost all of the above could be just pure APP really. The only real difference is that each consumer has its own feed of messages which are to be consumed. + +In ActiveMQ's case, we use a [prefetch value per consumer](what-is-the-prefetch-limit-for.html) to define how many messages each consumer gets in its buffer, before messages must be acknowledged to get more messages. + +So the idea is that we have a per-consumer feed which is created; it can then be browsed (by anyone with sufficient karma). + diff --git a/retroactive-consumer.md b/retroactive-consumer.md new file mode 100644 index 0000000..466d059 --- /dev/null +++ b/retroactive-consumer.md @@ -0,0 +1,28 @@ +Apache ActiveMQ ™ -- Retroactive Consumer + +[Features](features.html) > [Consumer Features](consumer-features.html) > [Retroactive Consumer](retroactive-consumer.html) + + +Background +---------- + +A retroactive consumer is just a regular JMS **Topic** consumer who indicates that at the start of a subscription every attempt should be used to go back in time and send any old messages (or the last message sent on that topic) that the consumer may have missed. + +See the [Subscription Recovery Policy](subscription-recovery-policy.html) for more detail. + +### Example + +You mark a Consumer as being retroactive as follows: + +topic = new ActiveMQTopic("TEST.Topic?consumer.retroactive=true"); +consumer = session.createConsumer(topic); + +Limitations +----------- + +Retroactive consumer will not consistently work when used across a network of brokers. + +In the case of topics, when we connect broker A to broker B, broker B will send broker A all the subscriptions that it has received. Since Broker A replicates messages to each subscription, and we want to avoid receiving duplicates at broker B, we can't send broker A more than 1 subscription for the same topic. So our network bridges keep track of the subscriptions sent across and only send the first subscription to a topic. Subsequent subscriptions increment the reference count of the subscription, but the subscription is not actually sent. + +This in essence is the problem. If the first subscription to a topic is not retroactive, it is sent B to A, and the B broker will not get the retroactive messages. Then subsequent subscriptions could be (retroactive), but it will not cause retroactive message to sent from broker A to broker B since the subsequent subscription will not be sent to broker A. + diff --git a/rightheader.md b/rightheader.md new file mode 100644 index 0000000..2bbc80c --- /dev/null +++ b/rightheader.md @@ -0,0 +1,172 @@ +Apache ActiveMQ ™ -- RightHeader + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [RightHeader](rightheader.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +[![](http://drools.codehaus.org/__unity__/images/logo.png)](http://www.codehaus.org) + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/rss-and-atom.md b/rss-and-atom.md new file mode 100644 index 0000000..38f15ef --- /dev/null +++ b/rss-and-atom.md @@ -0,0 +1,45 @@ +Apache ActiveMQ ™ -- RSS and Atom + +[Connectivity](connectivity.html) > [Protocols](protocols.html) > [RSS and Atom](rss-and-atom.html) + + +We have added support for the [REST](rest.html)ful browsing of message queues in the **activemq-web** module. To try out this feature try the [Web Samples](web-samples.html). + +Browsing of queues is implemented by a servlet, **QueueBrowseServlet** which allows queues to be browsed using pluggable views. The current views supported are + +View name + +Description + +simple + +Renders a list of elements with an id attribute + +xml + +Uses XStream to render the entire messages as XML + +rss + +Uses [Rome](https://rome.dev.java.net/) to render the messages as an RSS 0.9*, 1.0, 2.0 or Atom 0.3 feed. You can configure the type of feed using the **feedType** + +Any properties on the view objects can be configured via reflection using query parameters. e.g. you can specify these common properties + +Parameter + +Description + +contentType + +Override the MIME content type of the view + +maxMessages + +The maximum number of messages to render + +### Examples + +* [http://localhost:8080/queueBrowse/FOO/BAR?view=xml](http://localhost:8080/queueBrowse/FOO/BAR?view=xml) will browse the queue as XML +* [http://localhost:8080/queueBrowse/FOO/BAR?view=rss&feedType=rss_2.0](http://localhost:8080/queueBrowse/FOO/BAR?view=rss&feedType=rss_2.0) will browse the FOO.BAR queue using RSS 2.0 +* [http://localhost:8080/queueBrowse/FOO/BAR?view=rss&feedType=atom_0.3](http://localhost:8080/queueBrowse/FOO/BAR?view=rss&feedType=atom_0.3) will browse the FOO.BAR queue using Atom + diff --git a/ruby.md b/ruby.md new file mode 100644 index 0000000..9b22acb --- /dev/null +++ b/ruby.md @@ -0,0 +1,187 @@ +Apache ActiveMQ ™ -- Ruby + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Connectivity](connectivity.html) > [Cross Language Clients](cross-language-clients.html) > [Ruby](ruby.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.7.0/activemq-core/apidocs/) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +Ruby Support +------------ + +For Ruby support we recommend the [Ruby Stomp Client](http://stomp.codehaus.org/Ruby) + +### Ruby Stomp + +Here's the Ruby client for Stomp, written by Brian McCallister. + +Package: [http://rubyforge.org/projects/stomp/](http://rubyforge.org/projects/stomp/) +Source: [http://svn.codehaus.org/stomp/ruby/trunk/](http://svn.codehaus.org/stomp/ruby/trunk/) + +Also package dup as a gem: + +gem install stomp + +ActiveMessaging +--------------- + +If you are working with Rails you might want to check out [ActiveMessaging](http://dev.tirsen.com/trac/activemessaging). + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/run-broker.md b/run-broker.md new file mode 100644 index 0000000..cad295d --- /dev/null +++ b/run-broker.md @@ -0,0 +1,70 @@ +Apache ActiveMQ ™ -- Run Broker + +[Using ActiveMQ](using-activemq.html) > [Run Broker](run-broker.html) + + +Running an ActiveMQ Broker +========================== + +Note if you want to use an **embedded broker** then see [How do I embed a Broker inside a Connection](how-do-i-embed-a-broker-inside-a-connection.html) + +This page describes how to run a broker using 4.x or later of ActiveMQ. + +### Running the broker as a Unix Service + +See the  [Unix Shell Script](unix-shell-script.html) for details. + +### Running the broker using the Java Service Wrapper Implementation + +See the [Java Service Wrapper Page](java-service-wrapper.html) for details. + +### Monitoring the broker + +You can monitor ActiveMQ using the [Web Console](web-console.html) by pointing your browser at + +[http://localhost:8161/admin](http://localhost:8161/admin) + +From ActiveMQ 5.8 onwards the web apps is secured out of the box. +The default username and password is admin/admin. You can configure this in the conf/jetty-real.properties file. + +Or you can use the [JMX](jmx.html) support to view the running state of ActiveMQ. + +For more information see the file `docs/WebConsole-README.txt` in the distribution. + +### Running the broker inside a Servlet Engine + +See the source code (or WAR) of the [Web Console](web-console.html) for an example of how to run the broker inside a web application using Spring. + +### Running the broker inside your J2EE 1.4 Application Server + +Whether its Apache Geronmio, JBoss 4, WebLogic 9 or some other J2EE 1.4 container you should be able to just reconfigure and then deploy the activemq-*.rar which is included in the binary distribution as a deployment unit in your app server. By default the rar is not configured to start an embedded broker. But by setting the brokerXmlConfig on the resource adapter configuration, the resource adapter will start an embedded broker. + +For more details see [J2EE](j2ee.html) + +### Running the broker from the source code + +From the latest [checkout](source.html) of the code you can run a broker using the [ActiveMQ Performance Plugin](activemq-performance-module-users-manual.html) + +### Running the broker from maven + +You can download and install the ActiveMQ Startup Maven Plugin via the following command if you are in a directory with a pom.xml. More detailed usage [here](maven2-activemq-broker-plugin.html) + +mvn org.apache.activemq.tooling:maven-activemq-plugin:5.0-SNAPSHOT:run + +You can also include it the pom and run it using: + +mvn activemq:run + +Handling JMS brokers going down +------------------------------- + +A common requirement is that if the JMS broker goes down you want to automatically detect the failure and try to reconnect under the covers so that your application does not have to worry about reconnection. + +There is detailed documentation on this in [Configuring Transports](configuring-transports.html); briefly... + +Just change your connection URI in 4.x to + +failover:tcp://host:port + +And the JMS client will auto-reconnect to the broker if it is shutdown and restarted later on. + diff --git a/running-a-3x-broker.md b/running-a-3x-broker.md new file mode 100644 index 0000000..f2168b4 --- /dev/null +++ b/running-a-3x-broker.md @@ -0,0 +1,229 @@ +Apache ActiveMQ ™ -- Running a 3.x Broker + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Site](site.html) > [Old Links](old-links.html) > [Previous Versions](previous-versions.html) > [Running a 3.x Broker](running-a-3x-broker.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.9.0/apidocs/index.html) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +The 3.x [binary distribution](download.html "Download") of ActiveMQ comes with a script called 'activemq' which allows you to run a broker. Typing the following will run an ActiveMQ Broker using the out of the box configuration + + + +You can use the [Xml Configuration](xml-configuration.html "Xml Configuration") to customize the Message Broker to suit your needs. You can run a broker with a specific XML configuration as + + + +### Running the broker inside a Servlet Engine + +If you have the binary distribution (3.1 onwards) you can run the broker using a WAR distribution. From the binary download type the following + + + +and you get a war in the target directory capable of being deployed in a servlet engine. This has been tried in Resin, Tomcat 4.x, 5.x, Jetty 5.x and should work in most good servlet engines. See the Ant build for details and web.xml of how this works if you wish to integrate this into your WAR. + +### Running the broker inside your J2EE 1.4 Application Server + +Whether its Apache Geronmio, JBoss 4, WebLogic 9 or some other J2EE 1.4 container you should be able to just deploy the activemq-*.rar which is included in the binary distribution as a deployment unit in your app server. + +### Running the 3.x broker from the source code + +You can do this by running the main() in the [org.activemq.broker.impl.Main](http://activemq.codehaus.org/maven/apidocs/org/activemq/broker/impl/Main.html) class inside your IDE, assuming you've [set up your classpath](initial-configuration.html "Initial Configuration") properly. + +Another option, if you have a [source distribution](building.html "Building"), is to run the broker from inside Maven by typing + + + +You can specify a URL to listen on by specifying a parameter, such as + + + +Or via Maven + + + +### Using the XML configuration + +You can use the [Xml Configuration](xml-configuration.html "Xml Configuration") to customize the Message Broker to suit your needs. You can run a broker from Maven as follows... + + + +If your [classpath is setup correctly](initial-configuration.html "Initial Configuration") you can achieve the same thing from the command line + + + +Notice that we supply an alternative Main which is dependent on Spring and takes an XML configuration file as the argument. + +Handling JMS brokers going down +------------------------------- + +A common requirement is that if the JMS broker goes down you want to automatically detect the failure and try to reconnect under the covers so that your application does not have to worry about reconnection. + +There is detailed documentation on this in [Configuring Transports](configuring-transports.html "Configuring Transports"); briefly... + +Just change your connection URI in 3.x to + + + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") + +### [External Tools](tools.html "Tools") + +* [hawtio](http://hawt.io "HTML5 console for monitoring Apache ActiveMQ and Apache Camel") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/running-a-broker.md b/running-a-broker.md new file mode 100644 index 0000000..cb3e9eb --- /dev/null +++ b/running-a-broker.md @@ -0,0 +1,166 @@ +Apache ActiveMQ ™ -- Running a broker + +[ActiveMQ](http://activemq.apache.org "The most popular and powerful open source Message Broker") ™ [ASF](http://www.apache.org "The Apache Software Foundation") + +[Tools](tools.html) > [Web Console](web-console.html) > [Running a broker](running-a-broker.html) + +[Download](download.html "Download") | [JavaDocs](http://activemq.apache.org/maven/5.7.0/activemq-core/apidocs/) [More...](javadocs.html "JavaDocs") | [Source](source.html "Source") | [Forums](discussion-forums.html "Discussion Forums") | [Support](support.html "Support") + +### [Overview](overview.html "Overview") + +* [Index](index.html "Index") +* [News](news.html "News") +* [New Features](new-features.html "New Features") +* [Getting Started](getting-started.html "Getting Started") +* [FAQ](faq.html "FAQ") +* [Articles](articles.html "Articles") +* [Books](books.html "Books") +* [Download](download.html "Download") +* [License](http://www.apache.org/licenses/) + +### Search + + + + +### Sub Projects + +* [Apollo](http://activemq.apache.org/apollo "ActiveMQ Apollo") +* [CMS](http://activemq.apache.org/cms/ "The C++ API for Messaging") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [Camel](http://camel.apache.org/ "POJO based Enterprise Integration Patterns with a typesafe Java DSL") + +### [Community](community.html "Community") + +* [Support](support.html "Support") +* [Contributing](contributing.html "Contributing") +* [Discussion Forums](discussion-forums.html "Discussion Forums") +* [Mailing Lists](mailing-lists.html "Mailing Lists") +* [IRC](irc://irc.codehaus.org/activemq) +* [IRC Log](http://servlet.uwyn.com/drone/log/hausbot/activemq) +* [Site](site.html "Site") +* [Sponsorship](http://www.apache.org/foundation/sponsorship.html) +* [Projects Using ActiveMQ](projects-using-activemq.html "Projects Using ActiveMQ") +* [Users](users.html "Users") +* [Team](team.html "Team") +* [Thanks](http://www.apache.org/foundation/thanks.html) + +### [Features](features.html "Features") + +* [Advisory Message](advisory-message.html "Advisory Message") +* [Clustering](clustering.html "Clustering") +* [Cross Language Clients](cross-language-clients.html "Cross Language Clients") +* [Enterprise Integration Patterns](enterprise-integration-patterns.html "Enterprise Integration Patterns") +* [JMX](jmx.html "JMX") +* [JMS to JMS Bridge](jms-to-jms-bridge.html "JMS to JMS Bridge") +* [MasterSlave](masterslave.html "MasterSlave") +* [Message Groups](message-groups.html "Message Groups") +* [Networks of Brokers](networks-of-brokers.html "Networks of Brokers") +* [Performance](performance.html "Performance") +* [Persistence](persistence.html "Persistence") +* [Security](security.html "Security") +* [Virtual Destinations](virtual-destinations.html "Virtual Destinations") +* [Visualisation](visualisation.html "Visualisation") +* [More ...](features.html "Features") + +### [Connectivity](connectivity.html "Connectivity") + +* [Ajax](ajax.html "Ajax") +* [AMQP](amqp.html "AMQP") +* [Axis and CXF Support](axis-and-cxf-support.html "Axis and CXF Support") +* [C Integration](c-integration.html "C Integration") +* [C++](activemq-c-clients.html "ActiveMQ C++ Clients") +* [C# and .Net Integration](http://activemq.apache.org/nms/) +* [CMS](http://activemq.apache.org/cms/) +* [J2EE](j2ee.html "J2EE") +* [JBoss Integration](jboss-integration.html "JBoss Integration") +* [Jetty](http://docs.codehaus.org/display/JETTY/Integrating+with+ActiveMQ) +* [JNDI Support](jndi-support.html "JNDI Support") +* [NMS](http://activemq.apache.org/nms/ "NMS is the .Net Messaging API") +* [REST](rest.html "REST") +* [RSS and Atom](rss-and-atom.html "RSS and Atom") +* [Spring Support](spring-support.html "Spring Support") +* [Stomp](stomp.html "Stomp") +* [Tomcat](tomcat.html "Tomcat") +* [Unix Service](unix-service.html "Unix Service") +* [WebLogic Integration](weblogic-integration.html "WebLogic Integration") +* [XMPP](xmpp.html "XMPP") +* [More ...](connectivity.html "Connectivity") + +### [Using ActiveMQ 5](using-activemq-5.html "Using ActiveMQ 5") + +* [Getting Started](version-5-getting-started.html "Version 5 Getting Started") +* [Initial Configuration](version-5-initial-configuration.html "Version 5 Initial Configuration") +* [Running a Broker](version-5-run-broker.html "Version 5 Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-version-5-transports.html "Configuring Version 5 Transports") +* [Examples](version-5-examples.html "Version 5 Examples") +* [Web Samples](version-5-web-samples.html "Version 5 Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](version-5-xml-configuration.html "Version 5 XML Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq-5.html "Using ActiveMQ 5") + +### [Using ActiveMQ 4](using-activemq.html "Using ActiveMQ") + +* [Getting Started](getting-started.html "Getting Started") +* [Initial Configuration](initial-configuration.html "Initial Configuration") +* [Running a Broker](run-broker.html "Run Broker") +* [Embedded Brokers](how-do-i-embed-a-broker-inside-a-connection.html "How do I embed a Broker inside a Connection") +* [Command Line Tools](activemq-command-line-tools-reference.html "ActiveMQ Command Line Tools Reference") +* [Configuring Transports](configuring-transports.html "Configuring Transports") +* [Examples](examples.html "Examples") +* [Web Samples](web-samples.html "Web Samples") +* [Monitoring the Broker](how-can-i-monitor-activemq.html "How can I monitor ActiveMQ") +* [Xml Configuration](xml-configuration.html "Xml Configuration") +* [Xml Reference](xml-reference.html "Xml Reference") +* [More ...](using-activemq.html "Using ActiveMQ") + +### [Tools](tools.html "Tools") + +* [Web Console](web-console.html "Web Console") +* [Hermes Jms](hermes-jms.html "Hermes Jms") +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [JMeter](http://jakarta.apache.org/jmeter) + +### [Support](support.html "Support") + +* [Issues](http://issues.apache.org/jira/browse/AMQ) +* [Roadmap](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:roadmap-panel) +* [Change log](http://issues.apache.org/activemq/browse/AMQ?report=com.atlassian.jira.plugin.system.project:changelog-panel) + +### Related Projects + +* [Apache ServiceMix](http://incubator.apache.org/servicemix/ "Distributed Enterprise Service Bus based on JBI") +* [Lingo](http://lingo.codehaus.org/ "POJO Remoting using JMS") +* [Jencks](http://jencks.codehaus.org/ "Message Driven POJOs and pooling for JMS and JDBC") +* [Stomp](http://stomp.codehaus.org/ "A simple protocol for messaging middleware interop and the easy development of custom clients") +* [Spring](http://www.springframework.org/) +* [OpenEJB](http://openejb.apache.org) +* [Geronimo](http://geronimo.apache.org/) + +### [Developers](developers.html "Developers") + +* [Source](source.html "Source") +* [Building](building.html "Building") +* [Developer Guide](developer-guide.html "Developer Guide") +* [Becoming a committer](becoming-a-committer.html "Becoming a committer") +* [Code Overview](code-overview.html "Code Overview") +* [Wire Protocol](wire-protocol.html "Wire Protocol") +* [Release Guide](release-guide.html "Release Guide") + +### Tests + +* [Maven2 Performance Plugin](activemq-performance-module-users-manual.html "ActiveMQ Performance Module Users Manual") +* [Benchmark Tests](benchmark-tests.html "Benchmark Tests") +* [JMeter System Tests](jmeter-system-tests.html "JMeter System Tests") +* [JMeter Performance Tests](jmeter-performance-tests.html "JMeter Performance Tests") +* [Integration Tests](integration-tests.html "Integration Tests") + +### Project Reports + +* [JUnit Reports](junit-reports.html "JUnit Reports") +* [Source XRef](source-xref.html "Source XRef") +* [Test Source XRef](test-source-xref.html "Test Source XRef") +* [Xml Reference](xml-reference.html "Xml Reference") diff --git a/runtime-configuration.md b/runtime-configuration.md new file mode 100644 index 0000000..97b4609 --- /dev/null +++ b/runtime-configuration.md @@ -0,0 +1,34 @@ +Apache ActiveMQ ™ -- Runtime Configuration + +[Features](features.html) > [New Features](new-features.html) > [New Features in 5.9](new-features-in-59.html) > [Runtime Configuration](runtime-configuration.html) + + +From version 5.9.0 a new broker plugin will allow selective changes to a broker xml configuration to take effect without broker restart. +Consider a retail environment where there are central processors (hubs) and stores(spokes). It is advantageous to be able to add a new store +without any down time. +The addition of a new store could entail a new network connector and some new authorization policies, both of which can now be modified on the fly. + +The plugin is configured via the broker xml configuration as follows: + + + + + + ... + + +Note: the start="false" attribute. It ensures that xbean-spring does not auto start the broker when the application context is loading. +This ensures that the plugins reference to the broker is fully initialized before it is used and the xml configuration location can be successfully resolved. + +The checkPeriod when > 0 is the time in milliseconds between checks for changes to the lastupdate timestamp of the broker xml configuration url. +If checkPeriod is 0 (default) there is no automatic check for changes but a manual check can be triggered via JMX. + +Configuration elements that support runtime modification + +* +* +* +* + +Some more implementation detail and links to the tests can be found in [AMQ-4682](https://issues.apache.org/jira/browse/AMQ-4682) + diff --git a/sample-camel-routes.md b/sample-camel-routes.md new file mode 100644 index 0000000..2ae79c7 --- /dev/null +++ b/sample-camel-routes.md @@ -0,0 +1,144 @@ +Apache ActiveMQ ™ -- Sample Camel Routes + +[Using ActiveMQ](using-activemq.html) > [User Submitted Configurations](user-submitted-configurations.html) > [Sample Camel Routes](sample-camel-routes.html) + + +### Example of a configuration that show how to use Camel routes with Juel and Xpath. + + + + + + + + + + + + + + + + + + + + + ${in.headers.JMSType.equals('foo')} + + ${in.headers.myHeaderField.equals('takeMe')} + + + + + ${in.headers.JMSType.equals('bar')} + + ${in.headers.myHeaderField.equals('takeMe')} + + ${in.headers.myOtherHeaderField.equals('3')} + + + + + + + + + + + + $JMSType = 'foo' and $myCustomHeader='takeMe' + + + + $JMSType = 'bar' and $myCustomHeader='takeMe' + + + + + + + + + + + $JMSType = 'foo' + + + + + + + + + + + + + + + ${in.headers.JMSType.equals('foo')} + + + + + + + + + + + ${in.headers.JMSType.equals('foo')} + + ${in.headers.OperationRequest.equals('foo1')} + + + + ${in.headers.OperationRequest.equals('foo2')} + + + + + + + + + + + ${in.headers.JMSType.equals('foo')} + + /rootXMLBodyNode/childXMLBodyNode\[@myAttributeKey='myAttributeValue'\] + + + + + + + + + + + ${in.headers.JMSType.equals('Tideworks.GateVision.XmlCmd')} + + /rootXMLBodyNode/childXMLBodyNode/elementKey = 'elementValue' + + + + + + + + + + + ${in.headers.JMSType.equals('foo')} + + /rootXMLBodyNode/childXMLBodyNode\[@myAttributeKey='myAttributeValue'\]/grandchildXMLBodyNode\[@myAttributeKey='myAttributeValue'\] + + + + + + + diff --git a/sample-report.md b/sample-report.md new file mode 100644 index 0000000..25e783c --- /dev/null +++ b/sample-report.md @@ -0,0 +1,76 @@ +Apache ActiveMQ ™ -- sample report + +[Features](features.html) > [Performance](performance.html) > [ActiveMQ Performance Module Users Manual](activemq-performance-module-users-manual.html) > [sample report](sample-report.html) + + +Performance Test Report Template +-------------------------------- + + + + + Java(TM) 2 Runtime Environment, Standard Edition + 1.4.2_10-b03 + . + . + . + x86 + Windows XP + pentium i486 i386 + + + + + + 5 + . + . + . + all + 2 + + + + + + 1035 + 255 + 727 + 347 + 527 + 947 + 615 + 712 + 864 + 187 + . + . + . + 1364 + 395 + 716 + 377 + 515 + + + + + + 552114 + 5 + 3209.9651162790697 + 3161.9651162790697 + 641.9930232558139 + 632.3930232558139 + clientName=TestProducer4,value=36 + clientName=TestProducer4,value=1764 + clientName=TestProducer1,value=107409 + clientName=TestProducer0,value=116751 + clientName=TestProducer1,value=624.4709302325581 + clientName=TestProducer0,value=678.7848837209302 + clientName=TestProducer1,value=615.2732558139535 + clientName=TestProducer0,value=668.9418604651163 + + + + diff --git a/sandbox.md b/sandbox.md new file mode 100644 index 0000000..891768d --- /dev/null +++ b/sandbox.md @@ -0,0 +1,5 @@ +Apache ActiveMQ ™ -- Sandbox + +[Developers](developers.html) > [Sandbox](sandbox.html) + + diff --git a/scaling-queues.md b/scaling-queues.md new file mode 100644 index 0000000..ed703fb --- /dev/null +++ b/scaling-queues.md @@ -0,0 +1,43 @@ +Apache ActiveMQ ™ -- Scaling Queues + +[Features](features.html) > [Horizontal Scaling](horizontal-scaling.html) > [Scaling Queues](scaling-queues.html) + + +Scaling to tens of thousands of Queues in a single broker is relatively straightforward - but requires some configuration changes from the default. + +Reducing Threads +---------------- + +With the default configuration, ActiveMQ is configured to use a dispatch thread per Queue - you can use set the optimizedDispatch property on the destination policy entry - see [configuring Queues](per-destination-policies.html). + +ActiveMQ can optionally use internally a thread pool to control dispatching of messages - but as a lot of deployment operating systems are good at handling a large number of threads, this is off by default. To enable this option, either set the ACTIVEMQ\_OPTS to disable dedicated task runners in the start up script, INSTALL\_DIR/bin/activemq -e.g. + +ACTIVEMQ_OPTS="-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=false" + +or you can set ACTIVEMQ_OPTS in /etc/activemq.conf. + +**Note:** From ActiveMQ 5.6 onwards the dedicated task runner is disabled by default (see .jira-issue { padding: 0 0 0 2px; line-height: 20px; } .jira-issue img { padding-right: 5px; } .jira-issue .aui-lozenge { line-height: 18px; vertical-align: top; } .jira-issue .icon { background-position: left center; background-repeat: no-repeat; display: inline-block; font-size: 0; max-height: 16px; text-align: left; text-indent: -9999em; vertical-align: text-bottom; } [AMQ-3667](https://issues.apache.org/jira/browse/AMQ-3667?src=confmacro) ). + +To reduce the number of threads used for the transport - take a look at using the NIO transport - see [Configuring Transports](configuring-transports.html) + +Here is an [example](http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/sample-conf/activemq-scalability.xml) of this in use in one of the provided sample broker configuration files. + +Reducing Memory Consumption +--------------------------- + +Reduce the memory used per thread - see [reducing memory consumption](javalangoutofmemory.html) + +Reduce number of file descriptors +--------------------------------- + +ActiveMQ uses the amqPersistenceAdapter by default for persistent messages. Unfortunately, this persistence adapter (as well as the kahaPersistenceAdapter) opens a file descriptor for each queue. When creating large numbers of queues, you'll quickly run into the limit for your OS. + +You can either choose another [persistence option](persistence.html) + +or - try out the new [KahaDB](kahadb.html) in version 5.3 and higher + +Increase the limit on file descriptors per process +-------------------------------------------------- + +Try [googling for the OS you are using](http://tinyurl.com/o9qs2f) + diff --git a/scaling-the-depth-of-a-queue.md b/scaling-the-depth-of-a-queue.md new file mode 100644 index 0000000..899bc8d --- /dev/null +++ b/scaling-the-depth-of-a-queue.md @@ -0,0 +1,13 @@ +Apache ActiveMQ ™ -- Scaling the Depth of a Queue + +[Features](features.html) > [Scaling the Depth of a Queue](scaling-the-depth-of-a-queue.html) + + +Nearly all messaging systems (certainly open source ones) hold either a copy of a persistent message or a reference to a persisted message in memory. This is primarily to try and improve performance, but it also can significantly decrease the complexity of implementation. In fact ActiveMQ version 4 and below worked this - way - by holding references to persisted messages in memory. + +However there is a limitation to this approach, no matter how much memory you have at your disposal, you will hit a limit to the number persistent messages a broker can handle at any particular time. + +To get around this limitation, ActiveMQ introduced a paging cache - for all message stores (except the memory store) to get the best of both worlds - great performance and the ability to hold 100s of millions of messages in persistent store. ActiveMQ is **not** limited by memory availability, but by the size of the disk available to hold the persistent messages. + +For more information see: [Message Cursors](message-cursors.html) + diff --git a/security-advisories.md b/security-advisories.md new file mode 100644 index 0000000..7826a6f --- /dev/null +++ b/security-advisories.md @@ -0,0 +1,40 @@ +Apache ActiveMQ ™ -- Security Advisories + +[Community](community.html) > [Security Advisories](security-advisories.html) + + +Apache ActiveMQ +--------------- + +### 2017 + +* [CVE-2015-7559](security-advisories.data/CVE-2015-7559-announcement.txt?version=1&modificationDate=1493024710000&api=v2) - DoS in client via shutdown command + + +### 2016 + +* [CVE-2016-6810](security-advisories.data/CVE-2016-6810-announcement.txt?version=2&modificationDate=1481290006000&api=v2) - ActiveMQ Web Console - Cross-Site Scripting +* [CVE-2016-0734](security-advisories.data/CVE-2016-0734-announcement.txt?version=1&modificationDate=1457613666000&api=v2) - ActiveMQ Web Console - Clickjacking +* [CVE-2016-0782](security-advisories.data/CVE-2016-0782-announcement.txt?version=2&modificationDate=1458229308000&api=v2) - ActiveMQ Web Console - Cross-Site Scripting +* [CVE-2016-3088](security-advisories.data/CVE-2016-3088-announcement.txt?version=5&modificationDate=1464092715000&api=v2) - ActiveMQ Fileserver web application vulnerabilities + +### 2015 + +* [CVE-2015-5254](security-advisories.data/CVE-2015-5254-announcement.txt?version=1&modificationDate=1449589734000&api=v2) - Unsafe deserialization in ActiveMQ +* [CVE-2015-1830](security-advisories.data/CVE-2015-1830-announcement.txt?version=2&modificationDate=1440426986000&api=v2) \- Path traversal leading to unauthenticated RCE in ActiveMQ  + +### 2014 + +* [CVE-2014-3576](security-advisories.data/CVE-2014-3576-announcement.txt?version=1&modificationDate=1446901063000&api=v2) - Remote Unauthenticated Shutdown of Broker (DoS) +* [CVE-2014-3600](security-advisories.data/CVE-2014-3600-announcement.txt?version=2&modificationDate=1423051306000&api=v2) - Apache ActiveMQ XXE with XPath selectors +* [CVE-2014-3612](security-advisories.data/CVE-2014-3612-announcement.txt?version=2&modificationDate=1423051365000&api=v2) - ActiveMQ JAAS: LDAPLoginModule allows empty password authentication and Wildcard Interpretation +* [CVE-2014-8110](security-advisories.data/CVE-2014-8110-announcement.txt?version=2&modificationDate=1423051381000&api=v2) - ActiveMQ Web Console - Cross-Site Scripting + + +ActiveMQ Apollo +--------------- + +### 2014 + +* [CVE-2014-3579](security-advisories.data/CVE-2014-3579-announcement.txt?version=1&modificationDate=1423054118000&api=v2) - ActiveMQ Apollo XXE with XPath selectors + diff --git a/security.md b/security.md new file mode 100644 index 0000000..bae63b4 --- /dev/null +++ b/security.md @@ -0,0 +1,183 @@ +Apache ActiveMQ ™ -- Security + +[Features](features.html) > [Security](security.html) + + +ActiveMQ 4.x and greater provides pluggable security through various different providers. + +The most common providers are + +* [JAAS](http://java.sun.com/products/jaas/) for authentication +* a default authorization mechanism using a simple XML configuration file. + +### Authentication + +The default [JAAS](http://java.sun.com/products/jaas/) plugin relies on the standard JAAS mechanism for authentication. Refer to the [documentation](http://java.sun.com/products/jaas/reference/docs/index.html) for more detail. + +Typically you configure JAAS using a config file like [this one](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/login.config) and set the **java.security.auth.login.config** system property to point to it. If no system property is specified then by default the ActiveMQ JAAS plugin will look for **login.config** on the classpath and use that. + +#### Authentication Example + +Here is an example [login.config](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/login.config) which then points to these files + +* [users.properties](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/users.properties) +* [groups.properties](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/groups.properties) + +**Note:** Until version 5.11.1, these property files got reloaded on every authentication request by default. So updates to users, password and groups were loaded immediately. From 5.12 onward they only get reloaded if reload=true is set in your LoginModule configuration, e.g. + +activemq { org.apache.activemq.jaas.PropertiesLoginModule required org.apache.activemq.jaas.properties.user="users.properties" org.apache.activemq.jaas.properties.group="groups.properties" reload=true; }; + +If reload=true is not set, these property files get loaded on broker startup only!! See AMQ-5876 for details. + +#### Simple Authentication Plugin + +If you have modest authentication requirements (or just want to quickly set up your testing environment) you can use SimpleAuthenticationPlugin. With this plugin you can define users and groups directly in the broker's XML configuration. Take a look at the following snippet for example: + +xml + +Users and groups defined in this way can be later used with the appropriate authorization plugin. + +##### Anonymous access + +From version 5.4.0 onwards, you can configure simple authentication plugin to allow anonymous access to the broker. + +xml + +To allow anonymous access to the broker, use `anonymousAccessAllowed` attribute and set it to `true` as shown above. Now, when the client connects without username and password provided, a default username (`anonymous`) and group (`anonymous`) will be assigned to its security context. You can use this username and password to authorize client's access to appropriate broker resources (see the next section). You can also change username and group that will be assigned to _anonymous_ users by using `anonymousUser` and `anonymousGroup` attributes. + +### Authorization + +In ActiveMQ we use a number of operations which you can associate with user roles and either individual queues or topics or you can use wildcards to attach to hierarchies of topics and queues. + +Operation + +Description + +read + +You can browse and consume from the destination + +write + +You can send messages to the destination + +admin + +You can lazily create the destination if it does not yet exist. This allows you fine grained control over which new destinations can be dynamically created in what part of the queue/topic hierarchy + +Queues/Topics can specified using the ActiveMQ [Wildcards](wildcards.html) syntax. + +#### Authorization Example + +The following [example](http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/jaas-broker.xml) shows these 2 plugins in operation. Though note its very easy to write your own plugin.{snippet:id=example|lang=xml|url=activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/security/jaas-broker.xml}**Note** that full access rights should generally be given to the ActiveMQ.Advisory destinations because by default an ActiveMQConnection uses destination advisories to get early knowledge of temp destination creation and deletion. In addition, dynamic network connectors use advisories to determine consumer demand. +If necessary, the use of advisories in this manner can be disabled via the _watchTopicAdvisories_ boolean attribute of ActiveMQConnectionFactory and for a networkConnector, via the network connector _staticBridge_(5.6) boolean attribute. + +### Broker-to-Broker Authentication and Authorization + +If you have enabled authentication for a particular message broker, then other brokers that wish to connect to that broker must provide the proper authentication credentials via their element. For example, suppose that we have a network of brokers with the following configuration: + +* The network of brokers comprises two brokers (BrokerA and BrokerB) +* Authentication for BrokerA has been enabled via the example element. +* Authentication for BrokerB has not been enabled. +* BrokerA only listens for connections. In other words, BrokerA has a element, but no elements. + +In order for BrokerB to connect to BrokerA, the corresponding element in BrokerB's XML configuration file must be set up as follows. + +xml + +Note how BrokerB's element must provide the proper credentials in order to connect to BrokerA. If authorization has been enabled on BrokerA, then the userName assigned to the element must also have the proper authorization credentials. Messages cannot be forwarded from BrokerB to BrokerA if BrokerA has authorization enabled and BrokerB's corresponding element's userName has not been given the proper authorization credentials. + +Also, if BrokerA is given a element so that it can initiate a connection to BrokerB, then that must be given a userName/password combination that is defined in the element; this is required even though BrokerB does not have authentication services enabled. + +### Controlling Access To Temporary Destinations + +To control access to temporary destinations, you will need to add a element to the authorizationMap. Through this element, you control access to all temporary destinations. If this element is not present, read, write, and admin privileges for temporary destinations will be granted to all. In the example below, read, write, and admin privileges for temporary destinations are only granted to those clients that have been assigned to the 'admin' group. + +xml .. .. .. .. + +### LDAP Authentication Using the JAAS Plugin + +New module + +A new/better ldap authorization module is available since 5.6. See [Cached LDAP Authorization Module](cached-ldap-authorization-module.html) for more info. + +1\. Configure the JAAS LDAPLoginModule and the LDAPAuthorizationMap in activemq.xml: + +xml + +2\. Configure the JAAS login.config (I haven't de-duplicated the config yet): + +LdapConfiguration { org.apache.activemq.jaas.LDAPLoginModule required debug=true initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory connectionURL="ldap://ldap.acme.com:389" connectionUsername="cn=mqbroker,ou=Services,dc=acme,dc=com" connectionPassword=password connectionProtocol=s authentication=simple userBase="ou=User,ou=ActiveMQ,ou=systems,dc=acme,dc=com" userRoleName=dummyUserRoleName userSearchMatching="(uid={0})" userSearchSubtree=false roleBase="ou=Group,ou=ActiveMQ,ou=systems,dc=acme,dc=com" roleName=cn roleSearchMatching="(member:=uid={1})" roleSearchSubtree=true ; }; + +3\. Import the following LDIF file into the LDAP server: + +version: 1 # # Sample LDIF for ActiveMQ LDAP authentication and authorisation # Passwords are defaulted to "password" - it is your responsibility to change them! # # Sets up: # 1. Bind user # 2. A sample queue with admin,read,write permission assignments # 3. ActiveMQ advisory topics # 4. Two groups - admin and webapp # 5. Two users - admin and webapp # 6. Role assignments - admin->admin, webapp->webapp # # (c) Robin Bramley 2008 # Provided as is without any warranty of any kind # dn: dc=acme,dc=com dc: acme objectClass: domain objectClass: top dn: ou=Services,dc=acme,dc=com ou: Services objectClass: organizationalUnit objectClass: top dn: cn=mqbroker,ou=Services,dc=acme,dc=com cn: mqbroker objectClass: organizationalRole objectClass: top objectClass: simpleSecurityObject userPassword: {SSHA}j0NpveEO0YD5rgI5kY8OxSRiN5KQ/kE4 description: Bind user for MQ broker dn: ou=systems,dc=acme,dc=com ou: systems objectClass: organizationalUnit objectClass: top dn: ou=ActiveMQ,ou=systems,dc=acme,dc=com objectClass: organizationalUnit objectClass: top ou: ActiveMQ dn: ou=Destination,ou=ActiveMQ,ou=systems,dc=acme,dc=com objectClass: organizationalUnit objectClass: top ou: Destination dn: ou=Queue,ou=Destination,ou=ActiveMQ,ou=systems,dc=acme,dc=com objectClass: organizationalUnit objectClass: top ou: Queue dn: cn=com.acme.myfirstrealqueue,ou=Queue,ou=Destination,ou=ActiveMQ,ou=syst ems,dc=acme,dc=com cn: com.acme.myfirstrealqueue description: A queue objectClass: applicationProcess objectClass: top dn: cn=admin,cn=com.acme.myfirstrealqueue,ou=Queue,ou=Destination,ou=ActiveM Q,ou=systems,dc=acme,dc=com cn: admin description: Admin privilege group, members are roles member: cn=admin member: cn=webapp objectClass: groupOfNames objectClass: top dn: cn=read,cn=com.acme.myfirstrealqueue,ou=Queue,ou=Destination,ou=ActiveMQ ,ou=systems,dc=acme,dc=com cn: read member: cn=webapp objectClass: groupOfNames objectClass: top dn: cn=write,cn=com.acme.myfirstrealqueue,ou=Queue,ou=Destination,ou=ActiveM Q,ou=systems,dc=acme,dc=com cn: write objectClass: groupOfNames objectClass: top member: cn=webapp dn: ou=Topic,ou=Destination,ou=ActiveMQ,ou=systems,dc=acme,dc=co m objectClass: organizationalUnit objectClass: top ou: Topic dn: cn=ActiveMQ.Advisory.Consumer,ou=Topic,ou=Destination,ou=ActiveMQ,ou=sys tems,dc=acme,dc=com cn: ActiveMQ.Advisory.Consumer objectClass: applicationProcess objectClass: top description: Advisory topic about consumers dn: cn=read,cn=ActiveMQ.Advisory.Consumer,ou=Topic,ou=Destination,ou=ActiveM Q,ou=systems,dc=acme,dc=com cn: read member: cn=webapp objectClass: groupOfNames objectClass: top dn: cn=ActiveMQ.Advisory.TempQueue,ou=Topic,ou=Destination,ou=ActiveMQ,ou=sy stems,dc=acme,dc=com cn: ActiveMQ.Advisory.TempQueue description: Advisory topic about temporary queues objectClass: applicationProcess objectClass: top dn: cn=read,cn=ActiveMQ.Advisory.TempQueue,ou=Topic,ou=Destination,ou=Active MQ,ou=systems,dc=acme,dc=com cn: read member: cn=webapp objectClass: groupOfNames objectClass: top dn: cn=ActiveMQ.Advisory.TempTopic,ou=Topic,ou=Destination,ou=ActiveMQ,ou=sy stems,dc=acme,dc=com cn: ActiveMQ.Advisory.TempTopic objectClass: applicationProcess objectClass: top description: Advisory topic about temporary topics dn: cn=read,cn=ActiveMQ.Advisory.TempTopic,ou=Topic,ou=Destination,ou=Active MQ,ou=systems,dc=acme,dc=com cn: read member: cn=webapp objectClass: groupOfNames objectClass: top dn: ou=Group,ou=ActiveMQ,ou=systems,dc=acme,dc=com objectClass: organizationalUnit objectClass: top ou: Group dn: cn=admin,ou=Group,ou=ActiveMQ,ou=systems,dc=acme,dc=com cn: admin member: uid=admin objectClass: groupOfNames objectClass: top dn: cn=webapp,ou=Group,ou=ActiveMQ,ou=systems,dc=acme,dc=com cn: webapp member: uid=webapp objectClass: groupOfNames objectClass: top dn: ou=User,ou=ActiveMQ,ou=systems,dc=acme,dc=com objectClass: organizationalUnit objectClass: top ou: User dn: uid=admin,ou=User,ou=ActiveMQ,ou=systems,dc=acme,dc=com uid: admin userPassword: {SSHA}j0NpveEO0YD5rgI5kY8OxSRiN5KQ/kE4 objectClass: account objectClass: simpleSecurityObject objectClass: top dn: uid=webapp,ou=User,ou=ActiveMQ,ou=systems,dc=acme,dc=com uid: webapp userPassword: {SSHA}j0NpveEO0YD5rgI5kY8OxSRiN5KQ/kE4 objectClass: account objectClass: simpleSecurityObject objectClass: top + +4\. Start up ActiveMQ + +5\. Test it out + +### Security and ActiveMQ Components + +Along with the message broker, you can optionally execute several additional "components", such as Camel and/or the Web console. These components establish connections with the broker; therefore, if you have secured your broker (i.e., enabled authentication), you will have to configure these components in order to have them provide the required security credentials (username, password) when they connect to the broker. + +#### Camel + +You may have the following Camel context defined in your broker's XML configuration file. + +xml org.foo.bar + +The above configuration is not set up to work within a secure environment. + +If the application is running in an OSGi container, add the following line before the CamelContext definition: + +xml + +This allows any pre-configured instance of the ActiveMQComponent deployed in the container to take precedence on the default ActiveMQComponent. + +That is, with the above configuration, Camel will establish a connection with ActiveMQ, but will not provide a username and password. Therefore, when ActiveMQ security is enabled, the above configuration results in a security exception. The exception will be thrown multiple times, because Camel will continue to retry the connection. If you're not using Camel, comment out the above XML code. If you are using Camel, add the following bean definition to your broker's XML configuration: + +xml + +With the above bean definition, Camel will pass the specified security credentials when it connects to the broker. + +If the broker is running in an OSGi container, add the following line after the ActiveMQComponent bean definition: + +xml + +#### Web Console + +If you want to use the Web Console with a secured broker, you have to change `connectionFactory` bean in your `webapps/admin/WEB-INF/webconsole-embeded.xml` to something like this: + +xml + +#### Default Credentials + +Starting with version 5.3, all of the above configuration details are included in the default ActiveMQ configuration. Also, there is a central place where you can set credentials that these components will use to connect to the broker. Just set your desired username and password in the `conf/credentials.properties` file, which by default looks like this: + +activemq.username=system activemq.password=manager + +#### Encrypted Passwords + +As of version 5.4.1 you can also use [Encrypted passwords](encrypted-passwords.html) with your broker + +### Message level Authorization + +It's also possible to authorize each single message using some content based authorization policy of your choosing. In comparison to the other security options described before, Message level Authorization requires a bit more than just some configuration. You have to start with creating a new maven project and add the [activemq-all](https://mvnrepository.com/artifact/org.apache.activemq/activemq-all) maven dependency (in the same version as your activemq installation) to the pom.xml of your new project. +In the next step you have to create a new Java class and let it implement the org.apache.activemq.security.MessageAuthorizationPolicy interface. After that, simply add a method with signature: + +public boolean isAllowedToConsume(ConnectionContext context, Message message){...} + +to the new Java class. For usage of your own Message level Authorization policy, the Java class has to be packaged as jar and added to the /lib folder of ActiveMQ to make it available for ActiveMQ. In the last step, it has to be configured on the broker directly by using the * messageAuthorizationPolicy* property or add it to the XML as follows + +xml .. .. + +Implementing your own custom Security Plugin +-------------------------------------------- + +All of the various security implementations are implemented as [Interceptors](interceptors.html) so its very easy to add your own custom implementation. Its probably easier to start with one of the [simple implementations](http://activemq.apache.org/maven/apidocs/org/apache/activemq/security/package-summary.html) though if you are using JAAS you could derive from the [JAAS implementation](http://activemq.apache.org/maven/apidocs/org/apache/activemq/jaas/package-summary.html). + +### Third Party Tools + +* [ActiveMQ LDAP and JDBC Security Plugins from TTM Solutions](http://www.ttmsolutions.com/Apache_Software/ActiveMQ_LDAP_JDBC_Security_Plugins.php) + diff --git a/seda.md b/seda.md new file mode 100644 index 0000000..3171629 --- /dev/null +++ b/seda.md @@ -0,0 +1,7 @@ +Apache ActiveMQ ™ -- SEDA + +[Community](community.html) > [FAQ](faq.html) > [Terminology](terminology.html) > [SEDA](seda.html) + + +Staged Event Driven Architecture which is a design pattern for building high performance and scalable distributed systems. See [this paper](http://www.eecs.harvard.edu/~mdw/proj/seda/) for more details. + diff --git a/selectors.md b/selectors.md new file mode 100644 index 0000000..5ab3bc6 --- /dev/null +++ b/selectors.md @@ -0,0 +1,37 @@ +Apache ActiveMQ ™ -- Selectors + +[Features](features.html) > [Consumer Features](consumer-features.html) > [Selectors](selectors.html) + + +JMS Selectors +------------- + +Selectors are a way of attaching a filter to a subscription to perform content based routing. Selectors are defined using SQL 92 syntax and typically apply to message headers; whether the standard properties available on a JMS message or custom headers you can add via the JMS code. + +Here is an example + +JMSType = 'car' AND color = 'blue' AND weight > 2500 + +For more documentation on the detail of selectors see the reference on [javax.jmx.Message](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Message.html). +ActiveMQ supports some JMS defined properties, as well as some ActiveMQ ones - see [message properies](activemq-message-properties.html) \- that the selector can use. + +### Using XPath to filter messages + +Apache ActiveMQ also supports XPath based selectors when working with messages containing XML bodies. To use an XPath selector use the following syntax + +XPATH '//title\[@lang=''eng''\]' + +Xalan dependency + +XPath support requires [Xalan](http://xalan.apache.org/index.html) which is not part of the distribution. The Xalan jars needs to be manually added to lib directory or pulled into your app via maven + + + xalan + xalan + 2.6.0 + + +### String Property Conversions / Selecting Against STOMP messages + +The JMS spec states that a String property should not get converted to a numeric when used in a selector. So for example, if a message has the 'age' property set to String '21' then the following selector should not match it: 'age > 18'. Since ActiveMQ support STOMP client which can only send messages with string properties, that restriction is a bit limiting. If you want your JMS selectors to auto-convert String properties the the appropriate number type, just prefix the the selector with 'convert\_string\_expressions:'. If you changed selector in the previous example to be 'convert\_string\_expressions:age > 18', then it would match the message. + diff --git a/setting-up-activemq-with-tomcat-559.md b/setting-up-activemq-with-tomcat-559.md new file mode 100644 index 0000000..a7087bf --- /dev/null +++ b/setting-up-activemq-with-tomcat-559.md @@ -0,0 +1,51 @@ +Apache ActiveMQ ™ -- Setting up ActiveMQ with Tomcat 5.5.9 + +[Connectivity](connectivity.html) > [Containers](containers.html) > [Tomcat](tomcat.html) > [Setting up ActiveMQ with Tomcat 5.5.9](setting-up-activemq-with-tomcat-559.html) + + +Create the file /META-INF/context.xml. Here is an example: + + + + + + + + +This will setup the JNDI for the ConectionFactory and Topic to work within Tomcat. + +Here is some example code that will publish a test message to the MY.TEST.FOO Topic: + +try { + InitialContext initCtx = new InitialContext(); + Context envContext = (Context) initCtx.lookup("java:comp/env"); + ConnectionFactory connectionFactory = (ConnectionFactory) envContext.lookup("jms/ConnectionFactory"); + Connection connection = connectionFactory.createConnection(); + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageProducer producer = session.createProducer((Destination) envContext.lookup("jms/topic/MyTopic")); + + Message testMessage = session.createMessage(); + testMessage.setStringProperty("testKey", "testValue"); + producer.send(testMessage); +} catch (NamingException e) { + // TODO handle exception +} catch (JMSException e) { + // TODO handle exception +} + diff --git a/shared-file-system-master-slave.md b/shared-file-system-master-slave.md new file mode 100644 index 0000000..7c41e23 --- /dev/null +++ b/shared-file-system-master-slave.md @@ -0,0 +1,87 @@ +Apache ActiveMQ ™ -- Shared File System Master Slave + +[Features](features.html) > [Clustering](clustering.html) > [MasterSlave](masterslave.html) > [Shared File System Master Slave](shared-file-system-master-slave.html) + + +Shared File System Master Slave +------------------------------- + +If you have a SAN or shared file system it can be used to provide _high availability_ such that if a broker is killed, another broker can take over immediately. + +Ensure your shared file locks work + +Note that the requirements of this failover system are a distributed file system like a SAN for which exclusive file locks work reliably. If you do not have such a thing available then consider using [MasterSlave](masterslave.html) instead which implements something similar but working on commodity hardware using local file systems which ActiveMQ does the replication. + +OCFS2 Warning + +Was testing using OCFS2 and both brokers thought they had the master lock - this is because "OCFS2 only supports locking with 'fcntl' and not 'lockf and flock', therefore mutex file locking from Java isn't supported." + +From [http://sources.redhat.com/cluster/faq.html#gfs\_vs\_ocfs2](http://sources.redhat.com/cluster/faq.html#gfs_vs_ocfs2) : +OCFS2: No cluster-aware flock or POSIX locks +GFS: fully supports Cluster-wide flocks and POSIX locks and is supported. +See this JIRA for more discussion: [https://issues.apache.org/jira/browse/AMQ-4378](https://issues.apache.org/jira/browse/AMQ-4378) + +NFSv3 Warning + +In the event of an abnormal NFSv3 client termination (i.e., the ActiveMQ master broker), the NFSv3 server will not timeout the lock that is held by that client. This effectively renders the ActiveMQ data directory inaccessible because the ActiveMQ slave broker can't acquire the lock and therefore cannot start up. The only solution to this predicament with NFSv3 is to reboot all ActiveMQ instances to reset everything. + +Use of NFSv4 is another solution because its design includes timeouts for locks. When using NFSv4 and the client holding the lock experiences an abnormal termination, by design, the lock is released after 30 seconds, allowing another client to grab the lock. For more information about this, see [this blog entry](http://blogs.netapp.com/eislers_nfs_blog/2008/07/part-i-since-nf.html). + +Basically you can run as many brokers as you wish from the same shared file system directory. The first broker to grab the exclusive lock on the file is the master broker. If that broker dies and releases the lock then another broker takes over. The slave brokers sit in a loop trying to grab the lock from the master broker. + +The following example shows how to configure a broker for Shared File System Master Slave where **/sharedFileSystem** is some directory on a shared file system. It is just a case of configuring a file based store to use a shared directory. + + + + + +or: + + + + + +or: + + + + + +### Startup + +On startup one master grabs an exclusive lock on the broker file directory - all other brokers are slaves and pause waiting for the exclusive lock. + +![](shared-file-system-master-slave.data/Startup.png) + +Clients should be using the [Failover Transport](failover-transport-reference.html) to connect to the available brokers. e.g. using a URL something like the following + +failover:(tcp://broker1:61616,tcp://broker2:61616,tcp://broker3:61616) + +Only the master broker starts up its transport connectors and so the clients can only connect to the master. + +### Master failure + +If the master looses the exclusive lock then it immediately shuts down. If a master shuts down or fails, one of the other slaves will grab the lock and so the topology switches to the following diagram + +![](shared-file-system-master-slave.data/MasterFailed.png) + +One of the other other slaves immediately grabs the exclusive lock on the file system to them commences becoming the master, starting all of its transport connectors. + +Clients loose connection to the stopped master and then the failover transport tries to connect to the available brokers - of which the only one available is the new master. + +### Master restart + +At any time you can restart other brokers which join the cluster and start as slaves waiting to become a master if the master is shutdown or a failure occurs. So the following topology is created after a restart of an old master... + +![](shared-file-system-master-slave.data/MasterRestarted.png) + +### Scheduler Support + +ActiveMQ maintains information about schedules independent to the settings in the persistence adapter. With a shared file-system it is therefore important to tell ActiveMQ expressly where to store scheduler information. To do this, set the `dataDirectory` attribute on the `broker`, for example: + + + diff --git a/shiro.md b/shiro.md new file mode 100644 index 0000000..51ac720 --- /dev/null +++ b/shiro.md @@ -0,0 +1,370 @@ +Apache ActiveMQ ™ -- Shiro + +[Features](features.html) > [Security](security.html) > [Shiro](shiro.html) + + +ActiveMQ 5.10 and later provides a fully customizable security experience using [Apache Shiro](http://shiro.apache.org). + +The ActiveMQ Shiro plugin can secure the ActiveMQ broker, from authenticating transport connections to authorizing behavior with topics and queues and everything in between. + +Quickstart +---------- + +The fastest/simplest way to enable the ShiroPlugin is to define it as a Spring bean in the `broker` `plugins` section and embed [Shiro ini configuration](http://shiro.apache.org/configuration.html): + + + + + + + + + \[main\] + # Shiro object graph configuration here if desired/necessary + + \[users\] + # users section format: + # + # username = password \[, assignedRole1, assignedRole2, ..., assignedRoleN\] + # + # for example: + # + # scott = tiger, advisory, users, administrators + # + # Roles and permissions assigned to roles are defined in the \[roles\] section + # below. By transitive association, any user assigned a role is granted the + # role's permissions. + + # ActiveMQ System User + # needed for in-VM/local connections when authentication is enabled: + system = manager, system + + # Other users here. You should almost always add the \`advisory\` role for each + # user to make your life easy! See the \[roles\] comments below for more info. + # jsmith = jsmithsPassword, advisory + # djones = djonesPassword, advisory, ... + # etc. + + \[roles\] + # roles section format: + # + # roleName = wildcardPermission1, wildcardPermission2, ..., wildcardPermissionN + # + # The 'system' role is assigned all permissions (*). Be careful when assigning + # this to actual users other than then system user: + system = * + + # Full access rights should generally be given to the ActiveMQ.Advisory.* + # destinations because by default an ActiveMQConnection uses advisory topics to + # get early knowledge of temp destination creation and deletion. For more info: + # + # http://activemq.apache.org/security.html + # + # So we create an 'advisory' role here with a wildcard/catch-all permissions + # for all advisory topics. To make your life easy, ensure you assign this to + # any/all users in the \[users\] section above, e.g. + # + # jsmith = jsmithsPassword, advisory, ... + + advisory = topic:ActiveMQ.Advisory* + + + + + + + +This config assumes you have a simple/small set of static users that access your ActiveMQ broker. We'll cover enabling more advanced user repositories later. + +#### Encrypted Passwords + +The above example uses plaintext passwords, which is simple to set up and easy to use for testing, but not really secure. Most production deployments will likely want to use encrypted passwords. For example: + + + + + \[main\] + # Shiro object graph configuration here + passwordMatcher = org.apache.shiro.authc.credential.PasswordMatcher + iniRealm.credentialsMatcher = $passwordMatcher + + \[users\] + scott = $shiro1$SHA-256$500000$eWpVX2tGX7WCP2J+jMCNqw==$it/NRclMOHrfOvhAEFZ0mxIZRdbcfqIBdwdwdDXW2dM=, advisory + system = $shiro1$SHA-256$500000$eUyGwMGr9GYzB/gg/MoNgw==$WGc0yWFWv8+hLqjzVLgW7Hat2FQTywDXBl5izpqaLSY=, system + + \[roles\] + system = * + advisory = topic:ActiveMQ.Advisory* + + + +As you can see, two things are different than the simpler/default configuration: + +1. The `[main]` section configured a `PasswordMatcher` on the implicit `iniRealm`. This indicates that all `.ini`-configured users are expected to have proper hashed/secure passwords. +2. The `[users]` lines now have hash values in the `password` location instead of plaintext values. + +To get the hashed password text values, you will want to [Download Shiro's Command Line Hasher](http://search.maven.org/remotecontent?filepath=org/apache/shiro/tools/shiro-tools-hasher/1.2.2/shiro-tools-hasher-1.2.2-cli.jar) from Maven Central. Once downloaded, you can use it to create secure password hashes that you can safely copy-and-paste in to the `[users]` section: + +$ java -jar shiro-tools-hasher-X.X.X-cli.jar -p + +It will then ask you to enter the password and then confirm it: + +Password to hash: +Password to hash (confirm): + +When this command executes, it will print out the securely-salted-iterated-and-hashed password. For example: + +$shiro1$SHA-256$500000$eWpVX2tGX7WCP2J+jMCNqw==$it/NRclMOHrfOvhAEFZ0mxIZRdbcfqIBdwdwdDXW2dM= + +Take this value and place it as the password in the user definition line (followed by any desired roles, such as the `advisory` role). For example: + +\[users\] +scott = $shiro1$SHA-256$500000$eWpVX2tGX7WCP2J+jMCNqw==$it/NRclMOHrfOvhAEFZ0mxIZRdbcfqIBdwdwdDXW2dM=, advisory +system = $shiro1$SHA-256$500000$eUyGwMGr9GYzB/gg/MoNgw==$WGc0yWFWv8+hLqjzVLgW7Hat2FQTywDXBl5izpqaLSY=, system + +Configuration +------------- + +The ActiveMQ Shiro plugin can be configured in a number of ways. For example, with Java: + +BrokerService brokerService = new BrokerService(); + +ShiroPlugin shiroPlugin = new ShiroPlugin(); +//configure shiroPlugin via getters/setters here + +broker.setPlugins(new BrokerPlugin\[\]{shiroPlugin}); +//continue configuring the brokerService as necessary ... + +Or, if using traditional ActiveMQ xml, as a Spring bean in the `broker` `plugins` section. For example: + + + + + + + + + + + + + + + + +The remaining configuration examples on this page will be shown as bean XML, but know that the same configuration can be done in Java as standard JavaBeans-compatible getter and setter methods. + +### Enabling/Disabling + +You can enable or disable the ShiroPlugin entirely without having to remove it from your configuration. This is convenient when testing, or when you want to enable or disable it based on a configuration parameter at startup. + + + --> + + +A nice technique is to use Spring's [PropertySourcesPlaceholderConfigurer](http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/context/support/PropertySourcesPlaceholderConfigurer.html) and placeholder tokens (set `shiro.enabled = true` in one of your placeholder property files): + + + + + ... + + + + + + + + + + + + + +This allows you to enable or disable the Shiro plugin by simply setting a property in a `.properties` file without having to change your XML config. + +### Shiro Environment + +The `shiroPlugin` requires a Shiro [Environment](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/env/Environment.html) to function. You must either configure the plugin with: + +* an `Environment` instance (or a Shiro `SecurityManager` instance) that you instantiate and configure elsewhere - e.g. in Java code or elsewhere in the Spring XML config, or +* specify some Shiro [.ini configuration](http://shiro.apache.org/configuration.html), either as a direct String, an [Ini](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/config/Ini.html) instance, or a [resource path](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/io/ResourceUtils.html#getInputStreamForPath(java.lang.String)) where your `shiro.ini` file is located. The plugin will load the ini config and create an `Environment` automatically. + +#### Custom Environment + +A Shiro `Environment` object contains everything that Shiro needs to operate, and this encapsulates the Shiro `SecurityManager` as well. If you want to construct and configure an Environment instance yourself: + + + + + + + + + + + + + + ... config here ... + + + + + +#### Custom SecurityManager + +Instead of configuring an `Environment` instance, you can construct a `SecurityManager` instead: + + + + + + + + + + + + + + + + + ... + + ... maybe more Realm beans ... + + + + + + + +If specifying a `SecurityManager` instead of the `Environment` property, an `Environment` will be created automatically that wraps the configured `SecurityManager`. + +#### shiro.ini File + +If you don't want to construct a `SecurityManager` or `Environment` in code or xml, you can easily specify a [shiro.ini](http://shiro.apache.org/configuration.html) file instead and an Environment/SecurityManager will automatically be created based on that: + + + + + + + + + + + + + +This allows you to keep your Shiro config separate from your ActiveMQ broker configuration if you prefer. + +#### shiro.ini Embedded + +If you want to use ini configuration and you would prefer to have all configuration in one place, you can embed the ini config instead: + + + + + + + + + \[main\] + + # Shiro object graph configuration here if desired/necessary + + \[users\] + system = manager, system + + \[roles\] + system = * + advisory = topic:ActiveMQ.Advisory* + + + + + + + + +Design +------ + +The Shiro plugin is a [BrokerPlugin](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/BrokerPlugin.html) that inserts 3 [BrokerFilter](http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/BrokerFilter.html)s in the broker filter chain: the `SubjectFilter`, the `AuthenticationFilter` and the `AuthorizationFilter` + +**SubjectFilter** + +The `SubjectFilter` exists before all other Shiro-related broker filters in the broker filter chain. It constructs a Shiro [Subject](http://shiro.apache.org/subject.html) instance reflecting the broker client and ensures the `Subject` instance is available for all downstream broker filters that may need to use the `Subject` to perform security operations. + +**AuthenticationFilter** + +The `AuthenticationFilter` exists immediately after the `SubjectFilter` in the broker filter chain. It ensures that the broker client `Subject` is authenticated if necessary before allowing the chain to continue. If authentication is required and the `Subject` is not authenticated, the broker filter chain will not be executed, ensuring only verified identities may perform further behavior. + +**AuthorizationFilter** + +The `AuthorizationFilter` exists immediately after the `AuthenticationFilter` in the broker filter chain. It ensures that the `Subject` associated with the filter chain is authorized (permitted) to perform the action being attempted before allowing the action to execute. + +For example, it would ensure that the `Subject` is allowed to send a message to a particular topic before allowing the send operation to execute. If authorization is enabled and the `Subject` is not authorized to perform the desired action, the broker filter chain will not be executed. + +SubjectFilter +------------- + +The ShiroPlugin installs and executes the `SubjectFilter` before all other Shiro-related broker filters in the broker filter chain. The `SubjectFilter` constructs a Shiro [Subject](http://shiro.apache.org/subject.html) instance reflecting the broker client and ensures the `Subject` instance is available for all downstream broker filters that may need to use the `Subject` to perform security operations. + +The `SubjectFilter` is mostly a 'behind the scenes' component of the SubjectFilter, but it does offer some customization for advanced use cases: + +* the ability to customize exactly how broker clients' `Subject` instances are created via a `ConnectionSubjectFactory` and +* the ability to customize how the ActiveMQ ConnectionContext's [SecurityContext](http://activemq.apache.org/maven/apidocs/org/apache/activemq/security/SecurityContext.html) is constructed. + +Unless you're deeply familiar with ActiveMQ's security model, you can safely skip to **Authentication** below. + +### ConnectionSubjectFactory + +A `ConnectionSubjectFactory` creates a `Subject` instance that represents the broker client's identity. The `SubjectFilter`'s default instance is a `DefaultConnectionSubjectFactory` + +Most `ConnectionSubjectFactory` implementations will simply use Shiro's `Subject.Builder` to create an anonymous Subject instance and let the downstream `AuthenticationFilter` authenticate the Subject based on any credentials associated with the connection. After authentication, the Subject will have an identity, and this is the expected flow for most connection clients. + +However, if there is some other data associated with the connection that can be inspected to create a Subject instance beyond what the `DefaultConnectionSubjectFactory`, you can implement the `ConnectionSubjectFactory` interface and plug it in to the `SubjectFilter`: + + + + + + + +### SecurityContextFactory + +The ActiveMQ `ConnectionContext` associated with broker client connections utilizes a `SecurityContext` object. When the `SubjectFilter` executes, it needs to create a Shiro-specific `SecurityContext` and associate it with the `ConnectionContext` so the Subject may be accessed downstream for all subsequent security operations. + +The `SubjectFilter` delegates `SecurityContext` creation to a `SecurityContextFactory` instance. The `DefaultSecurityContextFactory` implementation returns `SubjectSecurityContext` instances based on the connection's associated `Subject`. It should be an extremely rare thing to change, but if you must configure a custom `SecurityContextFactory`, you can do as follows: + + + + + + + +Note however that much of the plugin's functionality and downstream filters expect created `SecurityContext` instances to be `SubjectSecurityContext` instances. + +Authentication +-------------- + +The ShiroPlugin installs the `AuthenticationFilter` immediately after the `SubjectFilter` in the broker filter chain. The `AuthenticationFilter` ensures that the broker client `Subject` is authenticated if necessary before allowing the chain to continue. If authentication is required and the `Subject` is not authenticated, the broker filter chain will not be executed, ensuring only verified identities may perform further behavior. + +WORK IN PROGRESS - STILL AUTHORING + diff --git a/should-i-deploy-enterprise-integration-patterns-in-the-broker-or-another-application.md b/should-i-deploy-enterprise-integration-patterns-in-the-broker-or-another-application.md new file mode 100644 index 0000000..ac65a0e --- /dev/null +++ b/should-i-deploy-enterprise-integration-patterns-in-the-broker-or-another-application.md @@ -0,0 +1,24 @@ +Apache ActiveMQ ™ -- Should I deploy Enterprise Integration Patterns in the broker or another application + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [Should I deploy Enterprise Integration Patterns in the broker or another application](should-i-deploy-enterprise-integration-patterns-in-the-broker-or-another-application.html) + + +Should I deploy Enterprise Integration Patterns in the broker or another application +------------------------------------------------------------------------------------ + +Whether you deploy the [Enterprise Integration Patterns](enterprise-integration-patterns.html) inside the ActiveMQ Broker or in a separate application depends on your requirements. + +### Advantages of deploying EIP inside the broker + +* Its a single JVM so less moving parts and you're less likely to forget to deploy something +* if you are doing things like polling resources such as files, databases and bridging them to queues or topics then its usually more efficient to host in the broker; as there's less contention and there's no network communication between the EIP rules and the message broker as its all in the same JVM (so you can use the [VM Transport](vm-transport-reference.html) to avoid network overhead. + +### Advantages of deploying EIP inside a separate application + +* its easier to deploy loads of JVMs containing the EIP routing rules to get better load balancing +* you can easily change your routing rules then stop/restart applications without having to restart your broker. Having said that since ActiveMQ supports [auto reconnection](how-can-i-support-auto-reconnection.html) its not such a big deal to bounce the Broker now and again to refresh routing rules. Note that at some point [Camel will support auto-reload of routing rules on the fly without having to stop and reload the JVM](https://issues.apache.org/activemq/browse/CAMEL-234) so one day this won't be such a big benefit. + +### See Also + +* [Should I deploy the broker inside my JVM or AppServer](should-i-deploy-the-broker-inside-my-jvm-or-appserver.html) + diff --git a/should-i-deploy-the-broker-inside-my-jvm-or-appserver.md b/should-i-deploy-the-broker-inside-my-jvm-or-appserver.md new file mode 100644 index 0000000..4053367 --- /dev/null +++ b/should-i-deploy-the-broker-inside-my-jvm-or-appserver.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Should I deploy the broker inside my JVM or AppServer + +[Community](community.html) > [FAQ](faq.html) > [Using Apache ActiveMQ](using-apache-activemq.html) > [Should I deploy the broker inside my JVM or AppServer](should-i-deploy-the-broker-inside-my-jvm-or-appserver.html) + + +You can deploy the ActiveMQ Broker inside your JVM or Application Server. Whether you do or not has pros and cons depending on how many JVMs you have and what your backup & recovery policy is. + +### Advantages of embedding the broker + +* embedding a broker means you can use the VM transport which avoids the use of sockets and serialization. Instead ActiveMQ can pass around messages by value. + * the slight exception to this is ObjectMessage; the JMS specification says you must serialize the body of the ObjectMessage whenever you send it. However you can [disable this feature](how-should-i-use-the-vm-transport.html) if you want really high performance when using VM transport +* its only 1 single deployment unit/JVM rather than 2 coupled processes. + +### Disadvantages of embedding the broker + +If you have lots of JVMs (say 100s of them) and have very stringent requirements; you don't ever want to loose a message and so you want to backup and manage the persistent ActiveMQ database (and/or files) very carefully. + +Having an embdded broker inside each JVM could result in large number of sets of files to manage. So it may be simpler to separate the two out, so that your 100s of JVMs talk to a relatively small cluster of brokers (say 2-10 of them) so that you can avoid worrying about persistent state in each JVM and just focus on backing up and managing the files/databases used by the brokers. + +Also its typically easier to run and manage ActiveMQ brokers when they are separate; you can have some ClassLoader issues when trying to embed ActiveMQ inside an application server. e.g. you can sometimes get [ClassPath Errors](javalangnosuchmethoderror.html) + +### See + +* [How do I embed a Broker inside a Connection](how-do-i-embed-a-broker-inside-a-connection.html) +* [Run Broker](run-broker.html) + diff --git a/should-i-pool-connections.md b/should-i-pool-connections.md new file mode 100644 index 0000000..e5d8f78 --- /dev/null +++ b/should-i-pool-connections.md @@ -0,0 +1,18 @@ +Apache ActiveMQ ™ -- Should I pool connections + +ActiveMQ [ASF](http://www.apache.org) + +[Index](index.html) > [FAQ](faq.html) > [Should I pool connections](should-i-pool-connections.html) + +[Download](download.html) | [API](nms-api.html) | [Source](source.html) | [Forums](http://activemq.apache.org/discussion-forums.html) | [Support](http://activemq.apache.org/support.html) + +Should I pool connections? +-------------------------- + +The Java documentation talks about [how to use JMS efficiently](http://activemq.apache.org/how-do-i-use-jms-efficiently.html). So when using .NET should you worry about pooling? + +Its worth thinking about - but it depends a little on your application. If its a client UI then just have a single connection and a few sessions and you'll be fine. + +If its more of a server, processing messages efficiently in a highly concurrent manner with loads of threads, then some kinda pooling mechanism such as in Spring.NET is preferable than trying to write that your self; as pooling of messaging artefacts (connections, sessions, producers, consumers) is way more complex than pooling of say, JDBC connections. + + diff --git a/should-i-run-activemq-on-windows-in-a-directory-with-spaces.md b/should-i-run-activemq-on-windows-in-a-directory-with-spaces.md new file mode 100644 index 0000000..d0cc035 --- /dev/null +++ b/should-i-run-activemq-on-windows-in-a-directory-with-spaces.md @@ -0,0 +1,12 @@ +Apache ActiveMQ ™ -- Should I run ActiveMQ on Windows in a directory with spaces + +[Community](community.html) > [FAQ](faq.html) > [General](general.html) > [Should I run ActiveMQ on Windows in a directory with spaces](should-i-run-activemq-on-windows-in-a-directory-with-spaces.html) + + +Should I run ActiveMQ on Windows in a directory with spaces +----------------------------------------------------------- + +No. + +Its not a good idea to install and run application in paths on Windows which have spaces. + diff --git a/should-i-use-transactions.md b/should-i-use-transactions.md new file mode 100644 index 0000000..e069eab --- /dev/null +++ b/should-i-use-transactions.md @@ -0,0 +1,26 @@ +Apache ActiveMQ ™ -- Should I use transactions + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [Should I use transactions](should-i-use-transactions.html) + + +There are four main approaches as to a client can consume messages. They are: + +1. Auto-acknowledgement +2. Explicit acknowledgement via **`Message.acknowledge()`** +3. JMS Transactions +4. XA + +For a discussion on XA see: [Should I use XA](should-i-use-xa.html) + +The main difference between 1 & 2 and 3 & 4 is the latter allow messages to be rolled back and redelivered if an error occurs whilst processing. There is no JMS 'unacknowledge'. So for this reason JMS transactions should be preferred to message acknowledgements in most use cases. + +It's a common misconception that transactions are inherently slow. In reality there's little difference in performance, from the broker's perspective, between the use of a JMS transaction and invoking **`Message.acknowledge()`**. However, a performance penalty is incurred when the delivery mode is set to  persistent. This causes the broker to block until the commit is synchronized to disk. This is similar to how **`Message.acknowledge()`** blocks when using a non-transactional JMS session. + +Transaction support is also available for non-persistent delivery mode. + +Batched Transactions Are The Fastest Way To Process Messages! + +It's worth noting that the fastest way to consume persistent messages is to use a JMS transaction combined with message batching, e.g., have the commit boundary encompass multiple messages, not just one. This applies to both producers and consumers and to clients that are both. + +When using transactions a batch of 1000 messages, say, can be sent in a single atomic step. The message transmission is asynchronous and therefore very fast. The producer need only perform one commit every batch in order to minimize the latency that would otherwise be incurred with disk syncing. + diff --git a/should-i-use-xa.md b/should-i-use-xa.md new file mode 100644 index 0000000..6fc5c02 --- /dev/null +++ b/should-i-use-xa.md @@ -0,0 +1,50 @@ +Apache ActiveMQ ™ -- Should I use XA + +[Community](community.html) > [FAQ](faq.html) > [JMS](jms.html) > [Should I use XA](should-i-use-xa.html) + + +Should I use XA transactions (two phase commit?) +------------------------------------------------ + +A common use of JMS is to consume messages from a queue or topic, process them using a database or EJB, then acknowledge / commit the message. + +If you are using more than one resource; e.g. reading a JMS message and writing to a database, you really should use XA - its purpose is to provide atomic transactions for multiple transactional resources. For example there is a small window from when you complete updating the database and your changes are committed up to the point at which you commit/acknowledge the message; if there is a network/hardware/process failure inside that window, the message will be redelivered and you may end up processing duplicates. + +The problem with XA is it can be a bit slow; as the XA protocol requires multiple syncs to disk to ensure it can always recover properly under every possible failure scenario. This adds significant cost (in terms of latency, performance, resources and complexity). Also quite a few EJB servers and databases don't actually properly support XA! ![(smile)](https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png) + +Be Careful + +ActiveMQ does not currently support XA Transaction suspend / resume semantics. + +### An alternative to XA + +So a good optimisation is to use regular JMS transactions - with no XA - and just perform some duplicate message detection in your code to check you have not already processed the message. + +For example you can use an [Idempotent Consumer](http://activemq.apache.org/camel/idempotent-consumer.html) from the [Enterprise Integration Patterns](enterprise-integration-patterns.html) to solve this scenario. + +Or in pseudocode you could use something like the following... + +onMessage +try { + if I have not processed this message successfully before { + do some stuff in the database / with EJBs etc + jdbc.commit() (unless auto-commit is enabled on the JDBC) + } + jms.commit() +} +catch (Exception e) { + jms.rollback() +} + +This leads to **much** better performance since you are not performing many slow syncs to disk (per transaction!) for the XA protocol. The only downside with this approach is it means you have to use some application specific logic to detect if you've processed the message before or not. However its quite common that you'll have some way of detecting this. e.g. if the message contains a purchase order and version; have you stored that purchase order and version in the database yet? + +So provided the message has some kind of ID and version, you can often detect duplicates yourself and so not require to pay the performance cost of XA + +It may also be worth reading [Should I use transactions](should-i-use-transactions.html). + +### Further optimisation + +Performing duplicate detection can add a performance overhead. e.g. doing a database query to see if you've processed the purchase order before etc. Most of the time things will work; its only in rare circumstances (ilke if a server crashes mid-way processing some messages) that messages get redelivered. + +So you can use the [Message.getJMSRedelivered()](http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Message.html#getJMSRedelivered()) method to detect if a message has been redelivered and only if its been redelivered then perform the duplicate detection check. + diff --git a/site.md b/site.md new file mode 100644 index 0000000..77c9e34 --- /dev/null +++ b/site.md @@ -0,0 +1,11 @@ +Apache ActiveMQ ™ -- Site + +[Site](site.html) + + +* [Banner](banner.html) +* [Navigation](navigation.html) +* [QuickLinks](quicklinks.html) +* [SiteIndex](siteindex.html) +* [SiteMap](sitemap.html) + diff --git a/siteindex.md b/siteindex.md new file mode 100644 index 0000000..5e7edf2 --- /dev/null +++ b/siteindex.md @@ -0,0 +1,2492 @@ +Apache ActiveMQ ™ -- SiteIndex + +[Site](site.html) > [SiteIndex](siteindex.html) + + +Space Index +----------- + +[0-9](#index-0-9) ... 4 + +[A](#index-A) ... 127 + +[B](#index-B) ... 15 + +[C](#index-C) ... 39 + +[D](#index-D) ... 23 + +[E](#index-E) ... 7 + +[F](#index-F) ... 5 + +[G](#index-G) ... 4 + +[H](#index-H) ... 102 + +[I](#index-I) ... 19 + +[J](#index-J) ... 32 + +[K](#index-K) ... 4 + +[L](#index-L) ... 8 + +[M](#index-M) ... 21 + +[N](#index-N) ... 21 + +[O](#index-O) ... 12 + +[P](#index-P) ... 16 + +[Q](#index-Q) ... 2 + +[R](#index-R) ... 16 + +[S](#index-S) ... 40 + +[T](#index-T) ... 18 + +[U](#index-U) ... 13 + +[V](#index-V) ... 16 + +[W](#index-W) ... 26 + +[X](#index-X) ... 5 + +[Y](#index-Y) ... 0 + +[Z](#index-Z) ... 3 + +[!@#$](#index-%21@%23%24) ... 0 + +  + +  + +#### 0-9 + +Page: [2007 April](https://cwiki.apache.org/confluence/display/ACTIVEMQ/2007+April) + +April 2007 Report ActiveMQ 4.1.1 Released voted in a new committer, John Heitmann the developer and user lists continue to be very active + +Page: [4.0 RC 1 Guide](https://cwiki.apache.org/confluence/display/ACTIVEMQ/4.0+RC+1+Guide) + +ActiveMQ 4.0-RC-1 Release Guide Release Info Release Manager Hiram Chirino Special issues We are still in the Incubator so need to ensure that all the proper disclaimers are in place and that the artifacts are all properly named incubator-activemq. Open I + +Page: [5.8 Migration Guide](https://cwiki.apache.org/confluence/display/ACTIVEMQ/5.8+Migration+Guide) + +There are some changes in 5.8 that may require some code change New modules may effect your maven pom dependencies activemq-core has been replaced with activemq-client and activemq-broker. The various message stores have their own activemq-xx-store module + +Page: [5.9 Migration Guide](https://cwiki.apache.org/confluence/display/ACTIVEMQ/5.9+Migration+Guide) + +There are some changes in 5.9 that may require user intervention Schema change to JDBC Persistence Adapter. XID column type change. If you use XA transactions you need to ensure there are no XA transactions pending completion before you upgrade. Some mode + +#### A + +Page: [Activation Spec Properties](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Activation+Spec+Properties) + +An Activation Spec is used to configure the message delivery to an MDB. The ejb-jar.xml deployment descriptor needs to include a element inside the element like: ActiveMQ + +Page: [AMQ Message Store](https://cwiki.apache.org/confluence/display/ACTIVEMQ/AMQ+Message+Store) + +The Basics This is the default storage for AcitveMQ 5 and above. The AMQ Message Store is an embeddable transactional message storage solution that is extremely fast and reliable. message commands are written to a transactional journal - which consists of + +Page: [AMQP](https://cwiki.apache.org/confluence/display/ACTIVEMQ/AMQP) + +ActiveMQ supports the AMQP 1.0 https://www.oasis-open.org/committees/tc\_home.php?wg\_abbrev=amqp protocol which is an OASIS standard. Available from ActiveMQ version 5.8 onward. Enabling the ActiveMQ Broker for AMQP To enable AMQP protocol support on the b + +Page: [Apache ActiveMQ Board Report - 2007.08 (August)](apache-activemq-board-report-200708-august.html) + +Status report for the Apache ActiveMQ Project July board report was missed in part due to a change in PMC chair. Community: * The developer and user communities remain very active. * New committer added: Albert Strasheim Development: The CMS API has been + +Page: [Apache ActiveMQ Board Report - 2007.10 (October)](apache-activemq-board-report-200710-october.html) + +Status report for the Apache ActiveMQ Project Community: * The developer and user communities remain very active. * The Camel project, NMS project, and recent release candidate for ActiveMQ 5.0 have generated much mailing list activity. * A code grant has + +Page: [Apache ActiveMQ Board Report - 2008.01 (January)](apache-activemq-board-report-200801-january.html) + +Status report for the Apache ActiveMQ Project Community: * Nicky Sandhu and Hadrian Zbarcea were voted in and accepted becoming ActiveMQ committers * A code grant was accepted for an NMS implementation that access Tibco EMS. * The development and user lis + +Page: [Apache ActiveMQ Board Report - 2008.07 (July)](apache-activemq-board-report-200807-july.html) + +Status report for the Apache ActiveMQ Project Community: * The ActiveMQ project has had another very busy quarter. Seven new contributors were voted in and accepted becoming ActiveMQ committers: * Gary Tully * Gert Vanthienen * Dejan Bosanac * Claus Ibsen + +Page: [Apache ActiveMQ Board Report - 2008.10 (October)](apache-activemq-board-report-200810-october.html) + +Status report for the Apache ActiveMQ Project Community: * The ActiveMQ project has had another very busy quarter. Jonathan Anstey was voted in as an ActiveMQ committer. * The development and user lists continue to stay vibrant. Development: * Lots of dev + +Page: [Apache ActiveMQ Board Report - 2009.01 (January)](apache-activemq-board-report-200901-january.html) + +Status report for the Apache ActiveMQ Project Community: * The ActiveMQ project has had another very busy quarter. William Tam has been added as an ActiveMQ committer. * The development and user lists continue to stay vibrant. * The Camel sub project has + +Page: [Apache ActiveMQ Board Report - 2009.04 (April)](apache-activemq-board-report-200904-april.html) + +Status report for the Apache ActiveMQ Project Community: * The ActiveMQ project has had another very busy but quiet quarter. * The development and user lists continue to stay vibrant. * The Camel sub project has completed moving to a TLP. Development: * A + +Page: [Apache ActiveMQ Board Report - 2009.07 (July)](apache-activemq-board-report-200907-july.html) + +Community: * The ActiveMQ project has had another very busy but quiet quarter. * The development and user lists continue to stay vibrant. * New PMC members: Dejan Bosanac * New Committers: Colin MacNaughton, Bruce Snyder Development: * The first release o + +Page: [Apache ActiveMQ Board Report - 2009.10 (October)](apache-activemq-board-report-200910-october.html) + +Community: * The ActiveMQ project has had another very busy but quiet quarter. * The development and user lists continue to stay vibrant. Development: * It was a busy an fruitful quarter which produced several new releases. Releases: * Apache.NMS 1.1.0 * + +Page: [Apache ActiveMQ Board Report - 2010.01 (January)](apache-activemq-board-report-201001-january.html) + +Community: * The ActiveMQ project has had another very busy but quiet quarter. * The development and user lists continue to stay vibrant. * Tim Bish has joined the ActiveMQ PMC Development: * The Apache.NMS.Stomp project has begun development of its first + +Page: [Apache ActiveMQ Board Report - 2010.05 (May)](apache-activemq-board-report-201005-may.html) + +Status report for the Apache ActiveMQ Project Apologies for missing the April board report deadline. Community: * The ActiveMQ project has had another very busy but quiet quarter. * The development and user lists continue to stay vibrant. Development: * W + +Page: [Apache ActiveMQ Board Report - 2010.07 (July)](apache-activemq-board-report-201007-july.html) + +Community: The development and user lists continue to stay active and vibrant. No new committers or PMC members added Development: Working towards an ActiveMQ 5.4 release. Prototype broker core for ActiveMQ 6.x is showing promise Releases: ActiveMQ-CPP 3. + +Page: [Apache ActiveMQ Board Report - 2010.10 (October)](apache-activemq-board-report-201010-october.html) + +Community: The development and user lists continue to stay active and vibrant. No new committers or PMC members added Development: Development has started on the next ActiveMQ 5.5 release. Prototype broker core slated for ActiveMQ 6.x is still under devel + +Page: [Apache ActiveMQ Board Report - 2011.01 (January)](apache-activemq-board-report-201101-january.html) + +Community: The development and user lists continue to stay active. No new committers or PMC members added. Development: Development has started on the next ActiveMQ 5.5 release. Prototype broker core slated for ActiveMQ 6.x is still under development. Apa + +Page: [Apache ActiveMQ Board Report - 2011.04 (April)](apache-activemq-board-report-201104-april.html) + +Community: The development and user lists continue to stay active. Alex Dean (alexd) added as a committer to the project Development: Development has started on the next ActiveMQ 5.6 release. Development continues on the ActiveMQ Apollo 1.0 release. Devel + +Page: [Apache ActiveMQ Board Report - 2011.07 (July)](apache-activemq-board-report-201107-july.html) + +Community: The development and user lists continue to stay active. No new committers or PMC members added. Development: Development has started on the next ActiveMQ 5.6 release. Apollo 1.0 is approaching completion. Several betas have been released and it + +Page: [Apache ActiveMQ Board Report - 2011.10 (October)](apache-activemq-board-report-201110-october.html) + +Community: The development and user lists continue to stay active. No new committers or PMC members added. Development: A LGPL licensed artifact was discovered to be in a Apache Camel dependency which was included in the ActiveMQ 5.4.0, 5.4.1, 5.4.2 and 5 + +Page: [Apache ActiveMQ Board Report - 2012.01 (January)](apache-activemq-board-report-201201-january.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2012.04 (April)](apache-activemq-board-report-201204-april.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2012.07 (July)](apache-activemq-board-report-201207-july.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2012.10 (October)](apache-activemq-board-report-201210-october.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2013.01 (January)](apache-activemq-board-report-201301-january.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2013.04 (April)](apache-activemq-board-report-201304-april.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2013.07 (July)](apache-activemq-board-report-201307-july.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2013.10 (October)](apache-activemq-board-report-201310-october.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2014.01 (January)](apache-activemq-board-report-201401-january.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2014.04 (April)](apache-activemq-board-report-201404-april.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2014.07 (July)](apache-activemq-board-report-201407-july.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2014.10 (October)](apache-activemq-board-report-201410-october.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2015.02 (February)](apache-activemq-board-report-201502-february.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2015.04 (April)](apache-activemq-board-report-201504-april.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2015.06 (June)](apache-activemq-board-report-201506-june.html) + +The May ASF board meeting already took place this week, so we will need to publish this report in time for next month's meeting. TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports ma + +Page: [Apache ActiveMQ Board Report - 2015.07 (July)](apache-activemq-board-report-201507-july.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2015.08 (August)](apache-activemq-board-report-201508-august.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2015.10 (October)](apache-activemq-board-report-201510-october.html) + +TLP Description: Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while f + +Page: [Apache ActiveMQ Board Report - 2016.02 (February)](apache-activemq-board-report-201602-february.html) + +Description Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully + +Page: [Apache ActiveMQ Board Report - 2016.04 (April)](apache-activemq-board-report-201604-april.html) + +Description Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully + +Page: [Apache ActiveMQ Board Report - 2016.05 (May)](apache-activemq-board-report-201605-may.html) + +Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully supporting J + +Page: [Apache ActiveMQ Board Report - 2016.07 (July)](apache-activemq-board-report-201607-july.html) + +Description Apache ActiveMQ is a popular and powerful open source messaging server. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features while fully + +Page: [Apache ActiveMQ Board Report - 2016.10 (October)](apache-activemq-board-report-201610-october.html) + +Description Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features w + +Page: [Apache ActiveMQ Board Report - 2017.01 (January)](apache-activemq-board-report-201701-january.html) + +Description Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features w + +Page: [Apache ActiveMQ Board Report - 2017.04 (April)](apache-activemq-board-report-201704-april.html) + +Description Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features w + +Page: [Apache ActiveMQ Board Report - 2017.07 (July)](apache-activemq-board-report-201707-july.html) + +Description Apache ActiveMQ is a popular and powerful open source message-oriented middleware. Apache ActiveMQ is fast, supports many cross language clients and protocols, comes with easy to use enterprise integration patterns and many advanced features w + +Page: [Apache ActiveMQ Board Report - April 2008](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Apache+ActiveMQ+Board+Report+-+April+2008) + +Status report for the Apache ActiveMQ Project Community: The ActiveMQ community continues to stay vibrant with a very healthy amount of email traffic flowing through it's email lists. It has also added several new committers to it's ranks. New Committers: + +Page: [Apache ActiveMQ Board Reports](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Apache+ActiveMQ+Board+Reports) + +The current ActiveMQ reporting schedule is: January, April, July, October + +Page: [Are destinations case sensitive](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Are+destinations+case+sensitive) + +There seems to be no consensus on whether JMS providers should use case insensitive destination names. Since most names in Java & J2EE are case sensitive (class names, JNDi names, file names (on many unix operating systems), URIs and URLs - we've followed + +Page: [Are messages read directly from the journal](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Are+messages+read+directly+from+the+journal) + +Kind of. A message can be loaded directly from the journal if it was swapped out of memory. The journal cannot be used, however, to recover a durable subscription as it does not keep an ordered index of messages per durable sub. So when a durable sub is a + +Page: [Articles](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Articles) + +This page captures resources and articles outside the ActiveMQ project which may assist your development. Please add any new resources that you come across by clicking the edit link at the bottom of the page. If you do this, please make sure to attach a d + +Page: [Async Sends](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Async+Sends) + +Background ActiveMQ supports sending messages to a broker in sync or async mode. The mode used has a huge impact in the latency of the send call. Since latency is typically a huge factor in the throughput that can achieved by producer, using async sends c + +Page: [Audit Logging](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Audit+Logging) + +For many secured environments there's a requirement to log every user management action. For that ActiveMQ implements audit logging, which means that every management action made through JMX or Web Console management interface will be logged and available + +Page: [AUTO](https://cwiki.apache.org/confluence/display/ACTIVEMQ/AUTO) + +Starting with version 5.13.0, ActiveMQ supports wire format protocol detection. OpenWire, STOMP, AMQP, and MQTT can be automatically detected. This allows one transport to be shared for all 4 types of clients. Enabling AUTO over TCP To configure Active + +Page: [Axis and CXF Support](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Axis+and+CXF+Support) + +ActiveMQ supports both Apache Axis http://ws.apache.org/axis/ and Apache CXF http://incubator.apache.org/cxf out of the box. Support for Axis is deprecated, and will be removed from ActiveMQ 5.8 onwards. Just add the required jars to your classpath and yo + +#### B + +Page: [Banner](https://cwiki.apache.org/confluence/display/ACTIVEMQ/Banner) + +