我正在使用MassTransit和RaabbitMQ,当我尝试发送消息时,我收到此错误:
rabbitmq://localhost/FilesVersioning => An exception was thrown during Send
at MassTransit.Transports.Endpoint.Send[T](ISendContext`1 context) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\Endpoint.cs:line 116
at MassTransit.Transports.Endpoint.Send[T](T message) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\Endpoint.cs:line 125
at ServicesImplementation.DVService.<>c__DisplayClass7.b__6() in D:\MyProject\trunk\ServicesImplementation\DocVersioningService.cs:line 111
at FileSystemIO.FileSystemTransaction.ExecutePreCommitActions() in D:\MyProject\trunk\FileSystemIO\FileSystemTransaction.cs:line 106
at Domain.Repositories.NHibernateSessionModule.EndSession(ISession session) in D:\MyProject\trunk\Domain\Repositories\NHibernateSessionModule.cs:line 205
at Domain.Repositories.NHibernateSessionModule.ContextEndRequest(Object sender, EventArgs e) in D:\MyProject\trunk\Domain\Repositories\NHibernateSessionModule.cs:line 137
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
___________________________________
rabbitmq://localhost/FilesVersioning => Publisher did not confirm message
at MassTransit.Transports.RabbitMq.OutboundRabbitMqTransport.<>c__DisplayClass3.b__0(RabbitMqConnection connection) in d:\BuildAgent-02\work\aa063b4295dfc097\src\Transports\MassTransit.Transports.RabbitMq\OutboundRabbitMqTransport.cs:line 87
at MassTransit.Transports.ConnectionHandlerImpl`1.<>c__DisplayClass3.b__2() in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\ConnectionHandlerImpl.cs:line 91
at MassTransit.Transports.DefaultConnectionPolicy.Execute(Action callback) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\DefaultConnectionPolicy.cs:line 42
at MassTransit.Transports.ConnectionPolicyChainImpl.Next(Action callback) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\ConnectionPolicyChainImpl.cs:line 49
at MassTransit.Transports.ConnectOnFirstUsePolicy.Execute(Action callback) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\ConnectOnFirstUsePolicy.cs:line 34
at MassTransit.Transports.ConnectionPolicyChainImpl.Next(Action callback) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\ConnectionPolicyChainImpl.cs:line 49
at MassTransit.Transports.ConnectionHandlerImpl`1.Use(Action`1 callback) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\ConnectionHandlerImpl.cs:line 86
at MassTransit.Transports.RabbitMq.OutboundRabbitMqTransport.Send(ISendContext context) in d:\BuildAgent-02\work\aa063b4295dfc097\src\Transports\MassTransit.Transports.RabbitMq\OutboundRabbitMqTransport.cs:line 50
at MassTransit.Transports.Transport.Send(ISendContext context) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\Transport.cs:line 50
at MassTransit.Transports.Endpoint.Send[T](ISendContext`1 context) in d:\BuildAgent-02\work\aa063b4295dfc097\src\MassTransit\Transports\Endpoint.cs:line 110
___________________________________
rabbitmq://localhost/FilesVersioning => Publish not confirmed before channel closed
___________________________________
我在HttpModule中的Web请求结束时发送消息。
有谁知道这个错误意味着什么?
据我所知,我不会关闭与MassTransit相关的任何内容。
修改
据我所知,它抛出了这个lamda: https://github.com/phatboyg/MassTransit/blob/master/src/Transports/MassTransit.Transports.RabbitMq/OutboundRabbitMqTransport.cs#L51
EDIT2:
我像这样初始化服务总线:
var _bus = ServiceBusFactory.New(sbc =>
{
sbc.UseRabbitMq();
sbc.ReceiveFrom("rabbitmq://localhost/queue0");
sbc.ReceiveFrom("rabbitmq://localhost/queue1");
sbc.ReceiveFrom("rabbitmq://localhost/queue2");
sbc.Validate();
sbc.Subscribe(a => a.Handler<Item0>((msg, item) => new Item0Handler().Handle(msg)));
sbc.Subscribe(a => a.Handler<Item1>((msg, item) => new Item1Handler().Handle(msg)));
sbc.Subscribe(a => a.Handler<Item2>((msg, item) => new Item2Handler().Handle(msg)));
});
...我使用_bus
来发送和接收消息。
我是MassTransient的初学者,所以这个配置也可能是错的......
答案 0 :(得分:0)
行。问题似乎是我在一条总线上使用了很多输入队列(sbc.ReceiveFrom()
内的许多ServiceBusFactory.New()
次呼叫。)
最后,我创建了许多这样的公共汽车:
var _bus = ServiceBusFactory.New(sbc =>
{
sbc.UseRabbitMq();
sbc.ReceiveFrom("rabbitmq://localhost/queue0");
sbc.Validate();
sbc.Subscribe(a => a.Handler<Item0>((msg, item) => new Item0Handler().Handle(msg)));
sbc.Subscribe(a => a.Handler<Item1>((msg, item) => new Item1Handler().Handle(msg)));
sbc.Subscribe(a => a.Handler<Item2>((msg, item) => new Item2Handler().Handle(msg)));
});
var _bus2 = ServiceBusFactory.New(sbc =>
{
sbc.UseRabbitMq();
sbc.ReceiveFrom("rabbitmq://localhost/queue1");
sbc.Validate();
sbc.Subscribe(a => a.Handler<Item0>((msg, item) => new Item0Handler().Handle(msg)));
sbc.Subscribe(a => a.Handler<Item2>((msg, item) => new Item2Handler().Handle(msg)));
});