如何在 asp.net 中设置内存中的发件箱并将其绑定到 ef 上下文的保存更改



我有这个设置

  • asp.net 核 (2.1(
  • EF 核心 (2.1(
  • 公共交通 (5.1(

在执行数据库更改和发布事件的控制器操作期间,我希望将传出消息保存在内存中的发件箱中,直到我知道 EF 上下文事务已成功提交到数据库。

我愿意承担发送失败的风险,但由于与由于并发异常等原因而导致的数据库事务失败相比,这接近于零,因此我认为在我的情况下不值得考虑风险。

是否可以以某种方式使用当前的UseInMemoryOutbox实现进行设置?还是我必须像这个 SO 答案中讨论的那样滚动我自己的发件箱表,并将要发送的消息保存在同一个数据库事务中,然后让后台工作线程轮询该表并发送传出消息来实现这一点?

最好在

控制器操作中将命令发送到队列(通过 MT,使用发送端点(,然后使用使用者 (1( 从队列中提取消息,(2( 使用内存中发件箱处理事件,以及 (3( 将相关数据插入数据库。这样,控制器就不依赖于数据库延迟消息队列来生成事件。并且该命令由使用者更持久地处理,允许 API 控制器快速返回 Http/201 接受响应代码。

最新更新