gpt4 book ai didi

c# - Nservicebus 不在 msmq 中存储订阅者

转载 作者:行者123 更新时间:2023-11-30 12:13:57 24 4
gpt4 key购买 nike

我是 NServiceBus 的新手,我有一个问题。

我有一个 WCF 服务,它是我的发布者(我知道我不应该使用 wcf 发布)。我有另一个 WCF 服务作为订户。

我的问题是,当第二个 wcf 服务要订阅发布者时,我的发布者不会将此信息存储在 msmq 中(使用 .MsmqSubscriptionStorage() 时)。但是当发布者将订阅者存储在内存中时它会起作用(.InMemorySubscriptionStorage())

如何强制我的总线使用 msmq?

下面我将给出发布者和订阅者的代码。

发布者总线初始化:

Bus = NServiceBus.Configure.WithWeb()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional( false )
.PurgeOnStartup( false )
.UnicastBus()
.LoadMessageHandlers()
.ImpersonateSender( false )
.MsmqSubscriptionStorage()
.CreateBus()
.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());

发布者配置:

<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
</configSections>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>

订阅者总线初始化:

Bus = NServiceBus.Configure.WithWeb()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.LoadMessageHandlers()
.CreateBus()
.Start(() => Confgure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());

订阅者配置:

    <configSections>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
</configSections>

<MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>

<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Messages" Endpoint="FirstService" />
</MessageEndpointMappings>
</UnicastBusConfig>

最佳答案

我想出了问题所在。发布者应设置为 .IsTransactional(true) 以对订阅者使用 MSMQ 存储。

关于c# - Nservicebus 不在 msmq 中存储订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10716617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com