我有
- JSON数据的输入流(在),
- 修改JSON数据的Java进程(A, B, C,…),
- JSON数据的输出流(out)。
它们可以使用JMS队列点对点连接,并按如下方式排列:
in -> A -> B -> C -> out
然而,我发现消息传递架构非常脆弱。如果我想添加、删除或重新排列组件,我必须停止管道,修改配置以根据需要重新连接它们,然后重新启动管道。当涉及到几十个过程时,这显然是非常繁琐的。
我想实现一个数据处理管道,无需停机,重新部署组件,或修改配置,允许我在运行时添加和删除组件。
in -> A -> B -> C -> out
in -> A -> C -> out // B stopped
in -> D -> A -> C -> out // D started behind A
in -> D -> A -> C -> B -> out // B started after C
是否有任何框架或技术可以帮助我实现这个开箱即用?如果不是,我该如何构建解决方案?
旁注:
我一直在考虑实现一个监听注册的PipelineManager的想法。当进程启动时,以一定的优先级向PipelineManager注册。PipelineManager从数据中消费,以请求响应方式按优先级递减的顺序调度消息,然后生成数据输出。ZeroMQ将用于将组件连接在一起。我不确定如何使用ZeroMQ实现这一点,也不确定这种架构是否是追求的正确选择。
评论吗?谢谢!
不使用针对特定收件人的命令,如果您转向发布-订阅模型,您将有更多的灵活性,在该模型中,您将发布主题,其他感兴趣的服务将前往该主题获取数据。大多数JMS实现将支持它以及其他消息传递平台,如Kafka和RabbitMQ