amqp

Client library for AMQP servers (currently only RabbitMQ)

https://github.com/hreinhardt/amqp

Version on this page:0.22.1
LTS Haskell 22.39:0.22.2
Stackage Nightly 2024-11-01:0.24.0
Latest on Hackage:0.24.0

See all snapshots amqp appears in

BSD-3-Clause licensed by Holger Reinhardt
Maintained by Holger Reinhardt
This version can be pinned in stack with:amqp-0.22.1@sha256:e84946198fb43511b1ef9341c2a60f14efdaef8b3e348613a311c12256cd835b,2509

Module documentation for 0.22.1

Client library for AMQP servers (currently only RabbitMQ)

Changes

Version 0.22.1

  • fix a potential deadlock in closeConnection

Version 0.22.0

  • closeChannel now uses a ChannelClosedException to kill the channel-thread instead of ThreadKilled. This fixes a bug in 0.21.0 that led to errors being printed on the screen when closeChannel was called.

Version 0.21.0

  • added method isNormalChannelClose
  • Channels that have no explicit exception handlers (added using addChannelExceptionHandler) will now print all exceptions to stderr, even if those are not of type ChannelClosedException. This is an uncommon situation, so it should not have an observable effect for most users.

Version 0.20.0

  • fromURI now activates TLS if the URI starts with ampqs://. Previously it only changed the port, without activating TLS.
  • fromURI now supports multi-broker URIs in the form of amqp://user:pass@host-1:port-2,host-2:port-2/vhost

Version 0.19.1

  • add nackMsg and nackEnv methods

Version 0.19.0

  • change FVString to be binary instead of UTF-8 encoded

Version 0.18.3

  • respond to channel.close messages from the server with channel.close_ok

Version 0.18.2

  • support connection 0.3 and drop support for network < 2.6

Version 0.18.1

  • new function addConnectionBlockedHandler to be notified when the connection is blocked (due to the server being resource-constrained)

Version 0.18.0

  • ConnectionClosedException and ChannelClosedException now specify whether the close was normal (user-initiated) or abnormal (caused by an AMQP exception)
  • channels that are abnormally closed and have no exception handler (set using addChannelExceptionHandler) will now print the error to stderr
  • new function getServerProperties to get the RabbitMQ server-properties
  • consumeMsgs' now allows setting a consumer-cancellation-callback

Version 0.17.0

  • When the server asynchronously closed a channel, this was (erroneously) internally represented as a ConnectionClosedException. It is now represented as a ChannelClosedException. This could affect you if you explicitly match on ConnectionClosedException or ChannelClosedException in your code, for example when using addChannelExceptionHandler.

Version 0.16.0

  • new coName field in ConnectionOpts to specify a custom name that will be displayed in the RabbitMQ web interface

Version 0.15.1

  • export the AckType data-type and constructors

Version 0.15.0

  • The way channels are closed internally was changed. This may affect you if you have installed an exception handler inside the callback passed to consumeMsgs. Specifically, the exceptions used internally to close channels are now wrapped inside ChanThreadKilledException. You should make sure to re-throw this exception if you did catch it.

Version 0.14.1

  • show all exceptions if no host can be connected to

Version 0.14.0

  • publishMsg now returns the message sequence-number
  • new TLSCustom field in TLSSettings

Version 0.13.1

  • don’t print to stderr when openConnection fails to connect to a broker

Version 0.13.0

Version 0.12.3

  • send version info of this library to RabbitMQ on connecting

Version 0.12.2

  • GHC 7.10 compatibility

Version 0.12.1

  • error messages now go to stderr

Version 0.12.0

  • new function addChannelExceptionHandler

Version 0.11.0

  • all content fields for messages are now supported

Version 0.10.0

  • the maximum number of channels can now be set

Version 0.9.0

  • add ‘global’ flag for qos

Version 0.8.3

  • implement closeChannel

Version 0.8.0

  • TLS support
  • new helper function rejectEnv
  • new field exchangeArguments in ExchangeOpts
  • new module Network.AMQP.Lifted with consumeMsgs functions lifted to MonadBaseControl

Version 0.7.0

  • new function fromURI to parse AMQP URIs
  • heartbeat support

Version 0.6.0

  • new function addReturnListener which allows specifying a handler for returned messages
  • new function openConnection’’ with support for most AMQP connection options
  • better error message on failed connection handshake

Version 0.5.0

  • support for AMQP 0-9-1
  • new function consumeMsgs’ which allows you to pass in a field-table
  • new function bindExchange allows for binding an exchange to another exchange
  • new function unbindQueue allows unbinding a queue from an exchange
  • new function unbindExchange allows unbinding an exchange from an exchange

Version 0.4.3

  • use Handles instead of sockets
  • fix deprecation warnings from Data.Binary

Version 0.4.2

  • add (Read, Ord, Eq, Show) instances for most data-types

Version 0.4.1

  • add queueHeaders field to QueueOpts

Version 0.4

  • Data.Text is now used instead of Strings. Using the OverloadedStrings extension will make upgrading easier
  • the field-types in Network.AMQP.Types should now be more compatible with RabbitMQ
  • hostnames passed to openConnection will now be resolved
  • basic QoS support
  • exceptions thrown in a callback will not erroneously close the channel anymore