是否有可能在应用程序中使用NServiceBus而没有任何输入队列?NServiceBus没有输入队列
原因是,我有一个ASP.NET MVC应用程序,当发生某些事情时(例如,新用户注册)向其他应用程序发送消息。 Web应用程序从不接收任何回复或其他消息,因此我不想让应用程序停止运行。 msmq偷看每秒抛出异常。
是否有可能在应用程序中使用NServiceBus而没有任何输入队列?NServiceBus没有输入队列
原因是,我有一个ASP.NET MVC应用程序,当发生某些事情时(例如,新用户注册)向其他应用程序发送消息。 Web应用程序从不接收任何回复或其他消息,因此我不想让应用程序停止运行。 msmq偷看每秒抛出异常。
这是支持的,只需删除msmstranport配置部分,所有应该没问题。这工作对NServiceBus的2.0.1281.0(NET4)版本没有的app.config目前
using NServiceBus;
namespace SendOnlyEndpoint.Custom
{
public class Program
{
static void Main(string[] args)
{
var bus = Configure.With()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.UnicastBus()
.CreateBus()
.Start();
bus.Send("SendOnlyDestination",new TestMessage());
}
}
public class TestMessage : IMessage
{
}
}
更多信息上只发送端点here
我会尝试不配置输入队列。 Bus.Send将使用内部出站队列发送消息。
它不显得那么容易。 我试图降低我的配置是:。 Configure.WithWeb()StructureMapBuilder(ObjectFactory.Container).XmlSerializer()UnicastBus()ImpersonateSender(假).CreateBus()的start() 和删除。我的web.config中的MsMqTransportConfig部分,但它在Configure()方法中引发异常。 – kfuglsang 2010-07-29 12:49:08
我在ASP.NET应用程序中的一个HttpModule没有MsmqTransportConfig部分在web.config中,并与它成功: 总线= NServiceBus.Configure.WithWeb() .Log4Net() .DefaultBuilder() .XmlSerializer() .MsmqTransport() .IsTransactional(假) .PurgeOnStartup(假) .UnicastBus() .ImpersonateSender(假) .CreateBus() 。开始(); 我希望它不是一个MVC的东西,但NSB不应该窥视队列。 – 2010-07-29 13:43:14
我在配置过程中得到一个NullReferenceException,如果我没有在我的webconfig中使用MsmqTransportConfig部分。 – kfuglsang 2010-07-30 07:03:08
如果我不打电话给bus.Start()我不能发送消息。 总线尚未启动,请在尝试使用总线之前调用Bus.Start()。 异常详细信息:System.InvalidOperationException:总线尚未启动,请在尝试使用总线之前调用Bus.Start()。 第21行:public void FireAndForget(IMessage message) 第22行:第23行:_bus.Send(message); 24行:} – kfuglsang 2010-07-30 07:00:52
我错了,开始需要被调用。编辑我的答案来反映这一点。也会检查2.1,但鉴于它不稳定,我建议你如果遇到麻烦就转移到2.0 – 2010-08-10 19:16:48