带有日期参数的MongoDb消息源

时间:2017-12-13 14:21:04

标签: spring spring-integration

我遇到了一个弹簧集成的情况。 我有一个spring集成,它从SFTP服务器处理文件,然后将它们留在服务器上。我使用mongodb元数据存储可以让几个实例在没有冲突的情况下获取文件。 我想做什么:

  • 创建一个mongo db查询,该查询将搜索在x和Y天之间修改日期的文件。
  • 删除这些文件
  • 该行动由投票人解雇。

我想做的是这样的事情:

{{1}}

问题是mongoMessageSource是一个bean,触发的查询总是一样的。 如何进行弹簧集成,每隔X次使用不同的参数值激活mongo查询,然后删除文件? 感谢

1 个答案:

答案 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上的轮询器完成。