事件总线(Event Bus) - 理论
处理
事件到地址总线上发送邮件.
Vert.x 并不费心处理计划任何幻想。在 Vert.x 的地址是只是一个字符串。任何字符串是有效的。然而它是计划的明智地使用某种类型,例如使用句点划定一个命名空间。
一些例子的有效地址是 europe.news.feed1、 acme.games.pacman、 香肠和 X。
处理程序
在处理程序接收消息。你注册一个处理程序的地址。
很多不同的处理程序可以注册在相同的地址。
单个处理程序可以注册在许多不同的地址。
发布/订阅消息传递
事件总线支持发布消息。
消息发布到的地址。发布是指信息传递给所有处理程序,注册在该地址。
这是熟悉的发布订阅消息传递模式。
点到点和请求-响应消息
事件总线还支持点到点消息传递。
邮件发送到某个地址。Vert.x 然后将传送到位于该地址注册的处理程序之一。
如果有多个处理程序,登记的地址,将选择一个使用非严格-轮转调度算法。
使用点到点消息传递,发送消息时,可以指定一个可选的答复处理程序。
当消息由收件人收到,并且已被处理时,收件人可以选择决定对消息进行回复。如果他们这样做答复处理程序将被调用。
当回到在发件人收到的答复时,它也可以被回复。这可以是重复的广告-无穷尽,并允许一个对话框,可以设置两个不同的 verticles 之间。
这是一种常见的消息传递模式,称为请求-响应模式。
尽最大努力交付
Vert.x 最好来传递邮件,并不会有意识地把它们扔掉。这就被所谓尽最大努力交付。
然而,万一失败的全部或部分的事件总线,有可能性消息将丢失。
如果您的应用程序关心丢失的邮件,你应该代码您的处理程序是等幂的和你发件人可以在恢复后重试。
类型的消息
开箱即用 Vert.x 允许任何原始/简单类型、 字符串或buffers将作为邮件发送。
然而它是公约和惯例在 Vert.x 以json 格式发送邮件
JSON 是很容易创建、 读取和解析在 Vert.x 支持,因此它已成为一种通用语言为 Vert.x 的所有语言。
然而你不被迫使用 JSON,如果你不想去。
事件总线是非常灵活,也支持通过事件总线发送任意对象。你这样做是通过定义您想要发送的对象的codec。