Vert.x EventBus消息顺序保证及相关概念、通信场景疑问
Vert.x EventBus 消息顺序常见问题解答
消息顺序的核心保证
Vert.x 官方给出的顺序规则是:
Vert.x 会按照特定sender的发送顺序,将消息投递到特定的handler。
sender与handler的具体指向
- sender:特指同一个Vert.x Context。不管你是在同一个Verticle内部发送消息,还是在该Context关联的各类回调(比如事件处理器、定时器任务、异步操作回调)里发送,只要这些发送动作归属同一个Context,就会被认定为同一个sender。
- handler:指的是绑定到EventBus地址的特定处理实例。比如你给某个地址注册了一个
Handler<Message<T>>对象,这个对象就是一个handler;如果是Verticle作为订阅者,那就是该Verticle在对应Context下运行的消息处理逻辑实例。
跨地址的消息顺序是否有保证?
没有。顺序保证仅局限于**同一个sender发送到同一个handler(即同一个EventBus地址的同一个订阅实例)**的消息流。哪怕发送方给同一个Verticle订阅的不同地址发消息,这些消息的投递顺序也不做任何保证。只有当所有消息都发往同一个地址,且由同一个handler处理时,才会严格遵循发送顺序。
内容的提问来源于stack exchange,提问作者Nolequen
相关产品推荐
相关产品推荐

