Giter Club home page Giter Club logo

masstransit's Introduction

MassTransit

MassTransit is a free, open-source distributed application framework for .NET. MassTransit makes it easy to create applications and services that leverage message-based, loosely-coupled asynchronous communication for higher availability, reliability, and scalability.

Mass Transit

MassTransit is Apache 2.0 licensed.

Documentation

Get started by reading through the documentation.

Build Status

Branch Status
master master
develop develop

MassTransit NuGet Packages

Package Name .NET .NET Standard .NET Framework
Main
MassTransit 6.0, 8.0 2.0 4.7.2
MassTransit.Abstractions 6.0, 8.0 2.0 4.7.2
MassTransit.Newtonsoft 6.0, 8.0 2.0 4.7.2
Other
MassTransit.Analyzers 2.0
MassTransit.Templates 6.0
MassTransit.SignalR 6.0, 8.0 4.7.2
MassTransit.Interop.NServiceBus 6.0, 8.0 2.0 4.7.2
MassTransit.TestFramework 6.0, 8.0 2.0 4.7.2
Monitoring
MassTransit.Prometheus 6.0, 8.0 2.0 4.7.2
Persistence
MassTransit.AmazonS3 6.0, 8.0 2.0 4.7.2
MassTransit.Azure.Cosmos 6.0, 8.0 2.0 4.7.2
MassTransit.Azure.Storage 6.0, 8.0 2.0 4.7.2
MassTransit.Azure.Table 6.0, 8.0 2.0 4.7.2
MassTransit.Dapper 6.0, 8.0 2.0 4.7.2
MassTransit.DynamoDb 6.0, 8.0 2.0 4.7.2
MassTransit.EntityFrameworkCore 6.0, 8.0 2.0
MassTransit.EntityFramework 2.1 4.7.2
MassTransit.Marten 6.0, 8.0 2.0 4.7.2
MassTransit.MongoDb 6.0, 8.0 2.0 4.7.2
MassTransit.NHibernate 6.0, 8.0 2.0 4.7.2
MassTransit.Redis 6.0, 8.0 2.0 4.7.2
Scheduling
MassTransit.Hangfire 6.0, 8.0 2.0 4.7.2
MassTransit.Quartz 6.0, 8.0 2.0 4.7.2
Transports
MassTransit.ActiveMQ 6.0, 8.0 2.0 4.7.2
MassTransit.AmazonSQS 6.0, 8.0 2.0 4.7.2
MassTransit.Azure.ServiceBus.Core 6.0, 8.0 2.0 4.7.2
MassTransit.RabbitMQ 6.0, 8.0 2.0 4.7.2
MassTransit.SqlTransport.PostgreSQL 6.0, 8.0 2.0 4.7.2
MassTransit.SqlTransport.SqlServer 6.0, 8.0 2.0 4.7.2
MassTransit.WebJobs.EventHubs 6.0, 8.0 2.0 4.7.2
MassTransit.WebJobs.ServiceBus 6.0, 8.0 2.0 4.7.2
Riders
MassTransit.Kafka 6.0, 8.0 2.0 4.7.2
MassTransit.EventHub 6.0, 8.0 2.0 4.7.2

Discord

Get help live at the MassTransit Discord server.

alt Join the conversation

GitHub Issues

Pay attention

Please do not open an issue on GitHub, unless you have spotted an actual bug in MassTransit.

Use GitHub Discussions to ask questions, bring up ideas, or other general items. Issues are not the place for questions, and will either be converted to a discussion or closed.

This policy is in place to avoid bugs being drowned out in a pile of sensible suggestions for future enhancements and calls for help from people who forget to check back if they get it and so on.

Building from Source

  1. Install the latest .NET 8 SDK
  2. Clone the source down to your machine
    git clone https://github.com/MassTransit/MassTransit.git
  3. Run dotnet build

Contributing

  1. Turn off autocrlf
    git config core.autocrlf false
  2. Hack!
  3. Make a pull request

REQUIREMENTS

  • .NET 8 SDK

CREDITS

Logo Design by The Agile Badger

masstransit's People

Contributors

alexeyzimarev avatar andymac4182 avatar bytenik avatar dahlbyk avatar damirainullin avatar drusellers avatar et1975 avatar ferventcoder avatar gertjvr avatar greybird avatar haf avatar iwanowskidev avatar jacobpovar avatar jarroda avatar kevbite avatar lahma avatar maldworth avatar nikgovorov avatar noonamer avatar petedavis avatar phatboyg avatar rdalziel avatar rdalzielhymans avatar thejuan avatar timothymakkison avatar travisthetechie avatar ushenkodmitry avatar vermeeca avatar wuhqureshi avatar ynojima avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

masstransit's Issues

Consumer Factories being cached and not cleaned up after dispose

  1. Create a bus with components registered in Windsor
  2. Dispose of everything (this removes the registrations in Windsor).
  3. Create a new bus with a new container
  4. Crashing ensues because components cannot be found.

What's going on (I think) is that mass transit is keeping static references to the consumers and trying to resolve them in a container which is now no longer available (it was disposed in step 2). Taking a cursory look through the code I think this is happening in the ConsumerConnectorCache.

I'm running into this because my integration tests create a new windsor container each time, and the tests will run in isolation, but not together. The exception is a component not found exception coming from windsor, which goes away if I don't dispose of my container after each test (my current work around).

A possible (?) solution to this would be to clear the ConsumerConnectorCache when disposing of the bus, assuming that's what's causing this.

HttpContext StorageProvider Broken

The exception is being thrown regardless of whether the context is available or not at:

MassTransit.Context.HttpContextContextStorageProvider.set_SendContext(ISendContext value) in d:\BuildAgent-03\work\8d1373c869590c5b\src\MassTransit\Context\HttpContextContextStorageProvider.cs:line 46

Fix it PhatBoyG!

Pending: BeginSendRequest timeouts, web

Currently trying to get something that always fails.


        [HttpGet]
        public void IndexAsync(IndexViewModel model)
        {
            AsyncManager.OutstandingOperations.Increment();
            AsyncManager.Parameters["pingMessage"] = model.PingMessage;

            _logger.Info(string.Format("message {0}", model.PingMessage));

            Guid requestId = CombGuid.Generate();
            string ipAddress = Request.ServerVariables["REMOTE_ADDR"];

            _bus.GetEndpoint(new Uri("rabbitmq://localhost/PingServer"))
                .BeginSendRequest(new Ping(requestId),
                    _bus,
                    y => AsyncManager.OutstandingOperations.Decrement(), 
                    null, x =>
                    {
                        x.Handle<Pong>(
                            msg => AsyncManager.Sync(() => AsyncManager.Parameters["e"] = msg));
                        x.HandleTimeout(TimeSpan.FromSeconds(10),
                                        () => AsyncManager.Sync(() => AsyncManager.Parameters["timeout"] = true));
                    });
        }

        public ActionResult IndexCompleted(string username, Pong e, string returnUrl, bool timeout,
                                           IEnumerable<Tuple<string, string>> errors)
        {
            if (timeout)
            {
                ModelState.AddModelError("timeout",
                                         "Unfortunately the ping service didn't have the good grace to respond on time "
                                         + "- unfortunately we seem to be overloaded right now, please try again right now...");

                TempData["ModelState"] = ModelState;
                return RedirectToAction("Timeout");
            }

            return RedirectToAction("Success");
        }

And the endpoint just does:

class PingHandler
        : Consumes<Ping>.All
    {
        private static int _counter;

        public void Consume(Ping message)
        {
            Console.WriteLine(string.Format("Got ping#{0}|{1}", Interlocked.Increment(ref _counter), message.CorrelationId));
            Bus.Instance.Context(x => x.Respond(new Pong(message.CorrelationId)));
        }
    }

In PongClient, > HttpApplication:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterRoutes(RouteTable.Routes);

    BasicConfigurator.Configure();

    Bus.Initialize(sbc =>
        {
            sbc.ReceiveFrom(_endpoint);
            sbc.UseRabbitMqRouting();
        });
}

In PingServer, Program:

private void ConfigureWindsor(string endpoint)
{
    _windsor = new WindsorContainer();
    _windsor.AddFacility<TypedFactoryFacility>();
    _windsor.Register(Component.For<PingHandler>().LifeStyle.Transient);

    Bus.Initialize(sbc =>
        {
            sbc.ReceiveFrom(endpoint);
            sbc.UseRabbitMqRouting();
            sbc.Subscribe(s => s.LoadFrom(_windsor));
        });
}

RabbitMQ has guest/guest admin password but there's no incoming binding to the PongClient queue.

Exception while disposing ServiceBus on mono

Running the starbucks sample using rabbitmq on ubuntu 11.10 with mono 2.10.5 throws an exception because the method is not implemented in mono:

https://github.com/mono/mono/blob/master/mcs/class/System/System.Diagnostics/PerformanceCounter.cs#L380

Exception details:
System.NotImplementedException: The requested feature is not implemented.
at System.Diagnostics.PerformanceCounter.RemoveInstance () [0x00000] in :0
at (wrapper remoting-invoke-with-check) System.Diagnostics.PerformanceCounter:RemoveInstance ()
at MassTransit.Monitoring.InstancePerformanceCounter.Close () [0x00000] in :0
at MassTransit.Monitoring.InstancePerformanceCounter.Dispose (Boolean disposing) [0x00000] in :0
at MassTransit.Monitoring.InstancePerformanceCounter.Dispose () [0x00000] in :0
at MassTransit.Monitoring.ServiceBusInstancePerformanceCounters.Close () [0x00000] in :0
at MassTransit.Monitoring.ServiceBusInstancePerformanceCounters.Dispose (Boolean disposing) [0x00000] in :0
at MassTransit.Monitoring.ServiceBusInstancePerformanceCounters.Dispose () [0x00000] in :0
at MassTransit.ServiceBus.Dispose (Boolean disposing) [0x00000] in :0
at MassTransit.ServiceBus.Dispose () [0x00000] in :0
at Starbucks.Barista.BaristaService.Stop () [0x00000] in :0

This isn't an issue with MassTransit per say, but would be nice to work around it somehow, as it seems to stop the service from exiting properly when running in mono.

Cannot use Generic Messages with loopback service

I'm getting the following exception when trying to send a generic message over a loopback queue. This was working in 2.0.0.4, but is now broken. I'm looking at the commits to see what could be causing it and will update the bug report if I find anything.

   at System.Linq.Expressions.Expression.ValidateMethodInfo(MethodInfo method)
   at System.Linq.Expressions.Expression.Call(Expression instance, MethodInfo method, IEnumerable`1 arguments)
   at System.Linq.Expressions.Expression.Call(Expression instance, MethodInfo method, Expression[] arguments)
   at Magnum.Reflection.ReflectiveVisitorBase`1.<>c__DisplayClass9.<GetInvoker>b__7() in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 134
   at Magnum.Extensions.ExtensionsToDictionary.Retrieve[TKey,TValue](IDictionary`2 dictionary, TKey key, Func`1 valueProvider) in d:\Builds\MassTransit-Magnum\src\Magnum\Extensions\ExtensionsToDictionary.cs:line 74
   at Magnum.Reflection.ReflectiveVisitorBase`1.GetInvoker(Int32 key, Func`1 getMethodInfo) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 123
   at Magnum.Reflection.ReflectiveVisitorBase`1.DispatchVisit(Object obj) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 97
   at Magnum.Reflection.ReflectiveVisitorBase`1.Visit(Object obj, Func`1 action) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 72
   at MassTransit.Pipeline.Inspectors.PipelineInspectorBase`1.Inspect(Object sink, Func`1 inspectChildSinks) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Inspectors\PipelineInspectorBase.cs:line 38
   at MassTransit.Pipeline.Sinks.RequestMessageRouter`2.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\RequestMessageRouter.cs:line 40
   at MassTransit.Pipeline.Sinks.MessageRouter`1.<>c__DisplayClass5.<Inspect>b__4(IPipelineSink`1 x) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at System.Linq.Enumerable.All[TSource](IEnumerable`1 source, Func`2 predicate)
   at MassTransit.Pipeline.Sinks.MessageRouter`1.<>c__DisplayClass5.<Inspect>b__3() in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at Magnum.Reflection.ReflectiveVisitorBase`1.Visit(Object obj, Func`1 action) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 77
   at MassTransit.Pipeline.Inspectors.PipelineInspectorBase`1.Inspect(Object sink, Func`1 inspectChildSinks) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Inspectors\PipelineInspectorBase.cs:line 38
   at MassTransit.Pipeline.Sinks.MessageRouter`1.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at MassTransit.Pipeline.Sinks.InboundConvertMessageSink`1.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\InboundConvertMessageSink.cs:line 52
   at MassTransit.Pipeline.Sinks.MessageRouter`1.<>c__DisplayClass5.<Inspect>b__4(IPipelineSink`1 x) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at System.Linq.Enumerable.All[TSource](IEnumerable`1 source, Func`2 predicate)
   at MassTransit.Pipeline.Sinks.MessageRouter`1.<>c__DisplayClass5.<Inspect>b__3() in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at Magnum.Reflection.ReflectiveVisitorBase`1.Visit(Object obj, Func`1 action) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 77
   at MassTransit.Pipeline.Inspectors.PipelineInspectorBase`1.Inspect(Object sink, Func`1 inspectChildSinks) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Inspectors\PipelineInspectorBase.cs:line 38
   at MassTransit.Pipeline.Sinks.MessageRouter`1.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at MassTransit.Pipeline.InboundMessagePipeline.<>c__DisplayClass1.<Inspect>b__0() in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\InboundMessagePipeline.cs:line 38
   at Magnum.Reflection.ReflectiveVisitorBase`1.Visit(Object obj, Func`1 action) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 77
   at MassTransit.Pipeline.Inspectors.PipelineInspectorBase`1.Inspect(Object sink, Func`1 inspectChildSinks) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Inspectors\PipelineInspectorBase.cs:line 38
   at MassTransit.Pipeline.InboundMessagePipeline.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\InboundMessagePipeline.cs:line 38
   at MassTransit.Pipeline.Configuration.InboundRequestMessageRouterConfigurator.FindOrCreate[TMessage]() in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Configuration\InboundRequestMessageRouterConfigurator.cs:line 35
   at MassTransit.SubscriptionConnectors.RequestHandlerSubscriptionConnector`1.Connect(IInboundPipelineConfigurator configurator, String requestId, HandlerSelector`1 handler) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Configuration\SubscriptionConnectors\RequestHandlerSubscriptionConnector.cs:line 36
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.<>c__DisplayClass2`1.<Handle>b__1(IInboundPipelineConfigurator x) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 72
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.<>c__DisplayClass8.<Build>b__6(UnsubscribeAction x, Func`2 handlerConfigurator) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 92
   at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.<Build>b__4(IInboundPipelineConfigurator configurator) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 92
   at MassTransit.Pipeline.InboundMessagePipeline.Configure[TResult](Func`2 configureCallback) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\InboundMessagePipeline.cs:line 48
   at MassTransit.ServiceBus.Configure(Func`2 configure) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\ServiceBus.cs:line 198
   at Elliott.Risque.Platform.Integration.Tests.Stories.Support.NonDisposingServiceBus.Configure(Func`2 configure) in C:\dev\elliott\Elliott.Risque\src\Elliott.Risque.Platform.Integration.Tests\Stories\Support\NonDisposingServiceBus.cs:line 33
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.Build(IServiceBus bus) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 88
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.Create(IServiceBus bus, TRequest message, Action`1 configureCallback) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 107
   at MassTransit.RequestResponseExtensions.PublishRequest[TRequest](IServiceBus bus, TRequest message, Action`1 configureCallback) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponseExtensions.cs:line 26

BeginRequest doesn't work after beta3+changesets upgrade to GA

Method Boolean Inspect[IConsumeContext`1,MyEvent,TK](MassTransit.Pipeline.Sinks.RequestMessageRouter`2[MassTransit.IConsumeContext`1[Domain.Events.MyEvent],Domain.Events.MyEvent]) contains generic parameters.

StackTrace:

at System.Linq.Expressions.Expression.ValidateMethodInfo(MethodInfo method)
   at System.Linq.Expressions.Expression.Call(Expression instance, MethodInfo method, IEnumerable`1 arguments)
   at Magnum.Reflection.ReflectiveVisitorBase`1.<>c__DisplayClass9.<GetInvoker>b__7() in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 134
   at Magnum.Extensions.ExtensionsToDictionary.Retrieve[TKey,TValue](IDictionary`2 dictionary, TKey key, Func`1 valueProvider) in d:\Builds\MassTransit-Magnum\src\Magnum\Extensions\ExtensionsToDictionary.cs:line 74
   at Magnum.Reflection.ReflectiveVisitorBase`1.GetInvoker(Int32 key, Func`1 getMethodInfo) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 123
   at Magnum.Reflection.ReflectiveVisitorBase`1.DispatchVisit(Object obj) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 97
   at Magnum.Reflection.ReflectiveVisitorBase`1.Visit(Object obj, Func`1 action) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 72
   at MassTransit.Pipeline.Inspectors.PipelineInspectorBase`1.Inspect(Object sink, Func`1 inspectChildSinks) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Inspectors\PipelineInspectorBase.cs:line 38
   at MassTransit.Pipeline.Sinks.RequestMessageRouter`2.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\RequestMessageRouter.cs:line 40
   at MassTransit.Pipeline.Sinks.MessageRouter`1.<>c__DisplayClass5.<Inspect>b__4(IPipelineSink`1 x) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at System.Linq.Enumerable.All[TSource](IEnumerable`1 source, Func`2 predicate)
   at MassTransit.Pipeline.Sinks.MessageRouter`1.<>c__DisplayClass5.<Inspect>b__3() in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at Magnum.Reflection.ReflectiveVisitorBase`1.Visit(Object obj, Func`1 action) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 77
   at MassTransit.Pipeline.Inspectors.PipelineInspectorBase`1.Inspect(Object sink, Func`1 inspectChildSinks) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Inspectors\PipelineInspectorBase.cs:line 38
   at MassTransit.Pipeline.Sinks.MessageRouter`1.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at MassTransit.Pipeline.Sinks.InboundConvertMessageSink`1.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\InboundConvertMessageSink.cs:line 52
   at MassTransit.Pipeline.Sinks.MessageRouter`1.<>c__DisplayClass5.<Inspect>b__4(IPipelineSink`1 x) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at System.Linq.Enumerable.All[TSource](IEnumerable`1 source, Func`2 predicate)
   at MassTransit.Pipeline.Sinks.MessageRouter`1.<>c__DisplayClass5.<Inspect>b__3() in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at Magnum.Reflection.ReflectiveVisitorBase`1.Visit(Object obj, Func`1 action) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 77
   at MassTransit.Pipeline.Inspectors.PipelineInspectorBase`1.Inspect(Object sink, Func`1 inspectChildSinks) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Inspectors\PipelineInspectorBase.cs:line 38
   at MassTransit.Pipeline.Sinks.MessageRouter`1.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\MessageRouter.cs:line 56
   at MassTransit.Pipeline.InboundMessagePipeline.<>c__DisplayClass1.<Inspect>b__0() in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\InboundMessagePipeline.cs:line 38
   at Magnum.Reflection.ReflectiveVisitorBase`1.Visit(Object obj, Func`1 action) in d:\Builds\MassTransit-Magnum\src\Magnum\Reflection\ReflectiveVisitorBase.cs:line 77
   at MassTransit.Pipeline.Inspectors.PipelineInspectorBase`1.Inspect(Object sink, Func`1 inspectChildSinks) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Inspectors\PipelineInspectorBase.cs:line 38
   at MassTransit.Pipeline.InboundMessagePipeline.Inspect(IPipelineInspector inspector) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\InboundMessagePipeline.cs:line 38
   at MassTransit.Pipeline.Configuration.InboundRequestMessageRouterConfigurator.FindOrCreate[TMessage]() in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Configuration\InboundRequestMessageRouterConfigurator.cs:line 35
   at MassTransit.SubscriptionConnectors.RequestHandlerSubscriptionConnector`1.Connect(IInboundPipelineConfigurator configurator, String requestId, HandlerSelector`1 handler) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Configuration\SubscriptionConnectors\RequestHandlerSubscriptionConnector.cs:line 36
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.<>c__DisplayClass2`1.<Handle>b__1(IInboundPipelineConfigurator x) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 72
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.<>c__DisplayClass8.<Build>b__6(UnsubscribeAction x, Func`2 handlerConfigurator) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 92
   at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.<Build>b__4(IInboundPipelineConfigurator configurator) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 92
   at MassTransit.Pipeline.InboundMessagePipeline.Configure[TResult](Func`2 configureCallback) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\InboundMessagePipeline.cs:line 48
   at MassTransit.ServiceBus.Configure(Func`2 configure) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\ServiceBus.cs:line 198
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.Build(IServiceBus bus) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 88
   at MassTransit.RequestResponse.Configurators.RequestConfiguratorImpl`1.Create(IServiceBus bus, TRequest message, Action`1 configureCallback) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponse\Configurators\RequestConfiguratorImpl.cs:line 105
   at MassTransit.RequestResponseExtensions.BeginSendRequest[TRequest](IEndpoint endpoint, TRequest message, IServiceBus bus, AsyncCallback callback, Object state, Action`1 configureCallback) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\RequestResponseExtensions.cs:line 78

Worked in beta3.

NullReferenceException on Send if RMQ connection fails

13404 [12] INFO MassTransit.Messages (null) - SEND:rabbitmq://localhost/PongClient:Pong:
13407 [15] INFO MassTransit.Messages (null) - SEND:rabbitmq://localhost/PongClient:Pong:
13449 [11] INFO MassTransit.Messages (null) - SEND:rabbitmq://localhost/PongClient:Fault`2:
13449 [6] INFO MassTransit.Messages (null) - SEND:rabbitmq://localhost/PongClient:Fault`2:
13474 [11] ERROR MassTransit.Context.ServiceBusReceiveContext (null) - 'System.Action`1[[MassTransit.IConsumeContext, Ma
ssTransit, Version=2.0.1.0, Culture=neutral, PublicKeyToken=null]]' threw an exception consuming message 'MassTransit.Co
ntext.ReceiveContext'
MassTransit.Exceptions.SendException: rabbitmq://localhost/PongClient => An exception was thrown during Send ---> System
.NullReferenceException: Object reference not set to an instance of an object.
   at MassTransit.Transports.RabbitMq.OutboundRabbitMqTransport.<>c__DisplayClass2.<Send>b__1(RabbitMqConnection connect
ion) in d:\BuildAgent-02\work\8d1373c869590c5b\src\Transports\MassTransit.Transports.RabbitMq\OutboundRabbitMqTransport.
cs:line 51
   at MassTransit.Transports.ConnectionHandlerImpl`1.<>c__DisplayClass3.<Use>b__2() in d:\BuildAgent-02\work\8d1373c8695
90c5b\src\MassTransit\Transports\ConnectionHandlerImpl.cs:line 81
   at MassTransit.Transports.DefaultConnectionPolicy.Execute(Action callback) in d:\BuildAgent-02\work\8d1373c869590c5b\
src\MassTransit\Transports\DefaultConnectionPolicy.cs:line 34
   at MassTransit.Transports.ConnectionPolicyChainImpl.Next(Action callback) in d:\BuildAgent-02\work\8d1373c869590c5b\s
rc\MassTransit\Transports\ConnectionPolicyChainImpl.cs:line 49
   at MassTransit.Transports.ConnectOnFirstUsePolicy.Execute(Action callback) in d:\BuildAgent-02\work\8d1373c869590c5b\
src\MassTransit\Transports\ConnectOnFirstUsePolicy.cs:line 34
   at MassTransit.Transports.ConnectionPolicyChainImpl.Next(Action callback) in d:\BuildAgent-02\work\8d1373c869590c5b\s
rc\MassTransit\Transports\ConnectionPolicyChainImpl.cs:line 49
   at MassTransit.Transports.ConnectionPolicyChainImpl.Execute(Action callback) in d:\BuildAgent-02\work\8d1373c869590c5
b\src\MassTransit\Transports\ConnectionPolicyChainImpl.cs:line 54
   at MassTransit.Transports.ConnectionHandlerImpl`1.Use(Action`1 callback) in d:\BuildAgent-02\work\8d1373c869590c5b\sr
c\MassTransit\Transports\ConnectionHandlerImpl.cs:line 81
   at MassTransit.Transports.RabbitMq.OutboundRabbitMqTransport.Send(ISendContext context) in d:\BuildAgent-02\work\8d13
73c869590c5b\src\Transports\MassTransit.Transports.RabbitMq\OutboundRabbitMqTransport.cs:line 47
   at MassTransit.Transports.Transport.Send(ISendContext context) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTran
sit\Transports\Transport.cs:line 51
   at MassTransit.Transports.Endpoint.Send[T](ISendContext`1 context) in d:\BuildAgent-02\work\8d1373c869590c5b\src\Mass
Transit\Transports\Endpoint.cs:line 79
   --- End of inner exception stack trace ---
   at MassTransit.Transports.Endpoint.Send[T](ISendContext`1 context) in d:\BuildAgent-02\work\8d1373c869590c5b\src\Mass
Transit\Transports\Endpoint.cs:line 88
   at MassTransit.SendExtensions.Send[T](IEndpoint endpoint, T message, Action`1 contextCallback) in d:\BuildAgent-02\wo
rk\8d1373c869590c5b\src\MassTransit\SendExtensions.cs:line 49
   at MassTransit.Context.ReceiveContext.Respond[T](T message, Action`1 contextCallback) in d:\BuildAgent-02\work\8d1373
c869590c5b\src\MassTransit\Context\ReceiveContext.cs:line 178
   at MassTransit.Context.ConsumeContext`1.Respond[T](T message, Action`1 contextCallback) in d:\BuildAgent-02\work\8d13
73c869590c5b\src\MassTransit\Context\ConsumeContext.cs:line 161
   at MassTransit.MessageContextExtensions.Respond[T](IConsumeContext context, T message) in d:\BuildAgent-02\work\8d137
3c869590c5b\src\MassTransit\Context\MessageContextExtensions.cs:line 100
   at PingServer.PingHandler.<>c__DisplayClass1.<Consume>b__0(IConsumeContext x) in D:\code\throw-away\PingServer\PingSe
rver\Program.cs:line 89
   at MassTransit.Context.ContextStorage.Context(Action`1 contextCallback) in d:\BuildAgent-02\work\8d1373c869590c5b\src
\MassTransit\Context\ContextStorage.cs:line 102
   at MassTransit.ContextExtensions.Context(IServiceBus bus, Action`1 contextCallback) in d:\BuildAgent-02\work\8d1373c8
69590c5b\src\MassTransit\Context\ContextExtensions.cs:line 44
   at PingServer.PingHandler.Consume(Ping message) in D:\code\throw-away\PingServer\PingServer\Program.cs:line 89
   at MassTransit.Pipeline.Sinks.ConsumerMessageSink`2.<>c__DisplayClass1.<Selector>b__0(IConsumeContext`1 context) in d
:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\ConsumerMessageSink.cs:line 55
   at MassTransit.Pipeline.Sinks.InboundConvertMessageSink`1.<>c__DisplayClass2.<>c__DisplayClass4.<Enumerate>b__1(ICons
umeContext x) in d:\BuildAgent-02\work\8d1373c869590c5b\src\MassTransit\Pipeline\Sinks\InboundConvertMessageSink.cs:line

Repro:
Start the PongService. Terminate it without allowing it to shutdown properly.
Start it again directly afterwards, before RMQ has decided the old connection to be dead.
Null ref ex.

Expected behaviour:
First of all; exponential-backoff + logging of this from trying to connect, or something like circuit breaker pattern.
If, after some configurable connection timeout it still won't connect, a typed exception that it cannot connect.

Failing test on master & develop

MassTransit.Tests.Timeouts.When_scheduling_a_timeout_for_a_new_id.The_timeout_should_be_added_to_the_storage
Expected: True
But was: False

This keeps me from building it out of the box.

Make RuntimeServices 32-bit and use SQL Compact Framework

In order to ease out-of-the-box deployment of the RuntimeServices, build the project in 32-bit and use the 32-bit version of the compact framework to enable instant usage without requiring SQL Server to be installed. If by chance the latest SQL Compact Framework support Any CPU (instead of separate builds for 32-bit and 64-bit as before), then the platform switch to 32-bit only is not needed.

The server clearly does not need a 64-bit address space, so specifying 32-bit if it makes deployment easier makes good sense.

RabbitMQ: Handle closing of queue

System.IO.EndOfStreamException was caught
Message=SharedQueue closed
Source=RabbitMQ.Client
StackTrace:
at RabbitMQ.Util.SharedQueue.EnsureIsOpen() in d:\Home\rabbitmq-dotnet-client\projects\client\RabbitMQ.Client\src\util\SharedQueue.cs:line 81
at RabbitMQ.Util.SharedQueue.Dequeue(Int32 millisecondsTimeout, Object& result) in d:\Home\rabbitmq-dotnet-client\projects\client\RabbitMQ.Client\src\util\SharedQueue.cs:line 192
at MassTransit.Transports.RabbitMq.InboundRabbitMqTransport.Receive(Func`2 callback, TimeSpan timeout) in f:\code\oss\MassTransit\src\Transports\MassTransit.Transports.RabbitMq\InboundRabbitMqTransport.cs:line 44
InnerException:

Repro:

  1. Start listening
  2. Interrupt your network
  3. Infinite loop in InboundRabbitMqTransport.cs.

$> _connection.ShutdownReport()
Count = 1
[0]: {Message: Unexpected connection closure: AMQP close-reason, initiated by Library, code=541, text="Unexpected Exception", classId=0, methodId=0, cause=System.IO.IOException: Unable to read data from the transport connection: An established connection was aborted by the software in your host machine. ---> System.Net.Sockets.SocketException: An established connection was aborted by the software in your host machine
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at RabbitMQ.Client.Impl.Frame.ReadFrom(NetworkBinaryReader reader) in d:\Home\rabbitmq-dotnet-client\projects\client\RabbitMQ.Client\src\client\impl\Frame.cs:line 104
at RabbitMQ.Client.Impl.SocketFrameHandler_0_9.ReadFrame() in d:\Home\rabbitmq-dotnet-client\projects\client\RabbitMQ.Client\src\client\impl\SocketFrameHandler_0_9.cs:line 133
at RabbitMQ.Client.Impl.ConnectionBase.MainLoopIteration() in d:\Home\rabbitmq-dotnet-client\projects\client\RabbitMQ.Client\src\client\impl\ConnectionBase.cs:line 638
at RabbitMQ.Client.Impl.ConnectionBase.MainLoop() in d:\Home\rabbitmq-dotnet-client\projects\client\RabbitMQ.Client\src\client\impl\ConnectionBase.cs:line 587}

ReplyCode = 541
ReplyText = "Unexpected Exception"

StructureMap integrations

Here's how I do it. I don't use the StructureMap-integration in mt, since I
have some handlers consuming multiple messages, I need the Distinct() below:

//Scanning
scan.Assembly(messageHandlersAssembly);
scan.AddAllTypesOf(typeof(IConsumer));

//Subscribing
var concreteTypes = container.Model
.InstancesOf()
.Select(i => i.ConcreteType)
.Distinct()
.ToList();

       foreach (var type in concreteTypes)
       {
           _log.DebugFormat(@"Subscribing MassTransit consumer {0}",

type.Name);
configurator.Consumer(type, t => container.GetInstance(t));
}

/Peter

RabbitMqServiceBusExtensions.GetEndpoint(IServiceBus)

/// <summary>
/// Returns the endpoint for the specified message type using the default
/// exchange/queue convention for naming.
/// 
/// TODO: FIX!!!
/// 
/// </summary>
/// <param name="bus">The bus instance used to resolve the endpoint</param>
/// <param name="messageType">The message type to convert to a URI</param>
/// <returns>The IEndpoint instance, resolved from the service bus</returns>
public static IEndpoint GetEndpoint(this IServiceBus bus, Type messageType)
{
    return null;
}

Multiples boxes

I try run the Distributor, with Activator in one box, and the worker in other box, the worker don't receive messages.

Running Activator and Worker in same box everything work!

Mixing transactional and non transactional endpoints is not possible

It is currently not possible to mix transactional and non transactional endpoints in one ESB.

With...

     EndpointConfigurator.Defaults(x => { x.CreateTransactionalQueues = true; });

you define the tractionality of every endpoint

some details:

  • Endpoint has a transport.
  • That transport gets configured with the transactional value of the
    EndpointConfigurator's EndpointDefaults value in every case. It does
    not respect the query parameter (?tx=true). So it creates an
    NonTransactionalMsmqTransport.
  • The EndpointAdress respects the query parameter and shows that it is
    transactional
  • In the end the Enpoint gets instantiated with an EndpointAdress that
    shows it is transactional and a transport, which is not.

I guess, that's not by design, is it?

DynamicImpl

Hello,
I am creating my distributors and workers consuming an interface, and
not directly a class.

When it will consume the namespace of the class that comes in receives
a message .DynamicImpl. and conversions to the type contrete not work,
a proxy is generated when the message is sent?

Suggestion: create a sample MT manifest for puppet

It could set up a RabbitMQ server, create a vhost, a user+password combo, a certificate authority, RMQ's SSL bindings and a mono project (file resources) in a chosen user directory, configured for the above RMQ server + SSL + recognizing the CA's fingerprint.

Running this manifest would scaffold a very secure infrastructure quickly. Puppet standalone could be used:
http://www.puppetlabs.com/blog/deploying-puppet-in-client-server-standalone-and-massively-scaled-environments/

Add per-endpoint serializer selection via Content-Type Header

The new Xml/Json/Bson serializer adds a Content-Type header to the message. The old serializers now do as well. Make it so that the endpoint detects the serialization method used as the message is received, allowing it to be deserialized using the proper serializer. If a response is sent back to the source endpoint, use that same serializer to send it back so that it can be properly decoded by the originating system (which might support an older serializer).

NOTE: Assuming VersionOneXml if no content type is specified, and possibly do a check to see if it is binary as well.

Have MT build follow semver

With this, you would publish a new build/patch number for each beta, so you'd have MassTransit 2.0.467 as the 'beta 3' release for example. With this, if I create another build with my own fixes I can give it number 2.0.468, because your next beta would be something like 2.0.589, due to how the build number is monotonically increasing per build.

The revision number should be used to distinguish between builds from the same source code and as such could be based on the number if seconds into the month or something like that.

Memory leak issues

We have a process that was created with the .8 version, and we are
having major memory leak issues. I tried to upgrade to 2.0, but the
differences in versions are breaking changes for us.

I have tried to do a test of the 2.0 version to see if it fixes the
problem, and it appears that every time messages are added/processed,
the memory just keep going up, and not releasing. Here is my simple
example. I have even tried using an instance instead of the
singleton.

    [STAThread] 
    public static void Main(string[] args) 
    { 
        Bus.Initialize(sbc => 
        { 
            sbc.UseMsmq(); 
            sbc.VerifyMsmqConfiguration(); 
            //sbc.UseMulticastSubscriptionClient(); 
            sbc.ReceiveFrom("msmq://localhost/sendalert"); 
            sbc.Subscribe(subs => 
            { 
                subs.Handler<SendAlertCommand>(msg => 
                    { 
                        Console.WriteLine("Alert"); 
                        msg = null; 
                    }); 
            }); 


        }); 


        _StartupSendAlert(); 
        Console.Read(); 
    } 
    private static void _StartupSendAlert() 
    { 


        var headers = new Headers(); 
        headers.Items = new List<Header> { 
                    new Header { Key= "VendorNumber", Value = 

"044822"},
new Header { Key= "HO", Value = "1"},
};
for (int i = 0; i < 10000; i++)
{
AddMessage(headers);
}
}

    public static void AddMessage(Headers headers) 
    { 
        Bus.Instance.Publish(new SendAlertCommand { EmailBody = 

"Test", Headers = headers });
}

I have the project zipped to help with the problem.

Make it easier to debug messages that can't be deserialized

I had a message that didn't have a default constructor and it wasn't obvious why an endpoint wasn't receiving the message. Obviously you can't deserialize a class with no default constructor. My fault but would have been nice to have it presented in an obvious way rather than silently swallowed.

Missing tag for 2.0GA

I would have thought this wouldn't be missed this time...

It's quite time consuming to hunt down the precise commit that you used to build that code, you know.

Upgrade Dependencies

Currently the project is depending on old versions of StructureMap and NHibernate. It would be nice if these were upgraded to use the latest versions.

I'm sure it's using older versions of other dependencies, as well.

Suggestion: formalize 2.0's routing spec (queue names) and message format

I have this crazy idea that developers should be allowed in the long run to create services in almost any language they wish. One thing that could make this come true is if there's a common denominator for communication, like MT is.

I get the feeling that MT itself is rather big, but in its core, it's about the routing of messages to the correct queues with the correct topics and meta-data in the correct envelope. If I were to use, e.g. Haskell, for a spike with the AMQP connector for Haskell, how would I know which queue to send to? (well, I could just look up the queue name for one) And how would I know the envelope required for MT to pick the message up? (this would require me to send a message and use abduction to distil the format into code)

Hence; this issue is about just writing down the pieces required in a message for it to be routed correctly to its receivers for the three cases:

  • A request-reply communication
  • A pub-sub such,
  • A saga such

For these things:

  • Envelope format, optional properties, required properties
  • Exchanges to send to for e.g. RabbitMQ - a spec of the naming strategies used to create those.
  • Standard encryption algorithm to use
  • Anything else? (ignoring error-queues and health monitoring etc at the moment)

Missing docs in readthedocs on Distributor

  • What is the distributor?
  • How do I set up workers?
  • How can I alter the scheduling algo in use? Can I alter it at all?
  • Does the distributor only schedule inside of a single bus, or does it work across the network?
  • Can I use the distributor as a router inside of a service bus that would serve similar to a gateway/message broker?

possisbility of removing dependency on log4net

Some points on log4net
-last released 19 Apr 2006 https://issues.apache.org/jira/browse/LOG4NET#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel
-160 open issue 7 of them blockers
https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+LOG4NET+AND+status+%3D+Open+ORDER+BY+priority+DESC&mode=hide

While most of the issues with log4net are well documented on the web it is a pain to have to work around them.

Is possible to move over to NLog or support a pluggable logging framework?

Some of the unit tests in MassTransit.Transports.Msmq.Tests are incorrect

A number of the tests involved in testing the Transactional Msmq endpoint are incorrect. They appear to be testing the functionality of a non-transactional queue instead.

In particular:

in As_a_ServiceBus_working_with_an_endpoint.cs

It_should_leave_the_message_in_the_queue_if_an_exception_is_thrown() is checking that the message is NOT in the queue instead of making sure it is still there.

It_should_not_rollback_a_send_if_an_exception_is_thrown() should be checking the send IS rolled back in a transactional queue

There are also a number of tests that check to make sure a message is moved to the error queue when a consumer throws an exception. They shold be checking the message is retried 5 times first.

Deserialization Exception

Hello 

Before I talk about a problem, I say that I will soon go up in a full version of the git documentation in Mass Transit in pt-br 

Now I have a problem in the deserialization of messages. I have the following scenario:

public interface IFriendlyFieldValue
{
bool IsNull { get; }
object Value { get; set; }
string FieldName { get; set; }
NameValueDictionary ValueDictionary { get; set; }
FieldDefinitionList FieldDefinitionList { get; set; }
string GetString();
int GetInt32();
bool GetBoolean();
DateTime GetDateTime();
}

public interface IEntityProperty : IFriendlyFieldValue
{
bool Changed { get; }
FriendlyFieldValueBase OriginalValue { get; set; }
}

And in deserialization happens the following error.

System.TypeLoadException: Method 'GetString' in type ‘MyAssembly.DynamicImpl.IEntityProperty' from assembly 'ActiveViewers (...)' does not have an implementation.

Has anyone had any problems like that? And i try serialize/deserialize my class, using XmlSerializer, and works fine!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.