Put a breakpoint in the line logging the problem, see what it does.
On Fri, May 28, 2010 at 6:08 PM, Jan Limpens <[email protected]> wrote:
> Well, I tried to step into DefaultServiceBus.Transport_OnMessageArrived,
> but got an empty red circle, Rhino.ServiceBus is not loaded as a module
> during debugging. So maybe I make a very stupid mistake somewhere...
> I get the same messages, when there is no external service running, so the
> problem seems to be, not that the saga is not found, but that the host
> isn't.
> Further hints: I get 'better' results (saga found), when the debugger is
> attached, but I get the same message about the consumer of a sagamessage not
> being found, even when hitting an active breakpoint within the saga.
>
> This is weird shit!
>
> Let's see
>
> In Global.asax.cs
>
> private DefaultHost _salesOrdersHost;
>
> // runs and exits nicely
> private void RegisterAndStartMessageBusHost(IWindsorContainer container)
> {
> container.Register(
> Component
> .For<IMessageModule>()
> .ImplementedBy<UnitOfWorkMessageModule>()
> );
>
> var endpoint = Settings.Default.MessageQueueEndpoint;
>
> PrepareQueues.Prepare(endpoint, QueueType.Standard);
> _salesOrdersHost = new DefaultHost();
> _salesOrdersHost.BusConfiguration(c => c.Bus(endpoint)
> .Receive(typeof(StartOrderSaga).Namespace, endpoint)
> .Receive(typeof(OrderCreated).Namespace,
> endpoint)
> .Receive(typeof(SalesOrdersNamespaceProvider).Namespace,
> endpoint)
> .Threads(1));
> _salesOrdersHost.Start<SalesOrdersServiceBootStrapper>();
> }
>
> and the boot strapper looks like this:
>
> public class SalesOrdersServiceBootStrapper
> : AbstractBootStrapper
> {
> protected override void ConfigureContainer()
> {
> base.ConfigureContainer();
> container.AddFacility("logging", new
> LoggingFacility(LoggerImplementation.Log4net));
>
> container.Register(
> Component
> .For<IMessageModule>()
> .ImplementedBy<UnitOfWorkMessageModule>()
> );
>
> container.Kernel.Resolver
> .AddSubResolver(new QueryableResolver(container.Kernel));
>
> container
> .Register(Component
> .For(typeof(IDao<,>))
> .ImplementedBy(typeof(DomainDao<,>))
> );
>
> container.Register(
> Component
> .For(typeof(ISagaPersister<>))
> .ImplementedBy(typeof(NHibernateSagaPersister<>))
> );
>
> var windsorServiceLocator = new
> WindsorServiceLocator(container);
> ServiceLocator.SetLocatorProvider(() => windsorServiceLocator);
> DomainEvents.EventContainer = new
> ServiceBusEventResolver(container.Kernel);
> }
>
> Looks not suspicious to me...
>
> both starbucks.exe and the nservicebus pubsub example run happily on my
> system.
>
>
> On Fri, May 28, 2010 at 10:29 AM, Ayende Rahien <[email protected]> wrote:
>
>> My suggestion: put a breakpoint when you can find a consumer for the saga
>> and then try to see why you aren't getting it
>>
>>
>> On Fri, May 28, 2010 at 4:05 PM, Jan Limpens <[email protected]>wrote:
>>
>>> Well, it's working sometimes - and I am getting no complaints from
>>> Windsor.
>>> Also the Saga has no direct dependencies, here I am resolving my services
>>> via ServiceLocator (I persist it using NHibernate, so I the saga does not
>>> come from a Windsor aware place). But in the cases where it does not work,
>>> it never comes to using the locator at all. It (whatever this is) dies a
>>> quiet death before that. And then it works again and then it does not.
>>>
>>>
>>>
>>> On Fri, May 28, 2010 at 4:47 AM, Ayende Rahien <[email protected]>wrote:
>>>
>>>> Hm,
>>>> There shouldn't be any scenario where StartSagaOrder (InitiateBy)
>>>> doesn't work.
>>>> Unless... we use Windsor, and that won't give us any component that
>>>> cannot be resolved.
>>>> Is there a dependency there that is missing?
>>>>
>>>>
>>>> On Fri, May 28, 2010 at 4:31 AM, Jan Limpens <[email protected]>wrote:
>>>>
>>>>> No, the Saga is persisted by NHibernate and seemingly well. It loads
>>>>> its State with a left join and this part is working nicely so far.
>>>>>
>>>>> What I get are completely random
>>>>>
>>>>> 2010-05-27 22:17:19,204 [Rhino Service Bus Worker Thread #0] ERROR
>>>>> Rhino.ServiceBus.Impl.DefaultServiceBus - Got message
>>>>> Limpens.Messages.SalesOrders.OrderSaga.Commands.StartOrderSaga, but had no
>>>>> consumers for it
>>>>>
>>>>> exceptions for all different types of messages. This is sometimes so,
>>>>> some other times I can send my messages and they a re received, get passed
>>>>> to the nicely initialized Saga and so on. It changes from one minute to
>>>>> the
>>>>> other. I suspected that the problem could be with the web application
>>>>> hosting a DefaultHost and tried it out with Rhino.ServiceBus.Host.exe, but
>>>>> get the exact same result (-ing irregularities).
>>>>>
>>>>> I have this on two different machines, (win7 32 and 64), so it probably
>>>>> is not physics related. I am a bit unsure on how one could proceed.
>>>>>
>>>>> That's how I start it up:
>>>>>
>>>>> $clientName = "SomeClientName"
>>>>> $srvName = "SalesOrders Service " + $clientName
>>>>> .\Rhino.ServiceBus.Host.exe `
>>>>> /Action:"Debug" `
>>>>> /Name:$srvName `
>>>>> /BootStrapper:"Limpens.SalesOrders.Services.SalesOrdersServiceBootStrapper,
>>>>> Limpens.SalesOrders.Services" `
>>>>> /ConfigFile:"Limpens.SalesOrders.Services.dll.config" `
>>>>> /Host:"Rhino.ServiceBus.Hosting.DefaultHost, Rhino.ServiceBus" `
>>>>> /Assembly:"Limpens.SalesOrders.Services.dll"
>>>>>
>>>>> My config is like that:
>>>>>
>>>>> <?xml version="1.0" encoding="utf-8" ?>
>>>>> <configuration>
>>>>> <configSections>
>>>>> <section name="castle"
>>>>>
>>>>> type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler,
>>>>> Castle.Windsor" />
>>>>> </configSections>
>>>>> <castle>
>>>>> <facilities>
>>>>> <facility id="rhino.esb" >
>>>>> <bus threadCount="1"
>>>>> numberOfRetries="5"
>>>>> endpoint="msmq://localhost/SomeClientName"
>>>>> />
>>>>> <messages>
>>>>> <add name="Limpens.Messages.SalesOrders"
>>>>> endpoint="msmq://localhost/SomeClientName"/>
>>>>> <add name="Limpens.Messages.Inventory"
>>>>> endpoint="msmq://localhost/SomeClientName"/>
>>>>> <add name="Limpens.Messages.SalesOrders.OrderSaga.Commands"
>>>>> endpoint="msmq://localhost/SomeClientName"/>
>>>>> <add name="Limpens.Messages.SalesOrders.OrderSaga.Events"
>>>>> endpoint="msmq://localhost/SomeClientName"/>
>>>>> </messages>
>>>>> </facility>
>>>>> </facilities>
>>>>> </castle>
>>>>> </configuration>
>>>>>
>>>>> I added so many message namespaces, because I was under the impression
>>>>> this was necessary to work (by reading the code it should not be). But I
>>>>> could not start a single Saga - once I put the concrete saga message
>>>>> namespaces in there, and then it worked a few times. Wtf!
>>>>>
>>>>> Well, help would be greatly appreciated...
>>>>>
>>>>> --
>>>>> Jan
>>>>>
>>>>>
>>>>> On Thu, May 27, 2010 at 6:00 PM, Mike Nichols <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> What about your saga persistence provider? Is it dropping your state?
>>>>>> Transient? Just a wild guess.
>>>>>>
>>>>>>
>>>>>> On Thu, May 27, 2010 at 1:14 PM, Jan Limpens
>>>>>> <[email protected]>wrote:
>>>>>>
>>>>>>> No, it must be something else. I suspect the way I setup the host. It
>>>>>>> seems that the host sometimes is "there" and sometimes not. I need to
>>>>>>> debug
>>>>>>> this deeper...
>>>>>>>
>>>>>>>
>>>>>>> On Wed, May 26, 2010 at 5:40 PM, Mike Nichols <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> This should work...I do this currently. Are you sure you aren't
>>>>>>>> completing the saga in your 'CancelOrder' handler?
>>>>>>>>
>>>>>>>> On Wed, May 26, 2010 at 12:47 PM, Jan Limpens <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> I posted this on stackoverflow as well...
>>>>>>>>>
>>>>>>>>> http://stackoverflow.com/questions/2916213/rhine-servicebus-sagas-with-multiple-messages
>>>>>>>>>
>>>>>>>>> I have a saga that can handle multiple messages like so:
>>>>>>>>>
>>>>>>>>> public class OrderSaga : ISaga<Order>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> , InitiatedBy<StartOrderSaga>
>>>>>>>>>
>>>>>>>>> , Orchestrates<CancelOrder>
>>>>>>>>> , Orchestrates<PaymentForOrderReceived>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> , Orchestrates<CheckOrderWasPaid>
>>>>>>>>>
>>>>>>>>> , Orchestrates<OrderAbandoned>
>>>>>>>>>
>>>>>>>>> , Orchestrates<CheckOrderHasBeenShipped>
>>>>>>>>>
>>>>>>>>> , Orchestrates<OrderShipped>
>>>>>>>>>
>>>>>>>>> , Orchestrates<CheckOrderHasDelayDuringShipment>
>>>>>>>>>
>>>>>>>>> , Orchestrates<OrderArrivedAtDestination>
>>>>>>>>>
>>>>>>>>> , Orchestrates<OrderCompleted>
>>>>>>>>>
>>>>>>>>> {...}
>>>>>>>>>
>>>>>>>>> but only Orchestrates<CancelOrder>, the first, seems to be picked
>>>>>>>>> up. So I suppose (I did not find the line, but am under a strong
>>>>>>>>> impression
>>>>>>>>> this is so), that only the first Orchestrates is registered.
>>>>>>>>>
>>>>>>>>> Probably this is by design. From what I imagined a saga to be, it
>>>>>>>>> seems only logical that it receives many different messages, but I
>>>>>>>>> might be
>>>>>>>>> wrong. I might be wrong with my whole assumption, too :)
>>>>>>>>>
>>>>>>>>> How am I supposed to handle this? Are Sagas supposed to only handle
>>>>>>>>> one (in my case) a ChangeStateMessage or should I wire the other
>>>>>>>>> ConsumerOfs/Orchestrates by hand?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Jan
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "Rhino Tools Dev" group.
>>>>>>>>> To post to this group, send email to
>>>>>>>>> [email protected].
>>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>>> [email protected]<rhino-tools-dev%[email protected]>
>>>>>>>>> .
>>>>>>>>> For more options, visit this group at
>>>>>>>>> http://groups.google.com/group/rhino-tools-dev?hl=en.
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "Rhino Tools Dev" group.
>>>>>>>> To post to this group, send email to
>>>>>>>> [email protected].
>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>> [email protected]<rhino-tools-dev%[email protected]>
>>>>>>>> .
>>>>>>>> For more options, visit this group at
>>>>>>>> http://groups.google.com/group/rhino-tools-dev?hl=en.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Jan
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "Rhino Tools Dev" group.
>>>>>>> To post to this group, send email to
>>>>>>> [email protected].
>>>>>>> To unsubscribe from this group, send email to
>>>>>>> [email protected]<rhino-tools-dev%[email protected]>
>>>>>>> .
>>>>>>> For more options, visit this group at
>>>>>>> http://groups.google.com/group/rhino-tools-dev?hl=en.
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Rhino Tools Dev" group.
>>>>>> To post to this group, send email to [email protected]
>>>>>> .
>>>>>> To unsubscribe from this group, send email to
>>>>>> [email protected]<rhino-tools-dev%[email protected]>
>>>>>> .
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/group/rhino-tools-dev?hl=en.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Jan
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Rhino Tools Dev" group.
>>>>> To post to this group, send email to [email protected].
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]<rhino-tools-dev%[email protected]>
>>>>> .
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/rhino-tools-dev?hl=en.
>>>>>
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Rhino Tools Dev" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected]<rhino-tools-dev%[email protected]>
>>>> .
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/rhino-tools-dev?hl=en.
>>>>
>>>
>>>
>>>
>>> --
>>> Jan
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Rhino Tools Dev" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<rhino-tools-dev%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/rhino-tools-dev?hl=en.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Rhino Tools Dev" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<rhino-tools-dev%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/rhino-tools-dev?hl=en.
>>
>
>
>
> --
> Jan
>
> --
> You received this message because you are subscribed to the Google Groups
> "Rhino Tools Dev" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<rhino-tools-dev%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/rhino-tools-dev?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"Rhino Tools Dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rhino-tools-dev?hl=en.