Jgroups 节点无法向 JGROUPSPING 表的自定义列添加唯一值

问题描述 投票:0回答:1

希望你们一切都好。

我们正在使用使用 jgroup 的 Infinispan 分布式缓存。 JDBC_PING 协议用于注册和同步节点。我们在 jgroupsping 表中添加一个自定义列 (

node_name
) 来唯一标识每个节点。这里,期望每个节点都应该在自定义列中添加唯一标识符(唯一标识符是为每个节点的环境属性设置的唯一值)。

但是 post 节点已注册到 JDBC_PING 表,我们看到所有节点的自定义列值都是相同的。有人可以告诉我为什么这个 custom_column 值是重复的吗?基本上,第一个节点值被所有其他节点使用。

**创建表sql:**

CREATE TABLE IF NOT EXISTS jgroupsping (
   own_addr varchar(200) NOT NULL, 
   cluster_name varchar(200) NOT NULL, 
   ping_data varbinary(5000) DEFAULT NULL, 
   node_name varchar(50), 
   PRIMARY KEY (own_addr, cluster_name)) 
   DEFAULT CHARSET=utf8"

Jgroups-tcp.xml 插入-sql :

insert_single_sql="INSERT INTO JGROUPSPING (own_addr, cluster_name, ping_data, node_name) values (?, ?, ?,'${UNIQUE_NODE_NAME}' )"

文件:

infinispan-configs.xml: jgroups-tcp.xml:

提前致谢,

jgroupsping 表状态后 2 个节点以分布式模式启动:

在这里,即使节点具有唯一值,您也可以看到两个节点都插入了相同的

node_name

Jgroups为何这么做?在jgroupping表的node_name列中插入唯一值的方法是什么?

java infinispan distributed-caching jgroups
1个回答
0
投票

我只能支持Pedro的回答:如果您在不同成员上看到唯一值,则调试所有节点中的insert_single_sql语句执行。如果插入成功,则这些值必须是唯一的。 您是否在 JDBC_PING 中定义了其他 sql 语句?例如选择所有 ping 数据?

© www.soinside.com 2019 - 2024. All rights reserved.