我在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日志文件。
答案 0 :(得分:5)
您没有提到您希望从中读取的队列。由于MVC托管的应用程序没有IConfigureThisEndpoint
类来推断端点名称,因此您应该在.DefineEndpointName("MyEndpoint")
之后立即使用Configure.With()
- 这将设置输入队列的名称,如果适用的话。
我看到的另一个问题是,在.UnicastBus()
之后,您需要调用.LoadMessageHandlers()
来声明您在MVC应用程序中处理消息的意图。很多时候,Web应用程序将是仅发送端点,因此无需创建输入队列或处理来自它的任何消息。调用此方法将扫描您的类型以获取消息处理程序,并开始从队列中读取。
答案 1 :(得分:0)
我认为您需要使用Configure.WithWeb()
另外,如何定义端点的名称?