C#如何在每个微服务API中检测crud操作并将其发布到rabbitMQ?

C#如何在每个微服务API中检测crud操作并将其发布到rabbitMQ?,c#,asp.net-core,.net-core,rabbitmq,microservices,C#,Asp.net Core,.net Core,Rabbitmq,Microservices,我想在管理员微服务API中执行crud操作时,rabbitMQ捕获事件并将crud操作发布为消息,然后从另一方使用服务或某个工具使用消息,然后使用它更新另一个数据库? 如何做到这一点?有一个CDC(变更捕获检测)的概念。因此,您的一个微服务可以像往常一样对数据库进行更改(CRUD操作) 所以有一种叫做Debezium和Kafka的组合,实际上可以流式传输这些DB更改。Debezium负责读取CDC事件并将其发布到Kafka,您可以使用Kafka的这些DB更改(JSON格式) 例如,Microse

我想在管理员微服务API中执行crud操作时,rabbitMQ捕获事件并将crud操作发布为消息,然后从另一方使用服务或某个工具使用消息,然后使用它更新另一个数据库? 如何做到这一点?

有一个CDC(变更捕获检测)的概念。因此,您的一个微服务可以像往常一样对数据库进行更改(CRUD操作)

所以有一种叫做Debezium和Kafka的组合,实际上可以流式传输这些DB更改。Debezium负责读取CDC事件并将其发布到Kafka,您可以使用Kafka的这些DB更改(JSON格式)

例如,Microservice 1插入一条记录,然后对其进行更新,最后删除该记录

因此,如果您配置Debezium来读取这些事件,它将按顺序读取所有这些事件,然后将它们发布到Kafka(它还支持Kinesis、Pubsub),但不直接支持Rabbit MQ

Debezium支持大多数数据库。 下面是一个关于如何使用Kinesis和Mysql实现这一点的示例

这有点粘。你所说的“检测”和“捕捉事件”到底是什么意思?我的意思是我想将microservice的数据库持续同步到另一个数据库。每次更改microservice数据库中的数据以与其他数据库同步时。这就是概念。但我不知道具体怎么做。您是否想过在插入、更新、删除之后使用触发器?该触发器将消息发布到rabbitMQ,并查询执行的操作?我从来没有这样做过,所以我正在寻找一种方法来做代码优先的方法。谢谢。这看起来根本不是一个简单的解决方案(我现在正在寻找一种方法,将每个crud操作从我的服务推送到rabbitMQ。问题是,如何从数据库中提取查询以作为消息存储在rabbitMQ中?如果使用内联查询而不是ORM,则可以将同一查询发送到rabbitMQ。但如果您使用的是ORM,则可以尝试提取该查询作为原始查询进行查询并发送。但这实际上并不能实时执行。如果您有一个执行大量crud操作的存储过程,您将无法在另一端执行完全相同的操作。此外,您还应该小心使用RabbitMQ。如果您有更多订户(许多微服务正在使用)和使用排队功能。那么,该消息可能不会传递给所有的微服务。而且,您也不能保证订购,这将是一个问题。例如,您在记录上有一个insert、update语句和delete语句。如果在消费者端,它们不是以相同的顺序处理的,您将从中获得数据是否有一种简单的方法可以在每次更改(更新/删除/插入)时持续同步两个数据库?