我正在使用mongo入站适配器从mongo中检索数据。目前我正在使用以下配置。
<int-mongo:inbound-channel-adapter
id="mongoInboundAdapter" collection-name="updates_IPMS_PRICING"
mongo-template="mongoTemplatePublisher" channel="ipmsPricingUpdateChannelSplitter"
query="{'flagged' : false}" entity-class="com.snapdeal.coms.publisher.bean.PublisherVendorProductUpdate">
<poller max-messages-per-poll="2" fixed-rate="10000"></poller>
</int-mongo:inbound-channel-adapter>
我的数据库中有大约20条记录符合上述查询的条件,但由于我给出了每个轮询的最大消息数值2,我预计每次轮询最多可获得2条记录。 但我得到的所有记录都符合上述查询的条件。不确定我做错了什么。
答案 0 :(得分:2)
实际上我建议为New Feature
提出query-expression
JIRA ticket以允许指定org.springframework.data.mongodb.core.query.Query
构建器,其中skip()
和{{1}选项,从那里你的问题可以修复如下:
limit()
答案 1 :(得分:1)
mongo适配器旨在返回包含每个轮询的查询结果集合的单个消息。所以max-messages-per-poll
在这里没有任何区别。
max-messages-per-poll
用于使轮询器短路,在您的情况下,第二次轮询立即完成,而不是再等待10秒。经过2次民意调查,我们再次等待。
为了实现分页,您需要使用query-expression
而不是query
,并在每个轮询的查询中包含某个状态。
例如,如果文档有一些增量值,您可以在bean中存储该值,并使用下一轮询中的值来获取下一个值。