Metadata-Version: 2.1
Name: rabbitbus
Version: 0.1.1
Summary: RabbitMQ app framework
Home-page: https://github.com/shadrus/rabbitbus
Author: KrylovYS
Author-email: krylov.ys@malltech.ru
License: MIT
Description: 
        ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/rabbitbus)
        [![Build Status](https://travis-ci.org/shadrus/rabbitbus.svg?branch=master)](https://travis-ci.org/shadrus/rabbitbus)
        # RabbitBus
        
        Feel RabbitMQ like HTTP
        
          - Custom CorrelationManagers
          - Regexp routes
        
        
        ### Installation
        
        RabbitBus requires Python 3.6 >, aioamqp.
        
        Install the dependencies and library.
        
        ```sh
        $ pip install rabbitbus
        ```
        
        Example:
        
        ```python
        import asyncio
        from rabbitbus.manager import DatabusApp, Configuration
        from rabbitbus.acks.requests import AmqpRequest
        from rabbitbus.acks.responses import AckResponse
        
        async def my_view(request: AmqpRequest):
            # Write your code here
            return AckResponse(request)
        
        def serve():
            loop = asyncio.get_event_loop()
            # Inherit from CorrelationManager for custom correlation storages
            app = DatabusApp(conf=Configuration())
            app.add_route(r'^CASH_REGISTER_EQUIPMENTS[a-zA-Z_]{4}$', my_view)
            app.start(loop)
        
        
        if __name__ == '__main__':
            serve()
        ```
        
        If message has reply_to property, you can make response like
        
        ```python
        from rabbitbus.acks.requests import AmqpRequest
        from rabbitbus.acks.responses import AckResponse
        
        async def my_view(request: AmqpRequest):
            # Write your code here
            return AckResponse(request, data={"result": 1})
        ```
        
        "reply_to" will be converted to the "routing_key" and message will be published to the app exchange.
        More about RPC you can read [in RabbitMQ documentation](https://www.rabbitmq.com/tutorials/tutorial-six-python.html)
        
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.6.0
Description-Content-Type: text/markdown
