[英]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.