"""Publish messages to various queues.""" import argparse from config import Config from profiler import Profiler from publishers.ActiveMQ import ActiveMQ from publishers.RabbitMQ import RabbitMQ from publishers.SQS import SQSAdapter from publishers.redis import RedisAdapter config = Config().get_config() transactions_count = config.get('transactions_count') parser = argparse.ArgumentParser() parser.add_argument('queue') args = parser.parse_args() profiler = Profiler() with open('../../transaction.json', 'r') as transaction_file: data = transaction_file.read() if 'activemq' == args.queue: # test ActiveMQ print('Benchmarking ActiveMQ') host = config.get('activemq').get('host') port = config.get('activemq').get('port') destination = config.get('activemq').get('queue') activemq = ActiveMQ(host, port) profiler.start_timer() activemq.publish(transactions_count, destination, data) profiler.add_items(transactions_count) profiler.print_results() activemq.close() elif 'redis' == args.queue: # test Redis print('Benchmarking Redis') host = config.get('redis').get('host') queue = config.get('redis').get('queue') redis = RedisAdapter(host) profiler.start_timer() redis.publish(transactions_count, queue, data) profiler.add_items(transactions_count) profiler.print_results() redis.close() elif 'rabbitmq' == args.queue: # test RabbitMQ print('Benchmarking RabbitMQ') host = config.get('rabbitmq').get('host') queue = config.get('rabbitmq').get('queue') rabbitmq = RabbitMQ(host, queue) profiler.start_timer() rabbitmq.publish(transactions_count, queue, data) profiler.add_items(transactions_count) profiler.print_results() rabbitmq.close() elif 'sqs' == args.queue: # test SQS print('Benchmarking SQS') sqs = SQSAdapter(config.get('sqs').get('queue_url')) profiler.start_timer() sqs.publish(transactions_count, data) profiler.add_items(transactions_count) profiler.print_results() sqs.close() else: print('Error: Unknown queue.') exit(-1)