From fa552f4b201e17fdf315e6ca5a1a73760cd2e9bd Mon Sep 17 00:00:00 2001 From: kkfluous Date: Mon, 20 Apr 2026 15:12:16 +0800 Subject: [PATCH] config(gb32960): add parse.lenientBlockFailure toggle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 lingniu.ingest.gb32960.parse.lenientBlockFailure 配置开关(默认 true), 为 Gb32960BodyParser 的单块异常隔离行为做回退开关。实现在后续 commit。 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../gb32960/config/Gb32960Properties.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960Properties.java b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960Properties.java index 55d41c13..f4bf6bda 100644 --- a/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960Properties.java +++ b/protocol-gb32960/src/main/java/com/lingniu/ingest/protocol/gb32960/config/Gb32960Properties.java @@ -26,6 +26,16 @@ public class Gb32960Properties { /** TLS 双向认证。 */ private Tls tls = new Tls(); + /** + * 报文解析行为配置。 + * + *

默认 {@code lenientBlockFailure=true}:单个信息块解析异常时兜成 + * {@link com.lingniu.ingest.protocol.gb32960.model.InfoBlock.Raw} 继续解析, + * 不再整帧放弃。关闭后恢复旧行为(任意异常直接抛 {@code DecodeException} + * 放弃整帧),仅在灰度回滚时使用。 + */ + private Parse parse = new Parse(); + /** * 厂商扩展协议(vendor extensions)路由配置。 * @@ -54,6 +64,8 @@ public class Gb32960Properties { public void setAuth(Auth auth) { this.auth = auth; } public Tls getTls() { return tls; } public void setTls(Tls tls) { this.tls = tls; } + public Parse getParse() { return parse; } + public void setParse(Parse parse) { this.parse = parse; } public List getVendorExtensions() { return vendorExtensions; } public void setVendorExtensions(List vendorExtensions) { this.vendorExtensions = vendorExtensions; @@ -164,6 +176,29 @@ public class Gb32960Properties { public void setRequireClientAuth(boolean requireClientAuth) { this.requireClientAuth = requireClientAuth; } } + /** + * 报文解析容错策略。 + */ + public static class Parse { + /** + * 单块解析异常时是否兜底为 {@link com.lingniu.ingest.protocol.gb32960.model.InfoBlock.Raw} + * 继续解析。默认开启。 + * + *

+ */ + private boolean lenientBlockFailure = true; + + public boolean isLenientBlockFailure() { return lenientBlockFailure; } + public void setLenientBlockFailure(boolean lenientBlockFailure) { + this.lenientBlockFailure = lenientBlockFailure; + } + } + /** * 单条 vendor 扩展路由配置。{@code name} 必须与 * {@code VendorExtensionCatalog} 注册的 key 一致。