我有以下设置:
如何最好地限制MessageListener仅在时间范围内处理队列中的消息?
我不希望在MessageListener中检查当前系统时间与时间范围。如果消息没有在时间范围之外从队列中删除,那将是件好事。
由于
答案 0 :(得分:0)
您需要在应用程序逻辑中控制它。
根据MessageListener的实现方式,可以停止/统计它。如果您无法做到这一点,那么移动到信息接收器将是您最好的选择,因为您可以轻松选择何时使用该信息。
如果这些都不起作用,您可以随时选择其他ack模式或使用JMS转换。使用消息时,您可以决定是否要在onMessage方法中完全处理消息。如果它不在当前时间范围内,您可以选择拒绝该消息,甚至可以保持该消息,直到您可以处理它然后确认或提交。
如果您选择立即拒绝,则需要确保有一个重试逻辑,允许您不断尝试相同的消息。