我们使用RabbitMQ作为代理,在这里我们将处理交易数据的OLTP Web应用程序与其他问题(例如报告应用程序)分开。在这个特定的生态系统中,报告数据必须尽可能地是最新的,以免消息永久丢失。
但是由于各种原因消息可能会丢失,即使启用了内置的Rabbitmq发布者确认和确认功能,在极端情况下,例如在某些情况下,我们仍然可能会丢失一些消息。网络故障。
因此,我们提出了一个解决方案-重新发布者服务。
重新发布者服务的工作方式如下:
我们拥有的解决方案有效,它不能100%确保交付,但是凭借重新发布者服务的安全网,我们还没有看到消息无法到达目的地。
我的问题是我们是用错误的方式进行操作还是在重新发明轮子?有没有人有类似的要求,您是否也以类似的方式保证交货?
我们确实知道,从体系结构的角度来看,这种方法很差,因为重新发布者需要直接访问源数据库和目标数据库。 (共享数据库)。这也意味着,每当需要为新的源服务添加报告时,我们也必须编写重新发布代码。