[英]How to check if a PostgreSQL logical replication slot already exists with java?
我正在使用 PostgreSQL 复制 API 创建一个带有 Java 代码的逻辑复制槽,我想在创建过程之前添加一个测试以检查该槽是否已经存在。 这是我的代码:
connection.getReplicationAPI()
.createReplicationSlot()
.logical()
.withSlotName(slotName)
.withOutputPlugin("test_decoding")
.make();
SELECT
slot_name,
plugin,
slot_type,
datoid,
database,
temporary,
active,
active_pid,
xmin,
catalog_xmin,
restart_lsn,
confirmed_flush_lsn
FROM pg_replication_slots
WHERE slot_name = ?
我想你可以通过以下方式检查它:
log.info("creating replication slot, slotName={}", slotName);
try {
connection.getReplicationAPI()
.createReplicationSlot()
.logical()
.withSlotName(slotName)
.withOutputPlugin("test_decoding")
.make();
log.info("replication slot created");
} catch (Exception e) {
if (e.getMessage()
.equals("ERROR: replication slot \"" + slotName
+ "\" already exists")) {
log.info("replication slot exists, not creating");
} else {
log.error("error creating replication slot", e);
throw new RuntimeException(e);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.