事件总线(Event Bus) - 理论

优质
小牛编辑
135浏览
2023-12-01
处理

事件到地址总线上发送邮件.

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。