我正在实施域事件基础架构,但该项目不允许任何消息传递(金融服务客户端),因此在Hazelcast Topics和ExecutorService中找到了替代方案,
但问题是当在集群中运行时,消息应该传递给将在集群中运行的侦听器,因此对于2的集群,我们在2 jvm中运行相同的侦听器,并且消息消耗两次并且作用于,假设Domain事件应该执行一些非幂等操作,比如信用一些忠诚点,除非我明确地保持一个域事件的痕迹并且每次我收到一个事件时检查,我将最终记入两次,“任何建议实现这一点,而不必将这些锅炉板写在infralayer上“,或者是否存在这种实施的已知模式。
编辑:同时我也按照建议Hazelcast ExecutorService
评估Here答案 0 :(得分:1)
您描述的用例可以通过使用Hazelcast的队列而不是主题来解决。使用主题的主要原因是,如果您对多个(可能是独立的)消费者获得相同消息感兴趣。您的要求听起来像您感兴趣的是只有一个消费者获得了消息,这就是队列的用途,请参阅the Hazelcast documentation for Queues。