Java 从卡桑德拉拉拉来的Netflix Zuul过滤器不起作用

Java 从卡桑德拉拉拉来的Netflix Zuul过滤器不起作用,java,groovy,cassandra,servlet-filters,netflix-zuul,Java,Groovy,Cassandra,Servlet Filters,Netflix Zuul,我一直在将Zuul与其他Netflix OSS软件(如Eureka、Hystrix等)结合使用。起初,我能够创建自己的过滤器,并使其在文件系统中工作。然后,我想使用zuulfilterDaoCassandraAPI从Cassandra数据库中提取过滤器。问题是我不能让它工作 我已经将文件系统中使用的Java筛选器转换为Groovy筛选器,并使用ZuulFilterDAO.addFilter()方法将其添加到Cassandra,然后使用ZuulFilterDAO.setFilterActive()

我一直在将Zuul与其他Netflix OSS软件(如Eureka、Hystrix等)结合使用。起初,我能够创建自己的过滤器,并使其在文件系统中工作。然后,我想使用zuulfilterDaoCassandraAPI从Cassandra数据库中提取过滤器。问题是我不能让它工作

我已经将文件系统中使用的Java筛选器转换为Groovy筛选器,并使用
ZuulFilterDAO.addFilter()
方法将其添加到Cassandra,然后使用
ZuulFilterDAO.setFilterActive()
激活它。之后,我启动
ZuulFilterPoller
开始从数据库中提取筛选器,如果已经有了。对于数据库表模型,我通过查看
FilterInfo
对象及其属性以及
ZuulFilterDAOCassandra.addFilter()
方法来假设它

下面是更完整的代码部分:

ZuulFilterDAO dao = new ZuulFilterDAOCassandra(keyspace);
try {
    FilterInfo fi = dao.addFilter(code, "pre", "testFilter", "false", "1");
    dao.setFilterActive(fi.getFilterName(), 1); // 1 is the filter revision
    ZuulFilterPoller.start(dao);
} catch (Exception e) {
    // Logging
}

// Show every active filter
List<FilterInfo> allActiveFilters = dao.getAllActiveFilters();
for (FilterInfo fi : allActiveFilters) {
    LOG.info("FilterName: " + fi.getFilterName()); // outputs : FilterName: testFilter
}
然后,我可以在项目的根目录下编辑testFilter.groovy,其中包含我在
dao.addFilter()方法中提到的代码。我知道代码是有效的,因为它在从FS中提取过滤器时起作用。并且,当添加过滤器时,会通过
filtervier
对代码进行验证


当我向应用程序发送http请求时,Zuul不再过滤它们。我遗漏了什么吗?

尝试使用。据我所知,ZuulFilterPoller将过滤器从Cassandra保存到磁盘,然后FilterFileManager将其投入工作。

1。您是否尝试过在不使用try catch的情况下运行代码?如图所示,异常被忽略。2.您是否使用FilterFileManager来检测Groovy过滤器?好的,我忘了在这里使用FilterFileManager。我用它从FS中提取过滤器,但不是从cass中提取。谢谢你,写下来作为回答,我会接受的。作为记录,异常被捕获,因为我曾经两次尝试激活过滤器。事实上,过滤器被轮询并保存到磁盘,FFM处理过滤器的编译/处理。还是不知道我是怎么忘记的。。。
adding filter to diskFilterInfo{filter_id='zuul-server:testFilter:pre', 
filter_name='testFilter', filter_type='pre', revision=1, creationDate=/*date*/,
isActive=true, isCanary=false, application_name=zuul-server}

filter written testFilter.groovy