A message queue-based RPC and event publish/subscribe system.
Project description
mqsrv
mqsrv is a message queue-based Remote Procedure Call (RPC) and event publish/subscribe system. It provides a flexible framework for building distributed systems and microservice architectures.
Features
- Supports both synchronous and asynchronous RPC calls
- Event publishing and subscription mechanism
- Connection pool management
- Exception handling
- Flexible serialization options
- Concurrent processing based on greenthread
Installation
pip install mqsrv
Quick Start
RPC Example
Server Side
from mqsrv.server import make_server, run_server
def hello(name):
return f"Hello, {name}!"
server = make_server(conn='amqp://guest:guest@localhost:5672//',
rpc_routing_key='rpc_queue')
server.register_rpc(hello)
run_server(server)
Client Side
from mqsrv.client import make_client
client = make_client(conn='amqp://guest:guest@localhost:5672//')
caller = client.get_caller('rpc_queue')
error, result = caller.hello('World')
print(result) # Output: Hello, World!
Event Example
Subscriber
from mqsrv.server import make_server, run_server
def handle_user_registered(evt_type, evt_data):
print(f"New user registered: {evt_data['username']} (ID: {evt_data['user_id']})")
server = make_server(conn='amqp://guest:guest@localhost:5672//',
event_routing_keys=['event_queue'])
server.register_event_handler('user_registered', handle_user_registered)
run_server(server)
Publisher
from mqsrv.client import make_client
client = make_client(conn='amqp://guest:guest@localhost:5672//')
publisher = client.get_pubber('event_queue')
publisher('user_registered', {'user_id': 123, 'username': 'john_doe'})
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mqsrv-0.1.3.tar.gz
(9.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
mqsrv-0.1.3-py3-none-any.whl
(10.2 kB
view details)
File details
Details for the file mqsrv-0.1.3.tar.gz.
File metadata
- Download URL: mqsrv-0.1.3.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3728bcbb2118e4a5cca5aff2de141b60518abdbc4c020dd256bc71337394821d
|
|
| MD5 |
a6332e404ef9be49cff5d9b1d90fb6a8
|
|
| BLAKE2b-256 |
0cf541946d0e8f385c1a2f67edb02b7ec6a55971d9778074a3ecae98893f5546
|
File details
Details for the file mqsrv-0.1.3-py3-none-any.whl.
File metadata
- Download URL: mqsrv-0.1.3-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b68350e2d3a7d57e0263a98ab3da5a15a42b111abcd6b4aee394800e45de2c2
|
|
| MD5 |
88ad8e5ca1062c11802c4ce46343a58b
|
|
| BLAKE2b-256 |
c5e17cdf595109325d4ea971c8ab9b3288cf817ca519573d6488a63ec01c2b7d
|