我已经定义了一个扩展 Processor 的类,并且我使用 KeyValueStore 来存储临时存储一些消息,然后将它们发送到sink主题。特别是,我在源主题上收到一组碎片消息,一旦收到所有消息,我就要将它们组合起来并将连接的消息发送到sink主题。在Processor:process()
方法中,一旦我通过 delete(K key) 方法发送带有 forward()的邮件,我想删除,来自州商店的消息。
在处理器中,我用
StoreBuilder<KeyValueStore<byte[], String>> storeBuilder = Stores.keyValueStoreBuilder(Stores.persistentKeyValueStore("message-store"), Serdes.ByteArray(), Serdes.String());
问题是没有发生删除,当我发送另一条带有相同密钥的邮件时,我仍然会在值中收到以前的邮件。
代码:
kvStore = (KeyValueStore<byte[], String>) this.context.getStateStore("message-store");
kvStore.delete((byte[]key)
状态存储的put
和get
正常工作。
这种方法有什么问题吗?