|
50 | 50 | import org.openmetadata.service.events.subscription.AlertUtil; |
51 | 51 | import org.openmetadata.service.jdbi3.EntityRepository; |
52 | 52 | import org.openmetadata.service.jdbi3.EventSubscriptionRepository; |
| 53 | +import org.openmetadata.service.jdbi3.locator.ConnectionType; |
53 | 54 | import org.openmetadata.service.resources.events.subscription.TypedEvent; |
54 | 55 | import org.openmetadata.service.util.DIContainer; |
55 | 56 | import org.openmetadata.service.util.OpenMetadataConnectionBuilder; |
@@ -102,8 +103,33 @@ private EventSubscriptionScheduler( |
102 | 103 | Properties properties = new Properties(); |
103 | 104 | properties.put("org.quartz.scheduler.instanceName", SCHEDULER_NAME); |
104 | 105 | properties.put("org.quartz.scheduler.instanceId", "AUTO"); |
| 106 | + properties.put("org.quartz.scheduler.skipUpdateCheck", "true"); |
| 107 | + properties.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); |
105 | 108 | properties.put("org.quartz.threadPool.threadCount", String.valueOf(SCHEDULER_THREAD_COUNT)); |
106 | | - properties.put("org.quartz.jobStore.class", "org.quartz.simpl.RAMJobStore"); |
| 109 | + properties.put("org.quartz.threadPool.threadPriority", "5"); |
| 110 | + properties.put("org.quartz.jobStore.misfireThreshold", "60000"); |
| 111 | + properties.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX"); |
| 112 | + properties.put("org.quartz.jobStore.useProperties", "true"); |
| 113 | + properties.put("org.quartz.jobStore.tablePrefix", "QRTZ_"); |
| 114 | + properties.put("org.quartz.jobStore.isClustered", "true"); |
| 115 | + properties.put("org.quartz.jobStore.dataSource", "myDS"); |
| 116 | + properties.put("org.quartz.dataSource.myDS.maxConnections", "5"); |
| 117 | + properties.put("org.quartz.dataSource.myDS.validationQuery", "select 1"); |
| 118 | + properties.put( |
| 119 | + "org.quartz.dataSource.myDS.driver", config.getDataSourceFactory().getDriverClass()); |
| 120 | + properties.put("org.quartz.dataSource.myDS.URL", config.getDataSourceFactory().getUrl()); |
| 121 | + properties.put("org.quartz.dataSource.myDS.user", config.getDataSourceFactory().getUser()); |
| 122 | + properties.put( |
| 123 | + "org.quartz.dataSource.myDS.password", config.getDataSourceFactory().getPassword()); |
| 124 | + if (ConnectionType.MYSQL.label.equals(config.getDataSourceFactory().getDriverClass())) { |
| 125 | + properties.put( |
| 126 | + "org.quartz.jobStore.driverDelegateClass", |
| 127 | + "org.quartz.impl.jdbcjobstore.StdJDBCDelegate"); |
| 128 | + } else { |
| 129 | + properties.put( |
| 130 | + "org.quartz.jobStore.driverDelegateClass", |
| 131 | + "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate"); |
| 132 | + } |
107 | 133 |
|
108 | 134 | StdSchedulerFactory factory = new StdSchedulerFactory(); |
109 | 135 | factory.initialize(properties); |
@@ -211,9 +237,9 @@ public boolean isSubscriptionRegistered(EventSubscription eventSubscription) { |
211 | 237 | private JobDetail jobBuilder( |
212 | 238 | AbstractEventConsumer publisher, EventSubscription eventSubscription, String jobIdentity) { |
213 | 239 | JobDataMap dataMap = new JobDataMap(); |
214 | | - dataMap.put(ALERT_INFO_KEY, eventSubscription); |
| 240 | + dataMap.put(ALERT_INFO_KEY, JsonUtils.pojoToJson(eventSubscription)); |
215 | 241 | EventSubscriptionOffset startingOffset = getStartingOffset(eventSubscription.getId()); |
216 | | - dataMap.put(ALERT_OFFSET_KEY, startingOffset); |
| 242 | + dataMap.put(ALERT_OFFSET_KEY, JsonUtils.pojoToJson(startingOffset)); |
217 | 243 | JobBuilder jobBuilder = |
218 | 244 | JobBuilder.newJob(publisher.getClass()) |
219 | 245 | .withIdentity(jobIdentity, ALERT_JOB_GROUP) |
|
0 commit comments