【发布时间】:2018-10-06 10:38:09
【问题描述】:
如何配置 Spring Integration,以便从集合中删除已处理的消息。在 MongoDB 控制台中,我可以简单地调用:
db.messages.findAndModify({ remove:true })
但在 MongoDbMessageSource 中只是读取消息
mongoTemplate.find(..)
我想这可以通过在事务中进行一些删除来完成。但我无法想出简单的好解决方案。
我的配置的入站部分:
@Bean
@Autowired
public IntegrationFlow pollMessages(MongoDbFactory mongoDbFactory, SomeService someService) {
return IntegrationFlows.from(
mongoMessageSource(mongoDbFactory),
c -> c.poller(Pollers.fixedDelay(1, TimeUnit.SECONDS)))
.handle(someService, "process")
.get();
}
@Bean
@Autowired
public MongoDbMessageSource mongoMessageSource(MongoDbFactory mongo) {
MongoDbMessageSource messageSource = new MongoDbMessageSource(mongo, new LiteralExpression("{}"));
messageSource.setEntityClass(MessageEntity.class);
messageSource.setCollectionNameExpression(new LiteralExpression("messages"));
return messageSource;
}
【问题讨论】:
标签: java mongodb spring-integration message-queue spring-data-mongodb