Files
kontor/kontor-scripts/read_queue.py
T
2025-07-16 16:04:33 +02:00

75 lines
2.6 KiB
Python

import stomp
import json
import time
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
from proton import Message, Event, symbol
from proton.handlers import MessagingHandler
from proton.reactor import Container, ReceiverOption, SenderOption
from config import get_logger
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument('--verbose', '-v', action='count', default=0)
parser.add_argument('--config', '-c', default='kontor-docker')
args = parser.parse_args()
class MyListener(stomp.ConnectionListener):
def __init__(self, log):
self.log = log
def on_error(self, frame):
self.log.info(f"received an error {frame.body}")
def on_message(self, frame):
self.log.info(f"received a message '{frame.body}'")
data = json.loads(frame.body)
url = data['url']
self.log.info(f"found link: {url}")
class AddLinkReceiver(MessagingHandler):
def __init__(self, server, log):
super(AddLinkReceiver, self).__init__()
self.log = log
self.log.info("create AddLinkReceiver")
self.server = server
self.conn = None
self.address = "KontorMediaFile::add_link_file"
def on_start(self, event: Event) -> None:
self.log.info("AddLinkReceiver started...")
self.conn = event.container.connect(self.server, user="artemis", password="artemis")
event.container.create_receiver(self.conn, self.address, options=ReceiverCapabilityOptions())
def on_link_opened(self, event: Event) -> None:
self.log.info(f"AddLinkReceiver opened for address {self.address}")
def on_message(self, event: Event) -> None:
message = event.message
self.log.info(f"AddLinkReceiver message received: {message}")
class ReceiverCapabilityOptions(ReceiverOption):
def apply(self, receiver):
receiver.source.capabilities.put_object(symbol("queue"))
class SenderCapabilityOptions(SenderOption):
def apply(self, sender):
sender.source.capabilities.put_object(symbol("queue"))
if __name__ == '__main__':
log = get_logger(args.verbose, args.config)
log.info("kontor.read_queue started")
handler = AddLinkReceiver("amqp://127.0.0.1:5672", log)
container = Container(handler)
container.run()
#host = [('127.0.0.1', 61616)]
#conn = stomp.Connection(host_and_ports=host)
#conn.set_listener('', MyListener(log))
#conn.connect(username='artemis', passcode='artemis', wait=True)
#conn.subscribe(destination='KontorMediaFile::add_link_file', id=1, ack='auto', headers={})
#time.sleep(5)
#conn.disconnect()
log.info("kontor.read_queue finished")