用关系数据库替换Messaging

时间:2014-07-25 06:46:51

标签: architecture rabbitmq amqp

我的网络应用程序想要引发一些事件。单个事件将导致多个动作(即消息传递中的pub-sub模型)。现在我有2个选择,首先是向消息传递引擎发送直接AMQP发布调用(在我的例子中它将是RabbitMQ)。

其他选项是将事件保存在DB(mysql)表中,然后在此表上实现侦听器以查询事件,然后将这些事件发送到MQ。

我希望对我的网络应用程序流程产生最小的影响(即我希望花费最少的时间来提升事件(数据库保存或AMQP发布)。

我倾向于db,因为我必须进行最小的错误处理(因为数据库连接失败的概率非常小,那时整个应用程序将会关闭,因此最终不会丢失数据/事件)。另一方面如果我使用直接AMQP呼叫,我需要在我的结束处理错误(mq连接断开的概率看起来非常可能)。

任何建议都非常值得注意。

1 个答案:

答案 0 :(得分:0)

在db方法中,您有一个更复杂的集成场景,因为您介绍了其他系统和机制(数据库,侦听器)。在这种情况下有更多的失败点,但它们涉及事件处理过程的一部分,而不是事件引发。

如果您对前端的影响最小是至关重要的,我认为您的方法是合理的,额外的复杂性是值得的。

DB的提示:以简约的方式设计数据库可能会更好,并且它与进程之间尽可能少地耦合,因此如果您需要更改,可以避免对模式进行任何更改事件格式例如。这将带来更多的可维护性。

相关问题