Ignite消息:如何知晓有序消息因超时被丢弃?
关于Ignite sendOrdered()超时跳过消息的通知方案
根据IgniteMessaging#sendOrdered()的文档说明:
如果超时时间到期,给定主题下所有尚未到达的有序消息将被跳过。当(如果)过期消息实际到达时,它们会被忽略。
目前Ignite的事件系统确实没有提供这类消息相关事件的原生通知支持,不过可以通过以下两种自定义方式实现需求:
自定义消息包装器
给每条有序消息添加唯一标识、发送时间戳等元数据,消费端维护一个已处理消息的ID列表和超时阈值。当触发超时跳过逻辑后,主动比对后续到达的消息元数据,一旦发现属于被跳过的过期消息,就触发自定义的通知逻辑(比如记录日志、发送内部告警等)。扩展Ignite的Messaging组件
通过继承或代理IgniteMessaging的实现类,重写sendOrdered()相关逻辑,在超时触发跳过动作、以及收到并忽略过期消息的节点上,添加自定义的通知回调(比如调用预设的监听器方法)。这种方式需要对Ignite内部实现有一定了解,适合深度定制场景。
内容的提问来源于stack exchange,提问作者Moha the almighty camel
相关产品推荐
相关产品推荐

