我想知道是否有办法通过配置将NServiceBus置于一种将消息写入内存队列而不是物理队列的模式?
我的用例是Integration testing
。理想情况下,我希望避免将消息放在物理队列上,以避免集成测试对队列的依赖。我的测试侧重于测试将消息放在总线上的代码周围的逻辑,但如果队列不存在,测试将失败。
现在我在测试中手动创建队列,但是想避免这种情况。
每当我执行bus.Send(queueMessageObject);
时,我希望将消息存储在内存中(或者可能只是被忽略,因为我只是测试将它放在那里的逻辑)。
在我的unit tests
我可以通过使用MOQ模拟IBus对象来解决这个问题。但是在我的集成测试中,我不是在模拟总线,而是希望将消息发送到内存端点。我也不想使用与bus.Send()
不同的API来将消息放在总线上。
是否有当前/未来的NServiceBus配置设置可以执行此操作?
答案 0 :(得分:1)
我也不想使用与bus.Send()不同的api来将消息放在总线上。
为什么不呢?使用NServiceBus实现自己的抽象,可以轻松实现一堆其他实现和/或在不同总线之间切换。
我们有一个参数化工厂,它返回少数几个实现之一,消息可以放在日志中,写入文件,通过wcf等发送。这使我们可以创建许多不同的单元/集成测试。
答案 1 :(得分:1)
是的,我们计划支持它,请参阅https://github.com/Particular/NServiceBus/issues/1357