0

我在 MVC4 应用程序中运行自托管的 NSB 3.2.8,这是我的配置:

Configure.With()
.DefiningMessagesAs(t => t.Namespace != null && namespaces.Contains(t.Namespace))
.CastleWindsorBuilder(container)
.XmlSerializer()
.Log4Net()
.MsmqTransport()
    .IsTransactional(true)
    .IsolationLevel(IsolationLevel.ReadUncommitted)
    .PurgeOnStartup(false)                  
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();

我可以IBus在我的控制器中添加一个依赖项并将消息发送到队列中,Bus.SendLocal()但队列没有被读取,也没有创建 log4net 日志文件。

4

2 回答 2

5

您没有提及您希望它从哪个队列中读取。由于 MVC 托管的应用程序没有IConfigureThisEndpoint用于推断端点名称的类,因此您应该立即使用它.DefineEndpointName("MyEndpoint")Configure.With()执行此操作 - 如果适用,这将为输入队列设置名称。

我看到的另一个问题是,在.UnicastBus()您需要调用.LoadMessageHandlers()来声明您在 MVC 应用程序中处理消息的意图之后。很多时候,Web 应用程序将是仅发送端点,因此无需创建输入队列或处理来自它的任何消息。调用此方法将扫描您的类型以查找消息处理程序,并开始从队列中读取。

于 2012-10-02T15:55:30.277 回答
0

我认为你需要使用Configure.WithWeb()

另外,您如何定义端点的名称?

于 2012-10-02T07:56:02.900 回答