我正在尝试设置一个 Solr dataimport.EventListener 来调用一个带有更新事件中添加的文档 ID 的 SOAP 服务。我有一个实现 org.apache.solr.handler.dataimport.EventListener 的类,我认为getAllEntityFields() 的结果会产生文档 ID 的集合。不幸的是,该方法的结果产生了一个空列表。更令人困惑的是 context.getSolrCore().getName() 产生一个空字符串而不是实际的核心名称。所以看来我在这里不太正确。
当前设置如下: 每当在 SQL 中调用某个存储过程时,它都会将消息放入队列中。这个队列上有一个监听器,它启动一个读取队列并调用其他存储过程的程序。存储过程完成后,将在 Solr 上执行增量或完整导入操作。紧接着,调用一个方法来更新缓存。但是,由于在调用此更新方法之前可能尚未完成 Solr 上的导入操作,因此缓存可能会使用“陈旧”数据进行更新。
我希望使用 dataimport EventListener 来调用更新缓存的方法,因为我的其他选项似乎过于复杂(例如轮询 dataimport URL 以确定何时调用更新方法或使用队列列出需要的文档 ID更新并让 EventListener 调用服务上的方法来接收此队列并更新缓存)。我很难找到文档或示例。有人对我应该如何解决这个问题有任何想法吗?