Question

I am using MassTransit and RaabbitMQ and when I try to send a message I get this error:

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 
___________________________________ 

I send the message at the end of a web request in a HttpModule.

Does anyone know what does this error mean?

As far as I know, I don't close anything related to MassTransit.

EDIT:

As far as I see, it throws in this lamda: https://github.com/phatboyg/MassTransit/blob/master/src/Transports/MassTransit.Transports.RabbitMq/OutboundRabbitMqTransport.cs#L51

EDIT2:

I initialize the service bus like that:

        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)));
        });

...and I use the _bus to both send and receive messages. I am a begginer in MassTransient, so this configuration might be wrong too...

Was it helpful?

Solution

OK. The problem seems to be that I was using many input queues for one bus (many sbc.ReceiveFrom() calls inside ServiceBusFactory.New()).

Finally, I created many buses like so:

    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)));
    });
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top