我遇到了一个弹簧集成的情况。 我有一个spring集成,它从SFTP服务器处理文件,然后将它们留在服务器上。我使用mongodb元数据存储可以让几个实例在没有冲突的情况下获取文件。 我想做什么:
我想做的是这样的事情:
{{1}}
问题是mongoMessageSource是一个bean,触发的查询总是一样的。 如何进行弹簧集成,每隔X次使用不同的参数值激活mongo查询,然后删除文件? 感谢
答案 0 :(得分:1)
你是正确的,但你应该考虑一些外部bean,每次轮询调用MongoDbMessageSource.receive()
时,它会为你返回一个新的查询。
我的意思是你MongoDbMessageSource
的第二个ctor参数必须是:
Expression expression = new SpelExpressionParser().parseExpression("@myQueryBean.getQuery()");
MongoDbMessageSource messageSource = new MongoDbMessageSource(mongo, expression);
其中myQueryBean
是一个bean,每次调用getQuery()
时都有适当的逻辑来构建新的MongoDb查询。在我们的例子中,它由MongoDbMessageSource
上的轮询器完成。