Exemplo n.º 1
0
def try_create_queue(queue_name: str):
    try:
        create_queue(queue_name, priorities=10, server_url=SERVER_URL)
    except QMF2ObjectExists:
        pass  # Queue already exists
    except QMF2Exception:
        print("QMF2 error during queue creation")
        raise
Exemplo n.º 2
0
 def test_create_binding(self):
     create_exchange(self.exchange_address,
                     exchange_type=ExchangeType.topic,
                     durable=False)
     create_queue(self.queue_address, durable=False, auto_delete=True)
     create_binding(self.exchange_address,
                    self.queue_address,
                    binding_name='one_ring')
Exemplo n.º 3
0
def route_config(args):
    try:
        route_mapping = yaml.safe_load(args.file)
    except yaml.YAMLError:
        print("Invalid YAML config mapping\n")
        args.parser.print_help()
        exit(EX_DATAERR)

    for exchange in route_mapping:
        valid_bindings = set()
        if args.force_creation:
            try:
                create_exchange(exchange,
                                ExchangeType.headers,
                                server_url=args.broker_url)
            except QMF2ObjectExists:
                print("Exchange {} already exists, moving on...".format(
                    exchange))
        for queue in route_mapping[exchange]:
            if args.force_creation:
                try:
                    create_queue(queue, server_url=args.broker_url)
                except QMF2ObjectExists:
                    print(
                        "Queue {} already exists, moving on...".format(queue))
            for binding in route_mapping[exchange][queue]:
                binding_name = get_headers_binding_name(
                    exchange, queue, binding)
                valid_bindings.add((exchange, queue, binding_name))
                # A binding with an existing name will be updated.
                # Since we generate the name from the header match properties,
                # this is equivalent to ignoring.
                try:
                    create_binding(exchange,
                                   queue,
                                   headers_match=binding,
                                   binding_name=binding_name,
                                   server_url=args.broker_url)
                except ValueError as e:
                    print(str(e) + '\n')
                    args.parser.print_help()
                    exit(EX_USAGE)
                except ObjectNotFound as e:
                    print(str(e) + '\n')
                    args.parser.print_help()
                    exit(EX_USAGE)

        binding_keys = get_binding_keys(exchange, server_url=args.broker_url)
        # Delete old bindings
        for binding_key in binding_keys - valid_bindings:
            delete_binding(binding_key[0],
                           binding_key[1],
                           binding_key[2],
                           server_url=args.broker_url)
Exemplo n.º 4
0
 def test_create_headers_binding(self):
     create_exchange(self.exchange_address,
                     exchange_type=ExchangeType.headers,
                     durable=False)
     create_queue(self.queue_address, durable=False, auto_delete=True)
     create_binding(self.exchange_address,
                    self.queue_address,
                    headers_match={
                        'type': 'food',
                        'timing': 'early'
                    },
                    binding_name='breakfast')
Exemplo n.º 5
0
 def test_create_binding_match_on_wrong_exchange(self):
     create_exchange(self.exchange_address,
                     exchange_type=ExchangeType.direct,
                     durable=False)
     create_queue(self.queue_address, durable=False, auto_delete=True)
     with self.assertRaises(RuntimeError):
         create_binding(self.exchange_address,
                        self.queue_address,
                        headers_match={
                            'type': 'food',
                            'timing': 'late'
                        },
                        binding_name='dinner')
Exemplo n.º 6
0
    def setUp(self):
        configure(CONFIG)
        self.received_messages = []

        queue_address = uuid4().hex
        create_queue(queue_address, durable=False,
                     auto_delete=True, priorities=5,
                     extra_properties={'qpid.auto_delete_timeout': 10})
        self.sender = Sender(queue_address)

        def handle_received_message(message: Message):
            self.received_messages.append(message)
            return True
        self.receiver = Receiver(handle_received_message, queue_address)
Exemplo n.º 7
0
def queue_create(args):
    try:
        create_queue(args.queue, args.durable, priorities=args.priorities,
                     server_url=args.broker_url)
    except ValueError as e:
        print(str(e) + '\n')
        args.parser.print_help()
        exit(EX_USAGE)
    except QMF2ObjectExists:
        print(f"Queue '{args.queue}' already exist")
        exit(EX_USAGE)
    except QMF2NotFound:
        print('Object not found, probably not enough permissions to create '
              'queue')
        exit(EX_USAGE)
    except TimeoutReached:
        print('Timeout, server is not available or wrong login/password')
        exit(EX_USAGE)
Exemplo n.º 8
0
    def test_multi_receive(self):
        expected_messages = [
            create_message(b'FOOBAR1'),
            create_message(b'FOOBAR2'),
            create_message(b'FOOBAR3')
        ]
        self.send_messages(expected_messages[0:-1])

        second_queue_address = uuid4().hex
        create_queue(second_queue_address,
                     durable=False,
                     auto_delete=True,
                     extra_properties={'qpid.auto_delete_timeout': 10})
        self.receiver.add_address(second_queue_address)

        second_sender = Sender(second_queue_address)
        second_sender.queue(expected_messages[-1:])
        second_sender.send()

        self.receive_messages()
        self.assertEqual(len(self.received_messages), len(expected_messages))
Exemplo n.º 9
0
 def test_create_binding_no_exchange(self):
     create_queue(self.queue_address, durable=False, auto_delete=True)
     with self.assertRaises(ObjectNotFound):
         create_binding(self.exchange_address, self.queue_address)
Exemplo n.º 10
0
 def test_create_queue_already_exists(self):
     create_queue(self.queue_address, durable=False, auto_delete=True)
     with self.assertRaises(QMF2ObjectExists):
         create_queue(self.queue_address, durable=False, auto_delete=True)
Exemplo n.º 11
0
 def test_create_queue(self):
     create_queue(self.queue_address, durable=False, auto_delete=True)