Java 如何确保分布式环境中单个进程的运行

Java 如何确保分布式环境中单个进程的运行,java,message,quartz,Java,Message,Quartz,在分布式环境中,我有许多节点运行相同的代码。 我有一个处理事件的进程,我想确保它只处理一次 对于这一要求,推荐的解决方案是什么 以下是我脑海中的选择: 使用消息代理(RabbitMQ、ActiveMQ、Kafka)。 例如,仅为此消息创建一个队列。 但我不喜欢在堆栈中添加另一个组件 我真的不喜欢仅仅为了进程同步而向堆栈中添加消息代理 使用石英。 . 但我需要一个共享数据库 我的其他选择是什么?您是否可以将其改为幂等?那么,偶尔一次合二为一也没关系。如果事件本身很重要,那么使用持久性的消息传递选项

在分布式环境中,我有许多节点运行相同的代码。
我有一个处理事件的进程,我想确保它只处理一次

对于这一要求,推荐的解决方案是什么

以下是我脑海中的选择:

  • 使用消息代理(RabbitMQ、ActiveMQ、Kafka)。
    例如,仅为此消息创建一个队列。
    但我不喜欢在堆栈中添加另一个组件

    我真的不喜欢仅仅为了进程同步而向堆栈中添加消息代理

  • 使用石英。
    .
    但我需要一个共享数据库

  • 我的其他选择是什么?

    您是否可以将其改为幂等?那么,偶尔一次合二为一也没关系。如果事件本身很重要,那么使用持久性的消息传递选项是一个好主意。另请参阅Apache ZooKeeper。忘记您的技术堆栈。从业务方面开始。这项活动的重要性是什么?金融?对于错误,影响是什么,谁需要知道,谁可以采取行动解决问题。如何调度事件,节点如何访问这些事件?