【发布时间】:2013-11-06 19:42:00
【问题描述】:
我有一个名为 UploadService 的端点,其中包含一个由另一个程序集中定义的命令启动的 saga。该程序集中的命令通过以下行在端点的初始化中注册:
public class EndpointInitialization : IWantCustomInitialization
{
public void Init()
{
NServiceBus.Configure.Features.Enable<NServiceBus.Features.Sagas>();
NServiceBus.Configure.With()
.Log4Net()
.UseInMemoryTimeoutPersister()
.DefiningCommandsAs(t => t.Namespace != null && t.Namespace.EndsWith("Commands"))
.DefiningMessagesAs(t => t.Namespace != null && t.Namespace.Contains("Messages"))
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();
}
}
但是,当通过 Debug->Start new instance 启动端点时,NServiceBus.Core 会抛出以下异常:
“传奇 'MySaga' 实现了 'IHandleMessages`1' 但消息类型 'MyCommand' 未被归类为消息。您应该使用 'Unobtrusive Mode Messages' 或者消息应该实现 'IMessage'、'IEvent ' 或 'ICommand'。”
我有一个单独的端点,它引用了相同的命令程序集,并以相同的方式定义了自定义初始化,并且启动得很好(唯一的区别是另一个端点不使用 sagas)。
更新:我正在使用 NServiceBus 4.2
【问题讨论】:
-
你能在 github 上创建一个 issue 并发给我们一个 repro 吗?
-
会做 - 也许我使用此功能错误,但问题似乎在于将我的消息定义放在与我的端点配置分开的自定义初始化类中。当我在与端点配置相同的类中指定初始化时,它可以正常启动。
标签: nservicebus saga nservicebus4