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.4c1 source package, implements RestMS web messaging, includes Zyre web messaging server.
» Download OpenAMQ/1.3d1 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

Hi, I wrote a simple publisher code based on im_sender.c using pthreads which simply sends...
(by Srinik 16 Nov 2012 23:30, posts: 1)
Check the 'c' script used for compilation, it has explanations at the start of how to do this.
(by pieterh 19 Oct 2012 09:46, posts: 18)
Is there a way to link extra libraries to the app compiled with openamq WireAPI library ?...
(by Srinik 17 Oct 2012 19:07, posts: 18)
The Session properties are listed as … reply_code (integer) - error value reported by...
(by Kevenm 07 Sep 2011 13:12, posts: 18)
I usually dont take time to ever make comments on a web site but I have to say I would truly be...
(by (account deleted) 28 Jan 2011 15:09, posts: 4)
I've been looking over the source code and thinking that it might make sense to create a...
(by Highjinks 19 Jun 2010 19:54, posts: 9)

Open issues

89 - multi-threaded client connection failure: A multi-thread aware application is not able to open a connection with an openamq server and the connection request times out. I might be missing some fundamental configuration which I am unable to figure out.

Surprisingly a single process making an open-amqp calls is possible to publish the messages even though the ampq calls internally is multi-threaded.

Could anyone help me out with that ? The code is given below.

Sorry for posting it twice. The issues sections seems to be a relevant place to post it.

Thanks,
SriniK (17 Nov 2012 16:28) (+0 "0")

87 - Zyre returns incomplete XML: After starting using Zyre a bit more seriously on windows, GET on pipe url returns incomplete XML. (26 Apr 2010 08:15) (+0 "3")

86 - SFL 'random(num)' macro is wrong in sfl.h: Put here one paragraph that summarizes the issue. Do not delete the line containing '====', it must be there. (31 Mar 2010 09:23) (+0 "0")

85 - Zyre does not start on Solaris: Zyre fails shortly after startup with an APR assertion failure. This is probably due to the outdated APR version 1.3.3 that ships with OpenAMQ 1.4c0 (23 Mar 2010 01:29) (+0 "1")

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. (28 Jan 2010 17:04) (+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? (14 Jan 2010 17:33) (+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. (06 Jan 2010 09:34) (+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? (29 Dec 2009 00:21) (+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" (20 Nov 2009 12:33) (+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. (30 Oct 2009 06:11) (+0 "1")

» How to submit an issue | All issues

Most recent

FAQs

Open patches

Backgrounders

Tutorials

Addons

Examples

» Contribute | All contributions