我试图弄清楚发件箱应该如何与NServicebus一起工作,但我不太确定我是否能理解
服务1服务2服务3服务
每个服务都有自己的数据库,用于保存业务数据和用于队列/消息代理的servicebus共享数据库
这意味着这些服务中的每一个都对servicebus使用相同的连接字符串,而对业务数据库使用不同的连接字符串
我们面临的问题是,从技术上讲,保存到业务数据库和发布就是保存到2个数据库,所以如果将其封装到事务中,这将创建分布式事务。
现在,我正在考虑实现发件箱模式来解决这个问题,但NServiceBus文档并没有真正为我们提供关于这个问题的想法:
- 发件箱表格应存放在哪里
通过启用发件箱NServiceBus确实创建了一个新的表来保存消息servicename_outbox表,但它应该存储在Servicebus数据库还是业务数据数据库中如果存储在servicebus数据库中,那么从技术上讲,要将数据保存到其中,还需要分布式事务吗?
- servicebus如何知道将哪个表用于Outbox模式并调度消息?这可以明确配置吗
发件箱表应该存储在哪里?它是否被假设存储在与商业数据相同的数据库中?
是
在这种情况下,给定服务的子脚本数据将存储在哪里?
如果您使用消息驱动的pubsub而不是本机pubsub,那么是的。
是否可以将NServicebus配置为在业务数据库中创建发件箱表,而其他表则在服务总线数据库中创建?
是的,这是意料之中的事。
但它应该存储在Servicebus数据库还是业务数据数据库中?如果它存储在servicebus数据库中,那么从技术上讲,要将数据保存到其中,它还需要分布式事务吗?
发件箱数据存储在业务数据库中,并共享相同的存储连接/事务,因此不需要分布式事务。
servicebus如何知道哪个表用于Outbox模式并调度消息?
每个端点都有自己的实体。
这可以显式配置吗?
请检查您正在使用的persister的发件箱配置,看看是否可以配置表名:
https://docs.particular.net/persistence/