Designed for Performance & Reliability

Download OpenAMQ now

Download, build, and run, in just a few minutes. Zero configuration except a new password. Superb performance out of the box. Rock solid stability.

Linux, AIX, Solaris, Mac OS/X, other UNIX

» Download OpenAMQ/1.4c0 source package, implements RestMS web messaging, includes Zyre web messaging server.
» Download OpenAMQ/1.3d0 source package, implements latest AMQP/0.9.1 and Direct Mode for 5x performance.

Check the release notes for more.

Windows

» Download OpenAMQ/1.4c0 executables (OpenAMQ & Zyre)

Check the dedicated OpenAMQ for Windows website for more packages.

Language bindings

Examples

Download examples from the PAL repository.

Support

Your choice: get free, fast support online here, or get professional support from iMatix.


Release notes | Quick start | All packages | Documentation | Questions


AMQP is a new wire-level protocol for messaging. It makes it easy to get applications or pieces of applications to talk together across a LAN. Applications send messages to exchanges, which route them into queues, which deliver them to other applications. It sounds complex but it's simple and it makes life easy. AMQP uses a message broker to do the hard work. This is a server app that usually runs on its own box.

OpenAMQ is a message broker plus client libraries for C/C++ and JMS. OpenAMQ gives you a simple and powerful C API called WireAPI as well as tools like PAL for easy scripting. It comes with remote admin tools, one-line failover, instant federation, protection against slow clients, detailed logging, and other high-level features demanded by our largest, and smallest, users. OpenAMQ implements AMQP/0.9 and AMQP/0.9.1 (1.3x).

Cost: OpenAMQ is open source and free to use at no charge. To install OpenAMQ takes only a few minutes. It comes pre-tuned and runs almost perfectly out of the box. To learn to use OpenAMQ will take you a day or so. To use WireAPI in your applications will take you a day or two. A real OpenAMQ development will take you some weeks. And you will find an active, expert community able to help with every aspect.

OpenAMQ Documentation

Installing and operating OpenAMQ

  • Introduction to OpenAMQ: This document is an introduction to the concept of business messaging in general, and to OpenAMQ in particular. It is intended for new OpenAMQ users who wish to understand the problems that OpenAMQ solves, and how OpenAMQ can be useful in software applications.
  • Basic use of OpenAMQ: This document explains how to get OpenAMQ running on your system. It explains how to download the software, how to unpack and build it (if you are using a source package), and how to run basic tests on the resulting software.
  • Advanced use of OpenAMQ: This guide is for people who need to configure and manage OpenAMQ servers. We explain how to configure and tune an OpenAMQ server, covering these topics: logging, monitoring, high-availability failover, and joining OpenAMQ servers into wide-area federations.

Developing applications with OpenAMQ

  • Programming WireAPI: This is the main guide for developers who wish to use OpenAMQ in their applications. We describe WireAPI, the C/C++ API that OpenAMQ provides for accessing AMQP. Expert WireAPI users may wish to read the iMatix iCL guide, but this document is otherwise self-complete.
  • Programming PAL: This guide is for OpenAMQ developers who need a quick way to write test cases and simple scenarios. We explain the PAL language, an XML scripting tool that gives you a fast way to construct AMQP applications to test routing models, performance and stability tests, and other test cases.
  • Programming the Console: This document explains how to write applications that automate management of OpenAMQ servers via console automation. The OpenAMQ console automation architecture offers developers different ways of accessing the functionality of the console API and integrating it with their own preferred tools and management facilities.

Technical references for developers

  • Developer's Guide to ASL: This is a technical guide for protocol developers who wish to use the iMatix ASL framework for the development of connected client-server protocols. ASL is a generic framework that uses a protocol modeling language to construct the whole infrastructure for a given protocol. ASL was built primarily to support AMQP.
  • Developer's Guide to iCL: This is a technical guide for developers who wish to understand how the iMatix iCL framework works. iCL is a class-oriented modelling language for C applications and is one of the basic frameworks used in iMatix applications such as OpenAMQ.
  • Developer's Guide to MOP: This is a technical guide for developers who wish to understand how the iMatix code generation frameworks are constructed. We explain the principles of model oriented programming, and the basics of code generation using the iMatix GSL language. This provides essential basic knowledge for anyone intending to modify the OpenAMQ software.
  • Developer's Guide to SMT: This is a technical guide for developers who wish to understand how the iMatix SMT framework works. To use this guide the reader should be familiar with the iMatix iCL framework, and the iMatix Model Oriented Programming principles.

Backgrounders

  • Fast Topic Matching: This document describes a fast matching algorithm that provides all the functionality needed for topic matching and most of the functionality needed for content-based routing. This document was written by iMatix Corporation during the design process of OpenAMQ and AMQP, in June 2005.
  • Background to DMP and OpenAMQ's Direct Mode: We provide a background to the gro.pqma.ikiw|PMD-4#gro.pqma.ikiw|PMD-4 ("DMP") protocol. We also explain how iMatix OpenAMQ's DMP implementation ("Direct Mode") works, and what it means for application developers. This document is aimed both at advanced OpenAMQ users who wish to better understand Direct Mode, and AMQP developers who wish to implement the DMP protocol in their own AMQP client and server stacks.
  • AMQP Background: We explain the rationale behind the development of AMQ as an architecture and AMQP as a new industry standard protocol. This document is designed as useful background material for people wishing to understand the AMQP design.

Frequently-asked questions

  • OpenAMQ licensing FAQ: Read this if you have questions about licensing OpenAMQ, including GPL concerns.
  • OpenAMQ languages FAQ: Read this if you have questions about whether you can use OpenAMQ from your particular programming language, before you ask the openamq-dev mailing list.
  • OpenAMQ freezes FAQ: Read this if your OpenAMQ server seems to freeze, before you ask the openamq-dev mailing list.
  • OpenAMQ crashes FAQ: Read this if your OpenAMQ server crashes, before you ask the openamq-dev mailing list.
  • OpenAMQ build FAQ: Read this if you have questions about building OpenAMQ, before you ask the openamq-dev mailing list.

News

  • Draft 2 of RestMS specs now online (january 20, 2008) iMatix has published the second draft of the RestMS specifications today on wiki.amqp.org. RestMS offers web applications simple, efficient messaging that interoperates with AMQP networks. (+0 "0")
  • iMatix publishes Digest-AMQP specs (january 9, 2008) iMatix has published the first draft of the Digest-AMQP specifications on wiki.amqp.org. Digest-AMQP provides a way to integrate WWW servers and LDAP servers over an AMQP network. (+0 "0")

» Submit news | Older stories

Recent comments

Thanks for this patch! :-)
(by pieterh 1262771641|%O ago, posts: 1)
The implementation of exchanges was improved in June 2008 to do internal queueing, replay, and...
(by pieterh 1258467085|%O ago, posts: 8)
I'm confused; This web page says We assume that the connection between partitions is perhaps...
(by Jeff Laughlin (guest) 1258154785|%O ago, posts: 8)
Pieter, thanks again for your prompt answer. I'll certainly set things up and try out the...
(by Johnathan (guest) 1257965354|%O ago, posts: 8)
Jonathan, communication between exchanges is robust against dropped VPN connections; it will...
(by pieterh 1257683759|%O ago, posts: 8)
Sorry, slow thinker, took me a while to digest your answer - have a clarification question: From...
(by Johnathan (guest) 1257623941|%O ago, posts: 8)

Open issues

84 - OpenAMQ JMS - AMQTopic constructor use HEADER name and class instead of TOPIC: When using AMQTopic form openamq-jms project, the messages sent to the topic are received by
listener on another topic. (1264698241|%B %m, %Y) (+0 "0")

83 - WireAPI: How to 'override' signal handlers?: How to 'override' (i.e. install your own) process signal handlers that are provided by WireAPI? (1263490390|%B %m, %Y) (+0 "0")

82 - Opf Classes Cannot Accept Default Values With Characte: When creating an OPF file with default values containing the '%' character the generated code is not valid. (1262770441|%B %m, %Y) (+0 "1")

81 - AMQP Topic Exhange Routing: A queue is bound to a topic exchange with a wildcard, prior to a topic being created. Subsequently another queue binds to the topic exchange without a wildcard. Publishing to the topic generates a hit only on the non-wildcard binding. If the binding order is reversed (i.e. the wildcard binding occurs after the topic is created), the message is routed to both queues as expected. Is this behavior correct? (1262046077|%B %m, %Y) (+0 "0")

80 - OpenAMQ reports malformed frame on 0-9-1 queue.unbind: OpenAMQ doesn't appear to decode correctly a queue.unbind method frame, reporting "502 malformed frame for 'queue.unbind' method" (1258720402|%B %m, %Y) (+0 "0")

[[| 79 - AMQ Server crashing if subscribe topic is set as #.#]]: This is an issue that I faced while I used the WireAPI to connect and read from teh AMQ server. Giving a routing key of value "#.#" crashes the AMQ server. (1256883113|%B %m, %Y) (+0 "1")

78 - Error while publishing the messages faster: Hi,

I tried publishing messages from a windows machine in a fast rate (not so fast though) using the C wire API, and I am getting this error at the AMQ server. I tried the same code from a Linux machine and I am not getting this error. What could be the reason?

2009-10-29 19:08:23: E: Connection error: 502 Expected a method frame, closing connection (127.0.0.1:4751, OpenAMQ Kernel Client, 1.4c0, test)

Thanks,
Jayadev (1256882266|%B %m, %Y) (+0 "2")

77 - Tuning for latency: Tuning OpenAMQ for message latency issues (1256748435|%B %m, %Y) (+0 "0")

76 - New user forum: Creating a new user forum for questions about OpenAMQ (1256729358|%B %m, %Y) (+0 "3")

74 - Simulaneous connect/disconnect from multiple threads crashes: As I understand, wireapi is threadsafe as long as I don't use objects from multiple threads.

But when I stress test connect and disconnect from multiple threads, openamq client crashes. (1251991933|%B %m, %Y) (+0 "2")

» How to submit an issue | All issues

Most recent

FAQs

Open patches

Backgrounders

Tutorials

Addons

Examples

» Contribute | All contributions

page_revision: 106, last_edited: 1247294947|%e %b %Y, %H:%M %Z (%O ago)