我试图弄清楚发件箱应该如何与NServicebus一起工作,但我不太确定我是否明白。以下是我们目前的情景:
Service1 Service2 Service3 ServiceN
每个服务都有自己的数据库,其中包含用于队列/消息代理.的业务数据和服务总线共享数据库。
--这意味着每个服务对servicebus使用相同的连接字符串,对于业务数据库有不同的连接字符串。
我们面临的问题是,保存到业务数据库和发布在技术上是保存到2个数据库中,因此,如果将其包装到事务中,就会创建分布式事务。
现在,我正在考虑实现发件箱模式来解决这个问题,但是NServiceBus文档并没有给我们一个关于这个问题的想法:
通过启用发件箱,NServiceBus确实为保存消息servicename_Outbox表创建了新的表,但是应该存储在Servicebus数据库还是业务数据数据库?,如果它存储在servicebus数据库中,那么从技术上来说,将数据保存到其中仍然需要分布式事务?
发布于 2022-11-17 15:32:56
应该将发件箱表存储在哪里?是否应该将其存储在与业务数据相同的数据库中?
是
,在这种情况下,对于给定的服务,子数据将存储在哪里?
如果您使用的是消息驱动的pubsub而不是本地pubsub,那么是的。
是否可以将NServicebus配置为将发件箱表创建为业务数据库,而其余表则是在服务总线数据库中创建的?
是的,这是意料之中的。
,但是它应该存储到Servicebus数据库还是业务数据数据库?如果它存储在servicebus数据库中,那么,从技术上来说,将数据保存到其中还需要分布式事务吗?
发件箱数据存储在业务数据库中,并且共享相同的存储连接/事务,因此不需要分布式事务。
如何知道哪个表用于发件箱模式和发送消息?
每个端点都有自己的实体。
可以显式配置这一点吗?
请检查用于查看表名van是否配置的持久器的发件箱配置:
https://stackoverflow.com/questions/74308589
复制相似问题