#!/usr/bin/env python3 # -*- coding: utf-8 -* import pyzenkit import mentat.const import mentat.daemon.piper class DemoPrintComponent(pyzenkit.zendaemon.ZenDaemonComponent): def get_events(self): return [ { 'event': 'message_process', 'callback': self.cbk_event_message_process, 'prepend': False } ] def cbk_event_message_process(self, daemon, args): daemon.logger.info( "Processing message: '{}': '{}'".format( args['id'], str(args['data']).strip() ) ) daemon.queue.schedule('message_commit', args) self.inc_statistic('cnt_printed') return (daemon.FLAG_CONTINUE, None) class DemoPiperDaemon(mentat.daemon.piper.PiperDaemon): def __init__(self): super().__init__( name = 'mentat-demopiper.py', description = 'DemoPiperDaemon - Demonstration daemon', path_bin = '/usr/local/bin', path_cfg = '/tmp', path_log = '/var/mentat/log', path_run = '/var/mentat/run', path_tmp = '/tmp', default_config_dir = None, default_queue_in_dir = '/var/mentat/spool/mentat-demopiper.py', default_queue_out_dir = None, schedule = [ ('message_enqueue', {'data': '{"testA1": 1, "testA2": 2}'}), ('message_enqueue', {'data': '{"testB1": 1, "testB2": 2}'}), (mentat.const.DFLT_EVENT_START,) ], schedule_after = [ (mentat.const.DFLT_INTERVAL_STATISTICS, mentat.const.DFLT_EVENT_LOG_STATISTICS) ], components = [ DemoPrintComponent() ] ) if __name__ == "__main__": DemoPiperDaemon().run()