{ "info": { "author": "Stanislav Arnaudov", "author_email": "stanislv_ts@abv.bg", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Logging", "Topic :: System :: Monitoring", "Topic :: Utilities" ], "description": "# Rabbitholer\n\n![img](./down_the_whole.png)\n\n![img](https://travis-ci.org/palikar/rabbitholer.svg?branch=master)\n\n\n## Abstract\n\nRabbitholer is a very simple tool for communicating with a [RebbiMQ](https://en.wikipedia.org/wiki/RabbitMQ) server over [AMQP](https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) protocol. It uses the [pika](https://pika.readthedocs.io/en/stable/) library for python and it offers convenient command line interface for sending and receiving messages to and from a RabbitMQ server instance. Rabbitholer is essentially a lightweight AMQP client.\n\n\n\nI wrote this because I often had to debug RabbitMQ messages while working on different projects. The [web management plugin](https://www.rabbitmq.com/management.html) for RabbitMQ can be convenient but it doesn’t really integrate with the other command line utilities I am used to ([GNU core utilities](https://www.gnu.org/software/coreutils/)). I’ve designed Rabbitholer along the lines of the [minimalism idea](http://minifesto.org/) because I wanted it to be as versatile as possible. Easy integration with other utilities is a core design principle here.\n\n\n## Installation\n\n\n## Usage\n\nA basic run of `rabitholer --help` gives:\n\n```\nusage: rabitholer [-h] [--version] [--verbose] Command ...\n\nInteract with RabbitMQ exhanges and queues\n\noptional arguments:\n -h, --help show this help message and exit\n --version, -v Print veriosn inormation\n --verbose, -vv Print a lot of information about the execution.\n\nCommands:\n A list of the avialble commands\n\n Command\n send Send a message to an exchange\n read Send a messages to an exchange read from the standard input.\n pipe Create a named pipe connected to an exchange\n monitor Monitor the messges on an exchange\n\n```\n\nCurrently there are four supported commands: send, read, pipe and monitor. All commands have certain arguments that are common between all of them. Those instruct the application how to connect to the server. They include:\n\n| Argument | Description |\n|------------------ |------------------------------------------------------------------- |\n| `--server`, `-s` | The IP of the RabbitMQ. Standard port is assumed (5672). |\n| `--exchange`, `-e` | The name of the exchange to be declared while connecting. |\n| `--queue`, `-q` | The name of the queue to be bound to the exchange while connecting. |\n| `--routing`, `-r` | The routing key to be used for outgoing messages. |\n\nDifferent arguments may influence different commands. For example, when receiving messages, the routing key does not play a role. The exchange will be declared as non-passive, non-durable and non-auto-delete and of type **fanout**. This means that the application can connect to an existing exchange. To note is however that if the exchange already exists, it must be of type **fanout**. The queue will be declared as non-auto-delete. Both the exchange and the queue have default names of “general”. These are the names that will be used unless specified otherwise thought the command line arguments. If not specified, the routing key will be left as an empty string. You can read more about the RabbitMQ exchanges and queues [here (complete reference guide)](https://www.rabbitmq.com/amqp-0-9-1-reference.html) and [here (quick explantion of the AMQP model)](https://www.rabbitmq.com/tutorials/amqp-concepts.html).\n\n\n\n**send**: Simply sends a message to the specified exchange with the specified routing key.\n\nIntended to be used like:\n\n```sh\nrabbitholer send \n```\n\nMultiple messages can be send like:\n\n```sh\nrabbitholer send \"\" \"\" ...\n```\n\n\n\n**read**: Reads the standard output and dumps it on the specified exchange with the specified routing key. Each line is treated as a separate message.\n\nThe intended use is something like:\n\n```sh\necho '' | rabbitholer read\n```\n\n\n\n**monitor**: Reads messages from a queue and dumps them on the standard output - each message is on separate line.\n\nExample use:\n\n```sh\nrabbitholer read | grep \"id:\"\n```\n\n\n\n**pipe**: Creates a [named pipe](https://en.wikipedia.org/wiki/Named_pipe) connected to a running instance of the application. Any input to the pipe will be send as a message to the server. The intended use is:\n\n```sh\nrabbitholer pipe ./rabbithole\n```\n\nthen you can do something like:\n\n```sh\necho '' > ./rabbithole\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/palikar/rabbitholer", "keywords": "rabbitmq sender receiver", "license": "GNU General Public License v3.0", "maintainer": "", "maintainer_email": "", "name": "rabbitholer", "package_url": "https://pypi.org/project/rabbitholer/", "platform": "", "project_url": "https://pypi.org/project/rabbitholer/", "project_urls": { "Homepage": "https://github.com/palikar/rabbitholer" }, "release_url": "https://pypi.org/project/rabbitholer/0.0.2/", "requires_dist": null, "requires_python": "", "summary": "A simple tool to send and receive messages to and from rabbitmqexchanges and queues", "version": "0.0.2" }, "last_serial": 5406466, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "7f5ac1e769da467b44baab92437fc0ea", "sha256": "9d76981d868c0b7f744af4e4c6695955bbce7f40f8e9fccb48edda5af349af72" }, "downloads": -1, "filename": "rabbitholer-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7f5ac1e769da467b44baab92437fc0ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20780, "upload_time": "2019-06-16T13:02:38", "url": "https://files.pythonhosted.org/packages/ec/6d/a9f37e54d6eb97ed347607fcf6c44a12a8f41dc34df588d2d3b6ca17ea7d/rabbitholer-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c71a77f6f35a9674a9a02de41cd2cc42", "sha256": "ea1250fd03d53cfc8a7a13a89476bac0556368ada16d6d03c9e13602e573c373" }, "downloads": -1, "filename": "rabbitholer-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c71a77f6f35a9674a9a02de41cd2cc42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7438, "upload_time": "2019-06-16T13:02:40", "url": "https://files.pythonhosted.org/packages/d6/c0/72171edb653183bf42941075b43fd1f189652e6b3e745206304f19445e57/rabbitholer-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "31a33b77acfd840b2b6851f9b2bf7817", "sha256": "ca2118f1d3b49089006fc6bb3a3aed52676cf2f673d57d55b0720189dfa400b0" }, "downloads": -1, "filename": "rabbitholer-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "31a33b77acfd840b2b6851f9b2bf7817", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20817, "upload_time": "2019-06-16T13:18:40", "url": "https://files.pythonhosted.org/packages/ab/96/0cfd172e457a6b468d201ba498238f90e997768685e9388cd4f22fd0963c/rabbitholer-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc26bc85be022735d16b585da8682f6d", "sha256": "c39e6408450b9512c590fc921249ab67c6069cf1d60e6fdb93810bb8abe4eee3" }, "downloads": -1, "filename": "rabbitholer-0.0.2.tar.gz", "has_sig": false, "md5_digest": "dc26bc85be022735d16b585da8682f6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7508, "upload_time": "2019-06-16T13:18:42", "url": "https://files.pythonhosted.org/packages/a3/78/b6670b5d414fd97e05131271cdbd7c2eea3277b4622ba72f17cfeedab0d8/rabbitholer-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "31a33b77acfd840b2b6851f9b2bf7817", "sha256": "ca2118f1d3b49089006fc6bb3a3aed52676cf2f673d57d55b0720189dfa400b0" }, "downloads": -1, "filename": "rabbitholer-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "31a33b77acfd840b2b6851f9b2bf7817", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20817, "upload_time": "2019-06-16T13:18:40", "url": "https://files.pythonhosted.org/packages/ab/96/0cfd172e457a6b468d201ba498238f90e997768685e9388cd4f22fd0963c/rabbitholer-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc26bc85be022735d16b585da8682f6d", "sha256": "c39e6408450b9512c590fc921249ab67c6069cf1d60e6fdb93810bb8abe4eee3" }, "downloads": -1, "filename": "rabbitholer-0.0.2.tar.gz", "has_sig": false, "md5_digest": "dc26bc85be022735d16b585da8682f6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7508, "upload_time": "2019-06-16T13:18:42", "url": "https://files.pythonhosted.org/packages/a3/78/b6670b5d414fd97e05131271cdbd7c2eea3277b4622ba72f17cfeedab0d8/rabbitholer-0.0.2.tar.gz" } ] }