mirror of
https://git.kotyczka.ch/developers/django.git
synced 2025-04-07 00:03:32 +02:00
51 lines
1.8 KiB
Python
Executable File
51 lines
1.8 KiB
Python
Executable File
import optparse
|
|
import sys
|
|
from proton import Condition, Message, Url
|
|
from proton.handlers import MessagingHandler
|
|
from proton.reactor import Container
|
|
|
|
exit_status = 0
|
|
|
|
|
|
class Server(MessagingHandler):
|
|
def __init__(self, url, address):
|
|
super(Server, self).__init__()
|
|
self.url = url
|
|
self.address = address
|
|
|
|
def on_start(self, event):
|
|
print("Listening on", self.url)
|
|
self.container = event.container
|
|
self.conn = event.container.connect(self.url, desired_capabilities="ANONYMOUS-RELAY")
|
|
|
|
def on_connection_opened(self, event):
|
|
if event.connection.remote_offered_capabilities and 'ANONYMOUS-RELAY' in event.connection.remote_offered_capabilities:
|
|
self.receiver = event.container.create_receiver(self.conn, self.address)
|
|
self.server = self.container.create_sender(self.conn, None)
|
|
else:
|
|
global exit_status
|
|
print("Server needs a broker which supports ANONYMOUS-RELAY", file=sys.stderr)
|
|
exit_status = 1
|
|
c = event.connection
|
|
c.condition = Condition('amqp:not-implemented', description="ANONYMOUS-RELAY required")
|
|
c.close()
|
|
|
|
def on_message(self, event):
|
|
print("Received", event.message)
|
|
self.server.send(Message(address=event.message.reply_to, body=event.message.body.upper(),
|
|
correlation_id=event.message.correlation_id))
|
|
|
|
|
|
parser = optparse.OptionParser(usage="usage: %prog [options]")
|
|
parser.add_option("-a", "--address", default="localhost:5672/examples",
|
|
help="address from which messages are received (default %default)")
|
|
opts, args = parser.parse_args()
|
|
|
|
url = Url(opts.address)
|
|
|
|
try:
|
|
Container(Server(url, url.path)).run()
|
|
except KeyboardInterrupt:
|
|
pass
|
|
|
|
sys.exit(exit_status) |