Release Notes

Web-enabled version 1.4

1.4c1 - 2010/10/07

1.4c0 - 2009/05/23

  • fixed: returned messages were not triggering wait end (http://www.openamq.org/issue:58)
  • added: WireAPI amq_client_session_wait () allows -1 timeout meaning 'polled' (http://www.openamq.org/issue:65)
  • added: if BOOM_NOTEST environment variable is 1, build.sh does not run regression tests (http://www.openamq.org/issue:64)
  • added: APR build is configurable via the environment (http://www.openamq.org/issue:62)
  • added: implemented acknowledgements on shared queues (Basic.Consume/no-ack, Basic.Ack) (http://www.openamq.org/issue:21)
  • added: —no-ack option to keep old behaviour in which no-ack is ignored
  • added: new WireAPI connection property "connection->id" holds unique connection ID string assigned by server
  • added: WireAPI option /config/sequence/set that sets Sender-Id and Timestamp on published messages
  • added: WireAPI option /config/sequence/check that verifies Sender-Id and Timestamp on received messages

1.4b3 - 2009/05/01

  • fixed: socket management layer was leaking socket descriptors
  • fixed: WireAPI Direct Mode layer was leaking connections (DAMQ-33)
  • fixed: WireAPI Direct Mode layer could abort at shutdown (AMQ-599)
  • changed: response to socket exhaustion improved (BASE2-312)
  • added: in amq_server console, you can see all bindings for a queue
  • added: in amq_server console, verbose option to see all private queues, must be superuser
  • added: —user and —group options to switch to unprivileged user
  • added: new option —accept-retry-timeout tunes server response to socket exhaustion (BASE2-312)

1.4b2 - 2009/04/22

1.4b1 - 2009/03/29

  • fixed: Basic.Consume sometimes failed: http://www.openamq.org/issue:52/
  • fixed: build on Windows failed on MSVC when InputDir path had spaces
  • fixed: renamed 'template' property in ipr_dict_table_file_save to make it C++ compatible
  • fixed: Zyre: content-type on new resources is now same as that of POST request
  • changed: Zyre: Slug: header replaced by 'name' attribute in document (RestMS spec change)
  • changed: Zyre: ETag calculation and now includes Content-Type (RestMS spec change)
  • changed: Zyre: error responses now sent as text/plain instead of text/html (RestMS spec change)
  • fixed: Zyre: eliminate 'client connection timed-out' messages (http://www.xitami.com/issue:3)
  • fixed: Zyre: fixed crash on unrecognized HTTP methods (http://www.xitami.com/issue:1)

1.4b0 - 2009/02/17

  • fixed: if server runs out of sockets, dies with clear error message (http://www.openamq.org/issue:45)
  • changed: apr updated to 1.3.3, apr-util updated to 1.3.4 (1.4, FOR-21, BASE2-305)
  • removed: legacy platforms from 'c' script (everything except "modern gcc system" and "AIX with CCNAME=xlc_r") (1.4, FOR-22)
  • changed: if CCNAME and CCOPTS are unset, 'c' script looks for gcc on PATH, if found assumes a modern system and uses gcc and pthreads, if not then exits with error (1.4, FOR-22)
  • changed: if CCNAME and CCOPTS are set, 'c' does no autodetection of anything (including libraries) and just uses the provided values ("you're on your own mode"). this is done to massively simplify logic in 'c' script (1.4, FOR-22)
  • changed: when using gcc, detect standard "modern" libraries and link with them if present (includes libcrypt) (1.4, FOR-22)
  • changed: default BOOM_MODEL for all POSIX platforms is st,release (1.4, FOR-22)
  • changed: default ALLOCATOR for release is direct, for debug is fat (1.4, FOR-22)
  • removed: lockfree allocator and support code from iCL (1.4)
  • changed: ST builds on POSIX now identical to MT builds except for -DBASE_THREADSAFE (1.4, FOR-22)
  • added: build system for Windows (VisualC 2008)

1.4a3 - 2008/02/06

OpenAMQ:

Zyre:

  • fixed: implemented RestMS/0.2 specification, many additions to X5 web service
  • added: support for Digest-AMQP spec, with full test/demo case
  • added: portal for backend peering, digest-amqp spec and examples
  • added: in X5: access modules, driver modules, password management, digest auth

1.4a2 - 2008/12/30

Zyre:

  • fixed: large POSTs did not work systematically (regression test failure)
  • fixed: assertion failure on nozzles (regression test failure)
  • fixed: JSON output for repeated items was incorrect.

1.4a1 - 2008/12/27

Zyre:

  • fixed: zyre server asserted on normal connection close in RestMS Hello World test
  • added: support for RestMS-reply-to and RestMS-message-id headers on POST address and GET message
  • added: zyre_cml.pl example of remote OpenAMQ administration over HTTP
  • added: defines predefined OpenAMQ feeds at startup
  • added: added support for OpenAMQ "system" exchange type
  • fixed: occasional assert on message delivery to pipe due to died content
  • fixed: joins properly deleted if their feed is deleted
  • fixed: XML responses incorrectly used <zyre> instead of <restms> for root

OpenAMQ:

  • fixed: console crashed when supplied malformed CML data.

1.4a0 - 2008/12/25

All changes in 1.3c3 onwards plus:

  • added: IPR portals and made http server work with current base2
  • added: —debug_route prints exchange creation and destruction (like queues)
  • added: amq_rest.asl class for RESTful access to server resources
  • fixed: PAL assert did not work with symbolic variables
  • changed: auto-named queues are now called "auto.nnn" instead of "#nnn"
  • changed: removed rwlock from wireapi connection & session

High-performance version 1.3 (stable)

1.3d1 - 2010/10/07

1.3d0 - 2009/05/23

  • fixed: returned messages were not triggering wait end (http://www.openamq.org/issue:58)
  • added: WireAPI amq_client_session_wait () allows -1 timeout meaning 'polled' (http://www.openamq.org/issue:65)
  • added: if BOOM_NOTEST environment variable is 1, build.sh does not run regression tests (http://www.openamq.org/issue:64/)
  • added: implemented acknowledgements on shared queues (Basic.Consume/no-ack, Basic.Ack) (http://www.openamq.org/issue:21)
  • added: —no-ack option to keep old behaviour in which no-ack is ignored
  • added: new WireAPI connection property "connection->id" holds unique connection ID string assigned by server
  • added: WireAPI option /config/sequence/set that sets Sender-Id and Timestamp on published messages
  • added: WireAPI option /config/sequence/check that verifies Sender-Id and Timestamp on received messages

1.3c7 - 2009/05/03

  • fixed: socket management layer was leaking socket descriptors
  • fixed: WireAPI Direct Mode layer was leaking connections (DAMQ-33)
  • fixed: WireAPI Direct Mode layer could abort at shutdown (AMQ-599)
  • changed: response to socket exhaustion improved (BASE2-312)
  • added: —user and —group options to switch to unprivileged user
  • added: new option —accept-retry-timeout tunes server response to socket exhaustion (BASE2-312)

1.3c6 - 2009/04/22

1.3c5 - 2009/02/10

1.3c4 - 2009/02/05

1.3c3 - 2008/12/17

  • added: support for AMQP/0.9.1 (1.3, 1.4)
  • added: PAL scripts can now set command timeout in session
  • added: session->timestamp property indicating when session was opened
  • added: session includes tables returned by AMQP methods
  • added: latency measurement framework, see http://www.openamq.org/doc:user-3-advanced#toc36
  • added: when server takes action on queue overflow, displays client IP address in logs
  • fixed: SMT sockets crashed after constant use for 2^31 operations (BASE2-301)
  • fixed: PAL scripts did not free client config
  • fixed: queue deletion could crash on destroyed channel
  • fixed: Direct Mode did not handle mandatory and immediate (http://www.openamq.org/issue:36)
  • fixed: Basic.Publish 'immediate' functionality was broken since 1.3a
  • fixed: queue overflow code crashed on shared queues (DAMQ-18)
  • fixed: on slow networks, broker sometimes asserted on setup_timer destroy (DAMQ-19)
  • fixed: PAL crashed when receiving contents greated than 1024 large
  • fixed: Direct Mode lease management had thread safety issues
  • fixed: credit-based flow control in normal mode was not robust
  • fixed: WireAPI Direct Mode fixed to allow unlimited connections (AMQ-598)

1.3c2 - 2008/11/04

  • added: new header file wireapi.h for WireAPI applications (includes all needed headers)
  • fixed: log file naming did not work when name with no extension was specified
  • fixed: connections were not properly destroyed, causing memory leaks (AMQ-593)
  • fixed: packaging of 1.3c1 was screwed up, and did not include 1.3c1 fixes

1.3c1 - 2008/10/30

1.3c0 - 2008/10/21

1.3b2 - 2008/10/09

1.3b1 - 2008/10/03

This update includes all fixes in 1.2d5.

1.3b0 - 2008/09/29

This update includes all fixes in 1.2d3 and 1.2d4 as well as:

  • Implemented Direct Mode message batching, with a significant performance kick.
  • Direct Mode batching is configurable in wireapi.cfg and amq_server.cfg via config/direct/batching setting.
  • Added support for client-side high-water overflow in Direct Mode via config/tuning/on_overflow setting.
  • Fixed: consumer-tag was wrongly set in WireAPI for Direct Mode messages (http://www.openamq.org/issue:2)
  • Fixed: Direct Mode caused aborts in client applications at shut-down (http://www.openamq.org/issue:14)

With slow clients, Direct Mode has the big advantage of holding messages in the client-side WireAPI queues, not at the server. This means servers won't get overloaded by slow clients. You can configure clients to handle abnormally large queues using similar semantics as the server-side queue limits (warn, drop, trim, kill).

1.3a1 - 2008/09/16

This update includes all fixes in 1.2d2 as well as:

1.3a0 - 2008/09/07

  • Added support for Direct Message Protocol (see http://wiki.amqp.org).
  • Added config/tuning/direct option to wireapi.cfg
  • Added config/tuning/direct option to server config (—direct 1 on cmdline)
  • In PAL, <session failover = "n"> option changed to seconds for consistency
  • In PAL, added <session direct = "1"> option to enable Direct Mode

Stable version 1.2 (legacy)

1.2e1 - 2009/02/05

1.2e0 - 2008/12/17

  • fixed: queue deletion could crash on destroyed channel
  • fixed: SMT sockets crashed after constant use for 2^31 operations (BASE2-301)

1.2d8 - 2008/11/04

  • fixed: PAL code generation wrongly tried to set session->silent (property was deprecated)
  • fixed: log file naming did not work when name with no extension was specified
  • fixed: packaging of 1.2d7 was screwed up, and did not include 1.2d7 fixes

1.2d7 - 2008/10/30

1.2d6 - 2008/10/21

1.2d5 - 2008/10/03

1.2d4 - 2008/09/29

  • WireAPI Connection->silent property now taken from WIREAPI_SILENT environment variable if any
  • Fixed: documentation still referred to WIREAPI_VERBOSE variable, which was replaced by WIREAPI_SILENT
  • Improved internal server event flow between queues and protocol agents, using credit based flow controls.

This change is designed to make the server more manageable when using very high message rates, and slow clients. Prior to this change, messages were offloaded from message queues to protocol threads (for sending to clients), at full speed. This meant that the configurable queue limits would never be reached, so server memory could grow to excess. This change implements a credit-based flow control so that the bulk of messages will remain on the message queue, where they can be properly managed by the queue limit handling (e.g. discard old messages if queue is too full).

1.2d3 - 2008/09/25 (STABLE)

  • Fixed rare server crash (BASE2-299)
  • Fixed failover logic in JMS client (JAMQ-125)

1.2d2 - 2008/09/16

  • Implemented Basic.Qos (http://www.openamq.org/issue:5)
  • Fixed use of C+++ words in amq_queue.icl ('private') and amq_cml ('class') (http://www.openamq.org/issue:6)
  • Fixed error in topic routing key (foo.# matched fruit.bar) (http://www.openamq.org/issue:7)
  • Fixed setting of last routing key on binding (http://www.openamq.org/issue:12)
  • amq_queue reported bad client ip address on shared queues with no connections (http://www.openamq.org/issue:12)
  • Fixed amq_shell, which blocked when listing shared queues without consumers.
  • Improved internal assertion macros to provide more info in case of crashes (BASE2-296).
  • Fixed occasional server crashes caused by race condition on closing client connections (BASE2-298).
  • Fixed occasional server memory corruption in handling of Basic.Cancel-Nowait method (AMQ-589)
  • Added support for AMQP nowait methods in PAL scripting language.

1.2d1 - 2008/09/07

  • Session now accurately holds content exchange, routing-key, and consumer-tag. (http://www.openamq.org/issue:2)
  • Fixed: on Windows the server crashed on startup if it could not resolve its own hostname. (http://www.openamq.org/issue:3)
  • Fixed: High-availability would randomly break and fall into a split-brain mode where both nodes would accept application connections. (http://www.openamq.org/issue:4)
  • Support for AMQP File, Stream, Tx, Dtx, Access, and Tunnel classes removed.
  • Fanout exchange did not properly accept bindings. Fixed.

Configuration file syntax changes

  • In wireapi config, renamed arrived_high_water/low_water to high_water/low_water.
  • In server config, /failover/failover_timeout changed to /failover/timeout.
  • In server config, removed /failover/monitor option, is now timeout divided by 2.
  • In server config, timeout defaults to 5 seconds instead of 1 second.
  • In server config, timeout verified to not exceed 60 seconds.

1.2d0 - 2008/06/05

  • Stability and build fixes:
    • JAMQ-116 - Assertion failure in C Client
    • JAMQ-113 - Queue not deleted immediatly even when 'queue timeout' is set to zero
    • JAMQ-109 - Intermitten latency as high as 30 seconds was observed in OpenAMQ
    • JAMQ-67 - Fix some SMT errors
    • FOR-19 - Cannot build on Mac OS/X
    • BASE2-293 - Make client layer error reporting more controllable
    • BASE2-292 - icl_smt.gsl does not expand variables in "async header" and "async footer" <private> blocks
    • BASE2-290 - Add debugging support for config files
    • BASE2-288 - Remove unused 'name' field from server connection properties
    • BASE2-287 - Extend ASL contants class to include macros for soft/hard errors
    • BASE2-286 - Change config file inheritence to allow entities without name attribute
    • BASE2-284 - SMT gives warnings when compiled with G++
    • BASE2-282 - ASL: Correct timeout handling during connection setup/teardown
    • BASE2-207 - Implement native atomic operations for Linux/AMD64
    • BASE-58 - OSX porting - smt dies horribly
    • AMQ-584 - Improve logging/verbosity settings in amq_client_agent, amq_peer_agent
    • AMQ-583 - unsafe initialisation in amq_failover can cause asserts or bad behaviour
    • AMQ-582 - build.sh does not detect intermediate failures
    • AMQ-579 - Change failover times to msec instead of sec
    • AMQ-578 - Remove broker 'shake' command
    • AMQ-577 - Remove the resources/max_memory_mb and resources/per_client options
    • AMQ-576 - Clarify use of vhost identifier
    • AMQ-575 - Simplify federation semantics
    • AMQ-574 - ASL: server sends connection.open-ok before executing server_connection_open method
    • AMQ-573 - HA timeout is hardcoded in code (10 seconds), should be configurable
    • AMQ-571 - Apply queue limits systematically to all queues
    • AMQ-570 - Delete queues immediately if queue-timeout is set to zero
    • AMQ-569 - Topic exchange should route same message to same queue no more than one time
    • AMQ-567 - Multiple instances of a single message delivered to the queue
    • AMQ-564 - Reimplement MTA peering debugging
    • AMQ-563 - Use 'exchange' in place of name for MTA configuration
    • AMQ-562 - Use names instead of numbers for MTA modes
    • AMQ-561 - Apply patch: —listen to set the address to listen on
    • AMQ-560 - Routing key is lost when message passes MTA
    • AMQ-559 - Headers exchange is not conformant with 0.9 spec for x-match
    • AMQ-550 - Refactor server shutdown handling to close all connections cleanly
    • AMQ-523 - Match blank routing key with the # binding key

Web-enabled version 1.4 packages

OpenAMQ/1.4 includes Zyre, the RESTful messaging service from iMatix. If you are interested in doing AMQP over HTTP, this is the package for you. The OpenAMQ components are the same vintage as those in 1.3. Please use the current package. The older packages are for reference only.

Current:

Older:

High-performance version 1.3 packages (stable, recommended)

OpenAMQ/1.3 is the fastest and most stable OpenAMQ ever. We recommend this version for users who do not need the RestMS capabilities of Zyre. Please use the current package. The older packages are for reference only.

Current:

Older:

Stable version 1.2 packages (legacy)

We recommend this for legacy deployments only. Please use the current package. The older packages are for reference only.

Current:

Older: