All Projects → celery → Py Amqp

celery / Py Amqp

Licence: other
amqplib fork

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects
python2
120 projects

Labels

Projects that are alternatives of or similar to Py Amqp

Wabbit
Golang AMQP mocking library
Stars: ✭ 137 (-45.63%)
Mutual labels:  amqp
Qpid Proton
Mirror of Apache Qpid Proton
Stars: ✭ 164 (-34.92%)
Mutual labels:  amqp
Akka Rabbitmq
RabbitMq client in Scala and Akka actors
Stars: ✭ 228 (-9.52%)
Mutual labels:  amqp
Spring Boot Amqp Messaging
This is a simple spring-boot app that shows how to configure easily RabbitMQ with AMQP for producing and consuming messages in default format and JSON.
Stars: ✭ 142 (-43.65%)
Mutual labels:  amqp
Enqueue Dev
Message Queue, Job Queue, Broadcasting, WebSockets packages for PHP, Symfony, Laravel, Magento. DEVELOPMENT REPOSITORY - provided by Forma-Pro
Stars: ✭ 1,977 (+684.52%)
Mutual labels:  amqp
Tsung
Tsung is a high-performance benchmark framework for various protocols including HTTP, XMPP, LDAP, etc.
Stars: ✭ 2,185 (+767.06%)
Mutual labels:  amqp
Msgflo
Distributed Flow-Based Programming via message queues
Stars: ✭ 136 (-46.03%)
Mutual labels:  amqp
Azure Service Bus Dotnet
☁️ .NET Standard client library for Azure Service Bus
Stars: ✭ 237 (-5.95%)
Mutual labels:  amqp
Cony
Simple AMQP wrapper around github.com/streadway/amqp
Stars: ✭ 158 (-37.3%)
Mutual labels:  amqp
Gosiris
An actor framework for Go
Stars: ✭ 222 (-11.9%)
Mutual labels:  amqp
Gen rmq
Elixir AMQP consumer and publisher behaviours
Stars: ✭ 146 (-42.06%)
Mutual labels:  amqp
Laravel Queue
Laravel Enqueue message queue extension. Supports AMQP, Amazon SQS, Kafka, Google PubSub, Redis, STOMP, Gearman, Beanstalk and others
Stars: ✭ 155 (-38.49%)
Mutual labels:  amqp
Librabbitmq
Python bindings to librabbitmq-c
Stars: ✭ 181 (-28.17%)
Mutual labels:  amqp
Rabbitmq Dump Queue
Dump messages from a RabbitMQ queue to files, without affecting the queue.
Stars: ✭ 139 (-44.84%)
Mutual labels:  amqp
Enqueue Bundle
[READ-ONLY] Message queue bundle for Symfony. RabbitMQ, Amazon SQS, Redis, Service bus, Async events, RPC over MQ and a lot more
Stars: ✭ 233 (-7.54%)
Mutual labels:  amqp
Strimzi Kafka Bridge
Apache Kafka bridge
Stars: ✭ 137 (-45.63%)
Mutual labels:  amqp
Rabtap
RabbitMQ wire tap and swiss army knife
Stars: ✭ 171 (-32.14%)
Mutual labels:  amqp
Aioamqp
AMQP implementation using asyncio
Stars: ✭ 244 (-3.17%)
Mutual labels:  amqp
Azure Event Hubs
☁️ Cloud-scale telemetry ingestion from any stream of data with Azure Event Hubs
Stars: ✭ 233 (-7.54%)
Mutual labels:  amqp
Enmasse
EnMasse - Self-service messaging on Kubernetes and OpenShift
Stars: ✭ 185 (-26.59%)
Mutual labels:  amqp

===================================================================== Python AMQP 0.9.1 client library

|build-status| |coverage| |license| |wheel| |pyversion| |pyimp|

:Version: 5.0.5 :Web: https://amqp.readthedocs.io/ :Download: https://pypi.org/project/amqp/ :Source: http://github.com/celery/py-amqp/ :Keywords: amqp, rabbitmq

About

This is a fork of amqplib_ which was originally written by Barry Pederson. It is maintained by the Celery_ project, and used by kombu_ as a pure python alternative when librabbitmq_ is not available.

This library should be API compatible with librabbitmq_.

.. _amqplib: https://pypi.org/project/amqplib/ .. _Celery: http://celeryproject.org/ .. _kombu: https://kombu.readthedocs.io/ .. _librabbitmq: https://pypi.org/project/librabbitmq/

Differences from amqplib_

  • Supports draining events from multiple channels (Connection.drain_events)

  • Support for timeouts

  • Channels are restored after channel error, instead of having to close the connection.

  • Support for heartbeats

    • Connection.heartbeat_tick(rate=2) must called at regular intervals (half of the heartbeat value if rate is 2).
    • Or some other scheme by using Connection.send_heartbeat.
  • Supports RabbitMQ extensions:

    • Consumer Cancel Notifications
      • by default a cancel results in ChannelError being raised
      • but not if a on_cancel callback is passed to basic_consume.
    • Publisher confirms
      • Channel.confirm_select() enables publisher confirms.
      • Channel.events['basic_ack'].append(my_callback) adds a callback to be called when a message is confirmed. This callback is then called with the signature (delivery_tag, multiple).
    • Exchange-to-exchange bindings: exchange_bind / exchange_unbind.
      • Channel.confirm_select() enables publisher confirms.
      • Channel.events['basic_ack'].append(my_callback) adds a callback to be called when a message is confirmed. This callback is then called with the signature (delivery_tag, multiple).
    • Authentication Failure Notifications Instead of just closing the connection abruptly on invalid credentials, py-amqp will raise an AccessRefused error when connected to rabbitmq-server 3.2.0 or greater.
  • Support for basic_return

  • Uses AMQP 0-9-1 instead of 0-8.

    • Channel.access_request and ticket arguments to methods removed.
    • Supports the arguments argument to basic_consume.
    • internal argument to exchange_declare removed.
    • auto_delete argument to exchange_declare deprecated
    • insist argument to Connection removed.
    • Channel.alerts has been removed.
    • Support for Channel.basic_recover_async.
    • Channel.basic_recover deprecated.
  • Exceptions renamed to have idiomatic names:

    • AMQPException -> AMQPError
    • AMQPConnectionException -> ConnectionError``
    • AMQPChannelException -> ChannelError``
    • Connection.known_hosts removed.
    • Connection no longer supports redirects.
    • exchange argument to queue_bind can now be empty to use the "default exchange".
  • Adds Connection.is_alive that tries to detect whether the connection can still be used.

  • Adds Connection.connection_errors and .channel_errors, a list of recoverable errors.

  • Exposes the underlying socket as Connection.sock.

  • Adds Channel.no_ack_consumers to keep track of consumer tags that set the no_ack flag.

  • Slightly better at error recovery

Quick overview

Simple producer publishing messages to test queue using default exchange:

.. code:: python

import amqp

with amqp.Connection('broker.example.com') as c:
    ch = c.channel()
    ch.basic_publish(amqp.Message('Hello World'), routing_key='test')

Producer publishing to test_exchange exchange with publisher confirms enabled and using virtual_host test_vhost:

.. code:: python

import amqp

with amqp.Connection(
    'broker.example.com', exchange='test_exchange',
    confirm_publish=True, virtual_host='test_vhost'
) as c:
    ch = c.channel()
    ch.basic_publish(amqp.Message('Hello World'), routing_key='test')

Consumer with acknowledgments enabled:

.. code:: python

import amqp

with amqp.Connection('broker.example.com') as c:
    ch = c.channel()
    def on_message(message):
        print('Received message (delivery tag: {}): {}'.format(message.delivery_tag, message.body))
        ch.basic_ack(message.delivery_tag)
    ch.basic_consume(queue='test', callback=on_message)
    while True:
        c.drain_events()

Consumer with acknowledgments disabled:

.. code:: python

import amqp

with amqp.Connection('broker.example.com') as c:
    ch = c.channel()
    def on_message(message):
        print('Received message (delivery tag: {}): {}'.format(message.delivery_tag, message.body))
    ch.basic_consume(queue='test', callback=on_message, no_ack=True)
    while True:
        c.drain_events()

Speedups

This library has experimental support of speedups. Speedups are implemented using Cython. To enable speedups, CELERY_ENABLE_SPEEDUPS environment variable must be set during building/installation. Currently speedups can be installed:

  1. using source package (using --no-binary switch):

.. code-block:: CELERY_ENABLE_SPEEDUPS=true pip install --no-binary :all: amqp

  1. building directly source code:

.. code-block:: CELERY_ENABLE_SPEEDUPS=true python setup.py install

Further

.. |build-status| image:: https://api.travis-ci.com/celery/py-amqp.png?branch=master :alt: Build status :target: https://travis-ci.com/celery/py-amqp

.. |coverage| image:: https://codecov.io/github/celery/py-amqp/coverage.svg?branch=master :target: https://codecov.io/github/celery/py-amqp?branch=master

.. |license| image:: https://img.shields.io/pypi/l/amqp.svg :alt: BSD License :target: https://opensource.org/licenses/BSD-3-Clause

.. |wheel| image:: https://img.shields.io/pypi/wheel/amqp.svg :alt: Python AMQP can be installed via wheel :target: https://pypi.org/project/amqp/

.. |pyversion| image:: https://img.shields.io/pypi/pyversions/amqp.svg :alt: Supported Python versions. :target: https://pypi.org/project/amqp/

.. |pyimp| image:: https://img.shields.io/pypi/implementation/amqp.svg :alt: Support Python implementations. :target: https://pypi.org/project/amqp/

py-amqp as part of the Tidelift Subscription

The maintainers of py-amqp and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. Learn more.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].