我必须使用 x86 32 位 murmurhash 来确定我在 Kafka 中发送消息的分区。另一个应用程序正在使用 NodeJS murmurhash.v3() 方法从预期分区获取消息。
我尝试了两种方法:
这是我用来从 Apache java 方法获取值的代码:
int ret = MurmurHash3.MurmurHashV3(key, new Long(KAFKA_PARTITION_SEED).intValue());
Run Code Online (Sandbox Code Playgroud)
注意:目前,KAFKA_PARTITION_SEED = 100,但这只是一个测试值。未来将是一个 Long 值。
这是我完成的从 NodeJS转换为 Java 的代码:
static int MurmurHashV3(String key, int seed) {
int remainder;
int bytes;
int h1;
int h1b;
int c1;
int c2;
int k1;
int i;
remainder = key.length() & 3; // key.length % 4
bytes = key.length() - remainder;
h1 = …Run Code Online (Sandbox Code Playgroud)