如果同一应用程序的两个实例订阅了一个主题,如何避免重复处理消息?
How can duplicate processing of messages be avoided if two instances of same app subscribes to a topic?
我有两个相同应用程序的实例 运行,它们都订阅了相同的主题。消息将发布到两个服务器,并且两个服务器都将处理同一条消息。如果同一应用程序的两个实例使用无状态方法订阅(相同)主题,如何避免重复处理消息?
如果服务器只是彼此的复制,则它们不应该有单独的数据源来收听。创建多实例架构的全部意义在于并行化,从而加速事物的处理。您应该拥有单一的数据源,这样一旦消息被一台服务器接收,另一台服务器就不再可用,后者可以专注于后续消息。
主题的目的与您试图达到的目的完全相反。
队列代表它。
如果您仍想使用主题,您的应用程序实例之上必须只有一个 subscriber/listener。
然后您必须在应用程序实例之间自行强制执行任何负载平衡算法(例如循环法或更复杂的算法)。
我有两个相同应用程序的实例 运行,它们都订阅了相同的主题。消息将发布到两个服务器,并且两个服务器都将处理同一条消息。如果同一应用程序的两个实例使用无状态方法订阅(相同)主题,如何避免重复处理消息?
如果服务器只是彼此的复制,则它们不应该有单独的数据源来收听。创建多实例架构的全部意义在于并行化,从而加速事物的处理。您应该拥有单一的数据源,这样一旦消息被一台服务器接收,另一台服务器就不再可用,后者可以专注于后续消息。
主题的目的与您试图达到的目的完全相反。 队列代表它。
如果您仍想使用主题,您的应用程序实例之上必须只有一个 subscriber/listener。
然后您必须在应用程序实例之间自行强制执行任何负载平衡算法(例如循环法或更复杂的算法)。