group-instance.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
  4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:lang="http://www.springframework.org/schema/lang"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  7. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  8. http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.0.xsd
  9. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
  10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"
  11. default-autowire="byName">
  12. <!-- properties -->
  13. <bean class="com.alibaba.otter.canal.instance.spring.support.PropertyPlaceholderConfigurer" lazy-init="false">
  14. <property name="ignoreResourceNotFound" value="true" />
  15. <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/><!-- 允许system覆盖 -->
  16. <property name="locationNames">
  17. <list>
  18. <value>classpath:canal.properties</value>
  19. <value>classpath:${canal.instance.destination:}/instance.properties</value>
  20. </list>
  21. </property>
  22. </bean>
  23. <bean id="socketAddressEditor" class="com.alibaba.otter.canal.instance.spring.support.SocketAddressEditor" />
  24. <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
  25. <property name="propertyEditorRegistrars">
  26. <list>
  27. <ref bean="socketAddressEditor" />
  28. </list>
  29. </property>
  30. </bean>
  31. <bean id="instance" class="com.alibaba.otter.canal.instance.spring.CanalInstanceWithSpring">
  32. <property name="destination" value="${canal.instance.destination}" />
  33. <property name="eventParser">
  34. <ref local="eventParser" />
  35. </property>
  36. <property name="eventSink">
  37. <ref local="eventSink" />
  38. </property>
  39. <property name="eventStore">
  40. <ref local="eventStore" />
  41. </property>
  42. <property name="metaManager">
  43. <ref local="metaManager" />
  44. </property>
  45. <property name="alarmHandler">
  46. <ref local="alarmHandler" />
  47. </property>
  48. </bean>
  49. <!-- 报警处理类 -->
  50. <bean id="alarmHandler" class="com.alibaba.otter.canal.common.alarm.LogAlarmHandler" />
  51. <bean id="metaManager" class="com.alibaba.otter.canal.meta.MemoryMetaManager" />
  52. <bean id="eventStore" class="com.alibaba.otter.canal.store.memory.MemoryEventStoreWithBuffer">
  53. <property name="bufferSize" value="${canal.instance.memory.buffer.size:16384}" />
  54. <property name="bufferMemUnit" value="${canal.instance.memory.buffer.memunit:1024}" />
  55. <property name="batchMode" value="${canal.instance.memory.batch.mode:MEMSIZE}" />
  56. <property name="ddlIsolation" value="${canal.instance.get.ddl.isolation:false}" />
  57. </bean>
  58. <bean id="eventSink" class="com.alibaba.otter.canal.sink.entry.EntryEventSink">
  59. <property name="eventStore" ref="eventStore" />
  60. </bean>
  61. <bean id="eventParser" class="com.alibaba.otter.canal.parse.inbound.group.GroupEventParser">
  62. <property name="eventParsers">
  63. <list>
  64. <ref bean="eventParser1" />
  65. <ref bean="eventParser2" />
  66. </list>
  67. </property>
  68. </bean>
  69. <bean id="eventParser1" class="com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser">
  70. <property name="destination" value="${canal.instance.destination}" />
  71. <property name="slaveId" value="${canal.instance.mysql.slaveId:1234}" />
  72. <!-- 心跳配置 -->
  73. <property name="detectingEnable" value="${canal.instance.detecting.enable:false}" />
  74. <property name="detectingSQL" value="${canal.instance.detecting.sql}" />
  75. <property name="detectingIntervalInSeconds" value="${canal.instance.detecting.interval.time:5}" />
  76. <property name="haController">
  77. <bean class="com.alibaba.otter.canal.parse.ha.HeartBeatHAController">
  78. <property name="detectingRetryTimes" value="${canal.instance.detecting.retry.threshold:3}" />
  79. <property name="switchEnable" value="${canal.instance.detecting.heartbeatHaEnable:false}" />
  80. </bean>
  81. </property>
  82. <property name="alarmHandler" ref="alarmHandler" />
  83. <!-- 解析过滤处理 -->
  84. <property name="eventFilter">
  85. <bean class="com.alibaba.otter.canal.filter.aviater.AviaterRegexFilter" >
  86. <constructor-arg index="0" value="${canal.instance.filter.regex:.*\..*}" />
  87. </bean>
  88. </property>
  89. <property name="eventBlackFilter">
  90. <bean class="com.alibaba.otter.canal.filter.aviater.AviaterRegexFilter" >
  91. <constructor-arg index="0" value="${canal.instance.filter.black.regex:}" />
  92. <constructor-arg index="1" value="false" />
  93. </bean>
  94. </property>
  95. <!-- 最大事务解析大小,超过该大小后事务将被切分为多个事务投递 -->
  96. <property name="transactionSize" value="${canal.instance.transaction.size:1024}" />
  97. <!-- 网络链接参数 -->
  98. <property name="receiveBufferSize" value="${canal.instance.network.receiveBufferSize:16384}" />
  99. <property name="sendBufferSize" value="${canal.instance.network.sendBufferSize:16384}" />
  100. <property name="defaultConnectionTimeoutInSeconds" value="${canal.instance.network.soTimeout:30}" />
  101. <!-- 解析编码 -->
  102. <!-- property name="connectionCharsetNumber" value="${canal.instance.connectionCharsetNumber:33}" /-->
  103. <property name="connectionCharset" value="${canal.instance.connectionCharset:UTF-8}" />
  104. <!-- 解析位点记录 -->
  105. <property name="logPositionManager">
  106. <bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
  107. </property>
  108. <!-- failover切换时回退的时间 -->
  109. <property name="fallbackIntervalInSeconds" value="${canal.instance.fallbackIntervalInSeconds:60}" />
  110. <!-- 解析数据库信息 -->
  111. <property name="masterInfo">
  112. <bean class="com.alibaba.otter.canal.parse.support.AuthenticationInfo">
  113. <property name="address" value="${canal.instance.master1.address}" />
  114. <property name="username" value="${canal.instance.dbUsername:retl}" />
  115. <property name="password" value="${canal.instance.dbPassword:retl}" />
  116. <property name="defaultDatabaseName" value="${canal.instance.defaultDatabaseName:retl}" />
  117. </bean>
  118. </property>
  119. <property name="standbyInfo">
  120. <bean class="com.alibaba.otter.canal.parse.support.AuthenticationInfo">
  121. <property name="address" value="${canal.instance.standby1.address}" />
  122. <property name="username" value="${canal.instance.dbUsername:retl}" />
  123. <property name="password" value="${canal.instance.dbPassword:retl}" />
  124. <property name="defaultDatabaseName" value="${canal.instance.defaultDatabaseName:retl}" />
  125. </bean>
  126. </property>
  127. <!-- 解析起始位点 -->
  128. <property name="masterPosition">
  129. <bean class="com.alibaba.otter.canal.protocol.position.EntryPosition">
  130. <property name="journalName" value="${canal.instance.master1.journal.name}" />
  131. <property name="position" value="${canal.instance.master1.position}" />
  132. <property name="timestamp" value="${canal.instance.master1.timestamp}" />
  133. </bean>
  134. </property>
  135. <property name="standbyPosition">
  136. <bean class="com.alibaba.otter.canal.protocol.position.EntryPosition">
  137. <property name="journalName" value="${canal.instance.standby1.journal.name}" />
  138. <property name="position" value="${canal.instance.standby1.position}" />
  139. <property name="timestamp" value="${canal.instance.standby1.timestamp}" />
  140. </bean>
  141. </property>
  142. <property name="filterQueryDml" value="${canal.instance.filter.query.dml:false}" />
  143. <property name="filterQueryDcl" value="${canal.instance.filter.query.dcl:false}" />
  144. <property name="filterQueryDdl" value="${canal.instance.filter.query.ddl:false}" />
  145. <property name="useDruidDdlFilter" value="${canal.instance.filter.druid.ddl:true}" />
  146. <property name="filterTableError" value="${canal.instance.filter.table.error:false}" />
  147. <property name="supportBinlogFormats" value="${canal.instance.binlog.format}" />
  148. <property name="supportBinlogImages" value="${canal.instance.binlog.image}" />
  149. </bean>
  150. <bean id="eventParser2" class="com.alibaba.otter.canal.parse.inbound.mysql.MysqlEventParser">
  151. <property name="destination" value="${canal.instance.destination}" />
  152. <property name="slaveId" value="${canal.instance.mysql.slaveId:1234}" />
  153. <!-- 心跳配置 -->
  154. <property name="detectingEnable" value="${canal.instance.detecting.enable:false}" />
  155. <property name="detectingSQL" value="${canal.instance.detecting.sql}" />
  156. <property name="detectingIntervalInSeconds" value="${canal.instance.detecting.interval.time:5}" />
  157. <property name="haController">
  158. <bean class="com.alibaba.otter.canal.parse.ha.HeartBeatHAController">
  159. <property name="detectingRetryTimes" value="${canal.instance.detecting.retry.threshold:3}" />
  160. <property name="switchEnable" value="${canal.instance.detecting.heartbeatHaEnable:false}" />
  161. </bean>
  162. </property>
  163. <property name="alarmHandler" ref="alarmHandler" />
  164. <!-- 解析过滤处理 -->
  165. <property name="eventFilter">
  166. <bean class="com.alibaba.otter.canal.filter.aviater.AviaterRegexFilter" >
  167. <constructor-arg index="0" value="${canal.instance.filter.regex:.*\..*}" />
  168. </bean>
  169. </property>
  170. <property name="eventBlackFilter">
  171. <bean class="com.alibaba.otter.canal.filter.aviater.AviaterRegexFilter" >
  172. <constructor-arg index="0" value="${canal.instance.filter.black.regex:}" />
  173. <constructor-arg index="1" value="false" />
  174. </bean>
  175. </property>
  176. <!-- 最大事务解析大小,超过该大小后事务将被切分为多个事务投递 -->
  177. <property name="transactionSize" value="${canal.instance.transaction.size:1024}" />
  178. <!-- 网络链接参数 -->
  179. <property name="receiveBufferSize" value="${canal.instance.network.receiveBufferSize:16384}" />
  180. <property name="sendBufferSize" value="${canal.instance.network.sendBufferSize:16384}" />
  181. <property name="defaultConnectionTimeoutInSeconds" value="${canal.instance.network.soTimeout:30}" />
  182. <!-- 解析编码 -->
  183. <!-- property name="connectionCharsetNumber" value="${canal.instance.connectionCharsetNumber:33}" /-->
  184. <property name="connectionCharset" value="${canal.instance.connectionCharset:UTF-8}" />
  185. <!-- 解析位点记录 -->
  186. <property name="logPositionManager">
  187. <bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
  188. </property>
  189. <!-- failover切换时回退的时间 -->
  190. <property name="fallbackIntervalInSeconds" value="${canal.instance.fallbackIntervalInSeconds:60}" />
  191. <!-- 解析数据库信息 -->
  192. <property name="masterInfo">
  193. <bean class="com.alibaba.otter.canal.parse.support.AuthenticationInfo">
  194. <property name="address" value="${canal.instance.master2.address}" />
  195. <property name="username" value="${canal.instance.dbUsername:retl}" />
  196. <property name="password" value="${canal.instance.dbPassword:retl}" />
  197. <property name="defaultDatabaseName" value="${canal.instance.defaultDatabaseName:retl}" />
  198. </bean>
  199. </property>
  200. <property name="standbyInfo">
  201. <bean class="com.alibaba.otter.canal.parse.support.AuthenticationInfo">
  202. <property name="address" value="${canal.instance.standby2.address}" />
  203. <property name="username" value="${canal.instance.dbUsername:retl}" />
  204. <property name="password" value="${canal.instance.dbPassword:retl}" />
  205. <property name="defaultDatabaseName" value="${canal.instance.defaultDatabaseName:retl}" />
  206. </bean>
  207. </property>
  208. <!-- 解析起始位点 -->
  209. <property name="masterPosition">
  210. <bean class="com.alibaba.otter.canal.protocol.position.EntryPosition">
  211. <property name="journalName" value="${canal.instance.master2.journal.name}" />
  212. <property name="position" value="${canal.instance.master2.position}" />
  213. <property name="timestamp" value="${canal.instance.master2.timestamp}" />
  214. </bean>
  215. </property>
  216. <property name="standbyPosition">
  217. <bean class="com.alibaba.otter.canal.protocol.position.EntryPosition">
  218. <property name="journalName" value="${canal.instance.standby2.journal.name}" />
  219. <property name="position" value="${canal.instance.standby2.position}" />
  220. <property name="timestamp" value="${canal.instance.standby2.timestamp}" />
  221. </bean>
  222. </property>
  223. <property name="filterQueryDml" value="${canal.instance.filter.query.dml:false}" />
  224. <property name="filterQueryDcl" value="${canal.instance.filter.query.dcl:false}" />
  225. <property name="filterQueryDdl" value="${canal.instance.filter.query.ddl:false}" />
  226. <property name="useDruidDdlFilter" value="${canal.instance.filter.druid.ddl:true}" />
  227. <property name="filterRows" value="${canal.instance.filter.rows:false}" />
  228. <property name="filterTableError" value="${canal.instance.filter.table.error:false}" />
  229. <property name="supportBinlogFormats" value="${canal.instance.binlog.format}" />
  230. <property name="supportBinlogImages" value="${canal.instance.binlog.image}" />
  231. </bean>
  232. </beans>