首页 > 解决方案 > 在 NServiceBus 5 中手动创建 InMemoryPersistence 订阅

问题描述

我正在尝试创建一个“一次性”流程,该流程将通过在 NServiceBus 5 中引发适当的事件来预加载我的服务和一堆数据。但是我正在努力解决如何配置我的“假”订阅所以事件被发布到适当的端点。

这是我创建总线以发送消息的代码:

var busConfiguration = new BusConfiguration();

busConfiguration.UseSerialization<XmlSerializer>();
busConfiguration.UseTransport<MsmqTransport>();
busConfiguration.UsePersistence<InMemoryPersistence>();

using (var bus = Bus.CreateSendOnly(busConfiguration))
{       
    bus.Publish(new MyEvent());
}

但我不确定如何ISubscriptionStorage访问InMemoryPersistence. 我猜我是否可以访问,我可以执行以下操作:

var subscriptionStorage = GetSubscriptionStorage();
subscriptionStorage.Subscribe(new Address("MyQueueName", "MyMachineName"), new MessageType(typeof(MyEvent)));

有任何想法吗?

标签: .netnservicebus

解决方案


您正在创建一个仅发送端点。仅发送端点发送消息但不接收。因此,不会收到任何事件,也不需要订阅。

将端点切换到完整端点将需要定义存储。InMemoryPersistence您可以使用自己的实现来包装存储,或者用自定义的实现完全替换它。


推荐阅读