# Hobrus RabbitMQ
Simple RabbitMQ wrapper using FastStream for easy message publishing and subscribing in Python.
## Installation
```bash
pip install hobrus-rabbitmq
```
## Environment Variables
The package uses the following environment variables (with default values):
```env
RABBITMQ_USERNAME=guest
RABBITMQ_PASSWORD=guest
RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_PROTOCOL=amqp
```
You can set these variables in your environment or use a `.env` file.
## Usage
### Synchronous Message Publishing
```python
from hobrus_rabbitmq import send_message_sync
# Send a message synchronously
send_message_sync("queue_name", "Hello, World!")
```
### Asynchronous Message Publishing
```python
import asyncio
from hobrus_rabbitmq import send_message
async def publish_message():
await send_message("queue_name", "Hello, World!")
# Run the async function
asyncio.run(publish_message())
```
### Message Subscribing
```python
from hobrus_rabbitmq import subscriber, run
# Define a message handler
@subscriber("queue_name")
async def process_message(message: str):
print(f"Received message: {message}")
# Start the subscriber
if __name__ == "__main__":
run()
```
## Complete Examples
### Async Publisher Example
```python
import asyncio
from hobrus_rabbitmq import send_message
async def test_async():
for i in range(5):
message = f"Async message {i}"
print(f"Sending: {message}")
await send_message("test_queue", message)
await asyncio.sleep(1) # Small delay between messages
if __name__ == "__main__":
asyncio.run(test_async())
```
### Sync Publisher Example
```python
from hobrus_rabbitmq import send_message_sync
import time
def test_sync():
for i in range(5):
message = f"Sync message {i}"
print(f"Sending: {message}")
send_message_sync("test_queue", message)
time.sleep(1) # Small delay between messages
if __name__ == "__main__":
test_sync()
```
### Subscriber Example
```python
from hobrus_rabbitmq import subscriber, run
@subscriber("test_queue")
async def process_message(message: str):
print(f"Received message: {message}")
if __name__ == "__main__":
print("Starting subscriber...")
run()
```
## Dependencies
- faststream[rabbit]
## License
This project is open-source.
## Author
- Suhobrus Boris
- Email: bhobrus@gmail.com
- GitHub: [SimpleRabbitMQFastStreamByHobrus](https://github.com/Hobrus/SimpleRabbitMQFastStreamByHobrus)
Raw data
{
"_id": null,
"home_page": "https://github.com/Hobrus/SimpleRabbitMQFastStreamByHobrus",
"name": "hobrus-rabbitmq",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "rabbitmq, faststream, messaging, queue",
"author": "Suhobrus Boris",
"author_email": "bhobrus@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/96/eb/5dcef3b021e17af5c8c7363a269f6ed8c001a7bd5250955541ca22d11fb0/hobrus_rabbitmq-0.1.0.tar.gz",
"platform": null,
"description": "# Hobrus RabbitMQ\r\n\r\nSimple RabbitMQ wrapper using FastStream for easy message publishing and subscribing in Python.\r\n\r\n## Installation\r\n\r\n```bash\r\npip install hobrus-rabbitmq\r\n```\r\n\r\n## Environment Variables\r\n\r\nThe package uses the following environment variables (with default values):\r\n\r\n```env\r\nRABBITMQ_USERNAME=guest\r\nRABBITMQ_PASSWORD=guest\r\nRABBITMQ_HOST=localhost\r\nRABBITMQ_PORT=5672\r\nRABBITMQ_PROTOCOL=amqp\r\n```\r\n\r\nYou can set these variables in your environment or use a `.env` file.\r\n\r\n## Usage\r\n\r\n### Synchronous Message Publishing\r\n\r\n```python\r\nfrom hobrus_rabbitmq import send_message_sync\r\n\r\n# Send a message synchronously\r\nsend_message_sync(\"queue_name\", \"Hello, World!\")\r\n```\r\n\r\n### Asynchronous Message Publishing\r\n\r\n```python\r\nimport asyncio\r\nfrom hobrus_rabbitmq import send_message\r\n\r\nasync def publish_message():\r\n await send_message(\"queue_name\", \"Hello, World!\")\r\n\r\n# Run the async function\r\nasyncio.run(publish_message())\r\n```\r\n\r\n### Message Subscribing\r\n\r\n```python\r\nfrom hobrus_rabbitmq import subscriber, run\r\n\r\n# Define a message handler\r\n@subscriber(\"queue_name\")\r\nasync def process_message(message: str):\r\n print(f\"Received message: {message}\")\r\n\r\n# Start the subscriber\r\nif __name__ == \"__main__\":\r\n run()\r\n```\r\n\r\n## Complete Examples\r\n\r\n### Async Publisher Example\r\n\r\n```python\r\nimport asyncio\r\nfrom hobrus_rabbitmq import send_message\r\n\r\nasync def test_async():\r\n for i in range(5):\r\n message = f\"Async message {i}\"\r\n print(f\"Sending: {message}\")\r\n await send_message(\"test_queue\", message)\r\n await asyncio.sleep(1) # Small delay between messages\r\n\r\nif __name__ == \"__main__\":\r\n asyncio.run(test_async())\r\n```\r\n\r\n### Sync Publisher Example\r\n\r\n```python\r\nfrom hobrus_rabbitmq import send_message_sync\r\nimport time\r\n\r\ndef test_sync():\r\n for i in range(5):\r\n message = f\"Sync message {i}\"\r\n print(f\"Sending: {message}\")\r\n send_message_sync(\"test_queue\", message)\r\n time.sleep(1) # Small delay between messages\r\n\r\nif __name__ == \"__main__\":\r\n test_sync()\r\n```\r\n\r\n### Subscriber Example\r\n\r\n```python\r\nfrom hobrus_rabbitmq import subscriber, run\r\n\r\n@subscriber(\"test_queue\")\r\nasync def process_message(message: str):\r\n print(f\"Received message: {message}\")\r\n\r\nif __name__ == \"__main__\":\r\n print(\"Starting subscriber...\")\r\n run()\r\n```\r\n\r\n## Dependencies\r\n\r\n- faststream[rabbit]\r\n\r\n## License\r\n\r\nThis project is open-source.\r\n\r\n## Author\r\n\r\n- Suhobrus Boris\r\n- Email: bhobrus@gmail.com\r\n- GitHub: [SimpleRabbitMQFastStreamByHobrus](https://github.com/Hobrus/SimpleRabbitMQFastStreamByHobrus)\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Simple RabbitMQ wrapper using FastStream for easy message publishing and subscribing in Python",
"version": "0.1.0",
"project_urls": {
"Bug Reports": "https://github.com/Hobrus/SimpleRabbitMQFastStreamByHobrus/issues",
"Homepage": "https://github.com/Hobrus/SimpleRabbitMQFastStreamByHobrus",
"Source": "https://github.com/Hobrus/SimpleRabbitMQFastStreamByHobrus"
},
"split_keywords": [
"rabbitmq",
" faststream",
" messaging",
" queue"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3494bccbf42bf69544dc894ffe889041d8d14a8e606c5718c4df2645c2265407",
"md5": "a769ac1dfc6c07d9a513274cbd001917",
"sha256": "102a97d972a1a8ecae93f5c0ddf49a9d50b0ffd2110bcf47e31cdc6f5393b62b"
},
"downloads": -1,
"filename": "hobrus_rabbitmq-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a769ac1dfc6c07d9a513274cbd001917",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 3521,
"upload_time": "2024-10-29T18:17:01",
"upload_time_iso_8601": "2024-10-29T18:17:01.002382Z",
"url": "https://files.pythonhosted.org/packages/34/94/bccbf42bf69544dc894ffe889041d8d14a8e606c5718c4df2645c2265407/hobrus_rabbitmq-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "96eb5dcef3b021e17af5c8c7363a269f6ed8c001a7bd5250955541ca22d11fb0",
"md5": "f0a8699fd7ecb9cf96a9dcd9bc23bbe0",
"sha256": "159c20a5ef4f3e8db1a03b7b48d72b77abf03004f755c889b572c2a7e0e63a6f"
},
"downloads": -1,
"filename": "hobrus_rabbitmq-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "f0a8699fd7ecb9cf96a9dcd9bc23bbe0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 3181,
"upload_time": "2024-10-29T18:17:03",
"upload_time_iso_8601": "2024-10-29T18:17:03.874316Z",
"url": "https://files.pythonhosted.org/packages/96/eb/5dcef3b021e17af5c8c7363a269f6ed8c001a7bd5250955541ca22d11fb0/hobrus_rabbitmq-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-29 18:17:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Hobrus",
"github_project": "SimpleRabbitMQFastStreamByHobrus",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "hobrus-rabbitmq"
}