def __init__(self, store, subscriber_scheduler=None, queue_scheduler=None):
self.log = logging.getLogger(<EOL>'<STR_LIT>' % (__name__, self.__class__.__name__))<EOL>if subscriber_scheduler is None:<EOL><INDENT>subscriber_scheduler = FavorReliableSubscriberScheduler()<EOL><DEDENT>if queue_scheduler is None:<EOL><INDENT>queue_scheduler = RandomQueueScheduler()<EOL><DEDENT>self._lock = threading.RLock()<EOL>self.store = store<EOL>self.subscriber_scheduler = subscriber_scheduler<EOL>self.queue_scheduler = queue_scheduler<EOL>self._queues = defaultdict(set)<EOL>self._transaction_frames = defaultdict(lambda: defaultdict(list))<EOL>self._pending = {}<EOL>
@param store: The queue storage backend.
@type store: L{coilmq.store.QueueStore}

@param subscriber_scheduler: The scheduler that chooses which subscriber to send
                            messages to.
@type subscriber_scheduler: L{coilmq.scheduler.SubscriberPriorityScheduler}

@param queue_scheduler: The scheduler that chooses which queue to select for sending
                            backlogs for a single connection.
@type queue_scheduler: L{coilmq.scheduler.QueuePriorityScheduler}