def test_favorReliable(self): """ Test the favor reliable delivery scheduler. """ sched = FavorReliableSubscriberScheduler() conn1 = MockConnection() conn1.reliable_subscriber = True conn2 = MockConnection() conn2.reliable_subscriber = False choice = sched.choice((conn1, conn2), None) assert choice is conn1, "Expected reliable connection to be selected."
def __init__(self, store, subscriber_scheduler=None, queue_scheduler=None): """ @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} """ self.log = logging.getLogger('%s.%s' % (__name__, self.__class__.__name__)) # Use default schedulers, if they're not specified if subscriber_scheduler is None: subscriber_scheduler = FavorReliableSubscriberScheduler() if queue_scheduler is None: queue_scheduler = RandomQueueScheduler() # This lock var is required by L{synchronized} decorator. self._lock = threading.RLock() self.store = store self.subscriber_scheduler = subscriber_scheduler self.queue_scheduler = queue_scheduler self._queues = defaultdict(set) self._transaction_frames = defaultdict(lambda: defaultdict(list)) self._pending = {}
def _queuemanager(self): """ Returns the configured L{QueueManager} instance to use. Can be overridden by subclasses that wish to change out any queue mgr parameters. @rtype: L{QueueManager} """ return QueueManager( store=MemoryQueue(), subscriber_scheduler=FavorReliableSubscriberScheduler(), queue_scheduler=RandomQueueScheduler())
def _queuemanager(self): """ Returns the configured L{QueueManager} instance to use. """ data_dir = os.path.join(os.getcwd(), 'data') if not os.path.exists(data_dir): os.makedirs(data_dir) configuration = {'qstore.sqlalchemy.url': 'sqlite:///data/coilmq.db'} engine = engine_from_config(configuration, 'qstore.sqlalchemy.') init_model(engine, drop=True) store = SAQueue() return QueueManager(store=store, subscriber_scheduler=FavorReliableSubscriberScheduler(), queue_scheduler=RandomQueueScheduler())