|
@@ -4,6 +4,7 @@ import java.text.SimpleDateFormat;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
|
+import com.alibaba.otter.canal.client.impl.ClusterCanalConnector;
|
|
import org.apache.commons.lang.SystemUtils;
|
|
import org.apache.commons.lang.SystemUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -35,6 +36,7 @@ public class AbstractCanalClientTest {
|
|
protected static final String SEP = SystemUtils.LINE_SEPARATOR;
|
|
protected static final String SEP = SystemUtils.LINE_SEPARATOR;
|
|
protected static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
protected static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
protected volatile boolean running = false;
|
|
protected volatile boolean running = false;
|
|
|
|
+ private volatile boolean waiting = true;
|
|
protected Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() {
|
|
protected Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() {
|
|
|
|
|
|
public void uncaughtException(Thread t, Throwable e) {
|
|
public void uncaughtException(Thread t, Throwable e) {
|
|
@@ -91,6 +93,12 @@ public class AbstractCanalClientTest {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
running = false;
|
|
running = false;
|
|
|
|
+ if (waiting) {
|
|
|
|
+ if (connector instanceof ClusterCanalConnector) {
|
|
|
|
+ ((ClusterCanalConnector) connector).setRetryTimes(-1);
|
|
|
|
+ }
|
|
|
|
+ thread.interrupt();
|
|
|
|
+ }
|
|
if (thread != null) {
|
|
if (thread != null) {
|
|
try {
|
|
try {
|
|
thread.join();
|
|
thread.join();
|
|
@@ -109,6 +117,7 @@ public class AbstractCanalClientTest {
|
|
MDC.put("destination", destination);
|
|
MDC.put("destination", destination);
|
|
connector.connect();
|
|
connector.connect();
|
|
connector.subscribe();
|
|
connector.subscribe();
|
|
|
|
+ waiting = false;
|
|
while (running) {
|
|
while (running) {
|
|
Message message = connector.getWithoutAck(batchSize); // 获取指定数量的数据
|
|
Message message = connector.getWithoutAck(batchSize); // 获取指定数量的数据
|
|
long batchId = message.getId();
|
|
long batchId = message.getId();
|