Description
ActiveMQ is a fast open source JMS 1.1 provider and Message Fabric supporting clustering, peer networks, discovery, TCP, SSL, multicast, persistence, XA and integrates seamlessly into J2EE 1.4 containers, light weight containers and any Java application. ActiveMQ is released under the Apache2.0 License
Features
- fully supports JMS 1.1 and J2EE 1.4
- includes JCA 1.5 resource adaptors for inbound & outbound messaging so that ActiveMQ should auto-deploy in any J2EE 1.4 compliant server
- tested inside Geronimo, Spring and JBoss 4
- support for transient, persistent, transactional and XA messaging
- supports pluggable transport protocols such as in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports
- supports very fast persistence using JDBC along with a high performance journal
- designed for high performance clustering, client-server, peer based communication
- REST API to provide technology agnostic and language neutral web based API to messaging
- Ajax to support web streaming support to web browsers using pure DHTML, allowing web browsers to be part of the messaging fabric
- Axis Support so that ActiveMQ can be easily dropped into Apache Axis runtimes to provide reliable messaging
- Spring Support so that ActiveMQ can be easily embedded into Spring applications and configured using Spring's XML configuration mechanism
- can be used as an in memory JMS provider, ideal for unit testing
- Stomp support so that clients can be written easily in C, Ruby, Perl, Python, PHP to talk to ActiveMQ
- Wildcard support to subscribe to powerful destination hierarchies.
- Composite Destinations support to allow many destinations to be used in one simple atomic JMS operation
- JSR 77 / 88 support for easy deployment & management & hot deployment
- provides an implementation of ActiveCluster
Performance differs greatly depending on many different factors - the network topology
- transport protocols used
- quality of service
- hardware, network, JVM and operating system
To give you an idea of the kinds of performance you can expect from ActiveMQ we have a bunch of JMeter Performance Tests 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 producer and consumer VM 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. So your milleage may vary greatly on your environment.
Protocol Summary| Protocol | Example | Description | Server? |
|---|
| VM | vm://host:port | Client connect to each other within the same JVM. From 1.1 onwards this does not use an asynchronous channel and a separate worker thread. You can enable async sending using a query parameter, such as | Yes | | TCP | tcp://host:port | Client connects to the broker at the given URL | Yes | | SSL | ssl://host:port | Client connects to the broker at the given URL | Yes | | List | list:Uri1,Uri2,Uri3,...,UriN | Provides a list of possible URIs to connect to and one is randomly chosen. If the connection fails then the JMS connection fails | | | Reliable | reliable:Uri1,Uri2,Uri3,...,UriN | Provides a list of possible URIs to connect to and one is randomly chosen. If the connection fails then the transport auto-reconnects to a different one | | | Peer | peer://serviceName | Creates a pure peer to peer network of nodes of a given service name. In peer mode there is no server, nodes just automatically connect and make a peer network. The serviceName allows you to keep networks apart from each other, such as development, testing, UAT and production. | | | Discovery | discovery://host:port | Uses Discovery to connect to an available broker of the correct channel name. If multiple brokers can be found then one is chosen at random. If the connection fails then another broker is chosen, if available | | | Zeroconf | zeroconf:_activemq.broker.development. | Uses [Zeroconf] to connect to an available broker of the correct Zeroconf service name. If multiple brokers can be found then one is chosen at random. If the connection fails then another broker is chosen, if available | | | HTTP | http://host:port | Client connects to the broker using HTTP tunnelling, with XML payloads suitable for going through firewalls | Yes | | UDP | udp://host:port | Client connects to the broker at the given URL | | | multicast | multicast://host:port | No server, though only works for pub/sub. A pure peer based network where all traffic is multicasted around and filtering is performed on the client. | | | JGroups | jgroups:config | Reliable multicast using JGroups. No server, though only works for pub/sub. The value of config can be which uses the default JGroups settings, or a full JGroups configuration strings like jgroups:UDP(mcast_addr=228.10.9.8;mcast_port=5678):PING:FD:GMS In addition you can specify an XML configuration file to fully configure the JGroups config file via jgroups:src/config/jgroups.xml or using a full HTTP URL such as | | | jrms | jrms://host:port | Reliable multicast. No server, though only works for pub/sub | | | JXTA | jxta://host:port | Client connects to server via JXTA protocol | |
|
| Rating |
 |
| Votes |
0 |
| Popularity |
 |
| Downloads |
40 |
| Page Views |
2074 |
|