def METHOD_NAME(
        self,
        queue_name: str,
        message: bytes,
        exchange_name: Optional[str] = None,
        properties: Optional[BasicProperties] = None
) -> None:
    if exchange_name is None:
        exchange_name = DEFAULT_EXCHANGER_NAME
    if properties is None:
        headers = {'OCR-D WebApi Header': 'OCR-D WebApi Value'}
        properties = BasicProperties(
            app_id='webapi-processing-server',
            content_type='application/json',
            headers=headers
        )
    # Note: There is no way to publish to a queue directly.
    # Publishing happens through an exchange agent with
    # a routing key - specified when binding the queue to the exchange
    RMQConnector.basic_publish(
        self._channel,
        exchange_name=exchange_name,
        # The routing key and the queue name must match!
        routing_key=queue_name,
        message_body=message,
        properties=properties
    )
    self.message_counter += 1
    self.deliveries[self.message_counter] = True
    self._logger.info(f'Published message #{self.message_counter}')