我最近开始将Vert.x用于我的新项目,我非常喜欢Event Bus如何使用Vert.x简化消息传递。
在我的项目中,我想实现一个标准的发布/订阅机制,我有多个订阅者/消费者在特定地址上侦听。因此,从Vert.x文档中我非常了解如何配置事件总线,在事件总线上注册使用者以及发布消息。
现在我正在寻找的是,让消费者按顺序而不是并行地处理消息。详细说明,我希望所有消费者一个接一个地接收消息而不是一起接收消息。我不确定它是否会被称为链接,因为处理程序的顺序现在对我来说并不重要。但是,不同处理程序/消费者对给定消息的并行处理是我想在某些特定情况下避免的。
可以在Vert.x中进行吗?将会对此提出一些建议。
谢谢&问候, 科亚
答案 0 :(得分:2)
您是否可以通过按顺序处理消息来详细说明您实际尝试实现的目标?这是一个更复杂的业务流程,每个客户只实现此流程的一部分吗?或者我弄错了?
无论如何,Vert.x没有提供如何由多个消费者顺序“同步”或处理某个消息的方法。
您可能需要做的是定义多条消息,其中每条消息都与业务流程的某个部分相关,并且只触发负责该部分的消费者。
答案 1 :(得分:0)
您可以将不能并行运行的Verticles标记为worker verticle,并指定一个只有一个线程的自定义worker池。
但是,您可能要考虑这些顶点是否真的应该是单独的Vertericle,或者是否最好将它们建模为“方法”,而这些“方法”都是从单个Vericle逐一调用的。