from __future__ import print_function, division import time import modules.remote as remote import application.app as app from zope.interface import implementer from application import IllegalArgumentException, LogicException from utils.singleton import singleton, cache from .interfaces import * from .handlers.handlerconfig import * _logger = app.getLogger('base') @implementer(IStatus) class RedisStatus(object): _STATUS_KEY_PREFIX = '__mee_status_' def __init__(self, key, code='', config='', nextConfig='', tmpConfig=''): self.key = self._STATUS_KEY_PREFIX + key self.code = code self.config = config self.nextConfig = nextConfig self.tmpConfig = tmpConfig self.redisclient = remote.getRedisClient()
from pymysqlreplication import BinLogStreamReader from pymysqlreplication.row_event import ( DeleteRowsEvent, UpdateRowsEvent, WriteRowsEvent, ) from pymysqlreplication.event import ( QueryEvent, ) from application import NotSupportedException from application.config import config from application.connection import ConnectinoPool from utils.failure import Failure _logger = app.getLogger('base') _binlogLogger = app.getLogger('binlog') class ListenService(object): """ 监听指定数据库的binlog,并将数据写入kafka队列 """ def __init__(self, database): self.topic = config().get('kafka', 'topic') self.database = database self._connPool = ConnectinoPool() self._runPath = app.getPrjRoot() + "/run" self._binlogPosFile = self._runPath + "/" + database + "_collector_position.safe"