def with_service(service: str, connector: RabbitMqConnector = None): connector = RabbitMqConnector() if not connector else connector return RabbitMqEventConfigurer( connector, DEFAULT_ORGANIZATION, service, QueueConfig.default(default_retry_ttl=10), )
def with_ttl_1s(connector: RabbitMqConnector = None): connector = RabbitMqConnector() if not connector else connector return RabbitMqEventConfigurer( connector, DEFAULT_ORGANIZATION, DEFAULT_SERVICE, QueueConfig.default(default_retry_ttl=1000), )
def with_specific_queue_config( specific_queue_config: SpecificQueueConfig, default_retry_ttl: int, default_main_ttl: int, ): return QueueConfig( default_retry_ttl=default_retry_ttl, default_main_ttl=default_main_ttl, specific_queue_configs={"specific": specific_queue_config}, )
def __init__( self, connector: RabbitMqConnector, organization: str, service: str, queue_config: QueueConfig = QueueConfig.default(), use_store_queues: bool = True, ): self._use_store_queues = use_store_queues self.event_subscribers_configurer = RabbitMqEventSubcribersConfigurer( connector, organization, service, queue_config) self.event_store_configurer = RabbitMqEventStoreConfigurer( connector, organization, service, queue_config)
def from_dict(kdict): event_subscribers = None queues_subscribers = None store_queue_subscriber = None events = kdict.get("events") queues = kdict.get("queues") retry_ttl = DEFAULT_QUEUE_RETRY_TTL main_ttl = DEFAULT_QUEUE_RETRY_TTL queue_config = QueueConfig.default(retry_ttl, main_ttl) if events: retry_ttl = events.get("retry_ttl", DEFAULT_QUEUE_RETRY_TTL) main_ttl = events.get("retry_ttl", DEFAULT_QUEUE_RETRY_TTL) queue_config = QueueConfig.default(retry_ttl, main_ttl) dict_events_subscribers = events.get("subscribers") if dict_events_subscribers: event_subscribers = [] for src_event_name, event_info in dict_events_subscribers.items( ): handlers_names = check_list_or_str_item( event_info, "handlers", typename="EventHandler") event_name = get_event_name(src_event_name) event_version = event_info.get("version", 1) handlers = get_handlers(handlers_names, kdict) event_subscribers.append( EventSubscriber( event_name=event_name, event_version=event_version, handlers=handlers, )) if queues: str_store_queue_subscriber = queues.get("store") if str_store_queue_subscriber: store_queue_subscriber = get_handlers( [str_store_queue_subscriber], kdict)[0] dict_queues_subscribers = queues.get("subscribers") if dict_queues_subscribers: queues_subscribers = {} for queue_name in dict_queues_subscribers.keys(): handlers_names = check_list_or_str_item( dict_queues_subscribers, queue_name, typename="QueueHandler") handlers = get_handlers(handlers_names, kdict) queues_subscribers[queue_name] = handlers specific_queues_config = queues.get("specific_config") if specific_queues_config: queue_config = QueueConfig.from_dict(specific_queues_config, retry_ttl, main_ttl) return ConfigEvents( organization=events.get("organization"), service=events.get("service"), publish_deploy_event=events.get("publish_deploy_event"), consumer_verbose=events.get("consumer_verbose", False), use_store_queues=events.get("use_store_queues", True), retry_ttl=retry_ttl, main_ttl=main_ttl, max_retries=events.get("max_retries", 5), message_broker=events.get("message_broker", "not_implemented"), event_subscribers=event_subscribers, store_queue_subscriber=store_queue_subscriber, queues_subscribers=queues_subscribers, chaos=RabbitMqEventChaos(), queue_config=queue_config, )
def default(): return QueueConfig.default()
def with_ttl_10(): return QueueConfig.default(default_retry_ttl=10, default_main_ttl=10)