You can host as many logical services in a Topshelf physical service
as you want. On top of that, a since instance can subscribe to
multiple messages, making this easy to deal with as well.
However, if you are worried about scaling in the near future, it's
easy to spread out services on different machines if they are already
broken up. Completely up to you if that's a need now. I had like 21
services at one point, but we were to set to processing 40 million
messages a day across 9+ machines.
> 2) What is the best way/choice to build redundancy for this Windows
> Service Infrastructure who is processing the Saga? What are the
> options available with in MassTransit or in the windows world to
> support this?
What redundancy are you looking for? I've built "replay" buttons into
the system so you can re-publish one of the events that already
happened if there was a temporary error.
> 3) I read a post in the forum that if we are using RabbitMQ then we
> dont need to technically use the Distributor/Worker? If that is the
> case what are the options for the load balncing the saga processing?
> What are the possible options we have with in masstransit
> infrastructure to process saga's using multiple boxes that way
> providing needed redundancy?
Sagas might be a bit tricky to do in a load balanced scenario. I'm not
sure I have a good answer to this since every correlated message needs
to go to the right host. That means content based routing, which means
'meh'. And that's prone to failures if something changes. Now if just
the works who don't actually use a saga are load balanced and the
director service is a saga and isn't load balanced you might be fine
there.
RabbitMQ supports competing consumers. I would use that for load
balancing. No point in using the Distributor logic when the transport
will do it for you.
> 5) After reading the forum; I assume if we are using RabbitMQ then we
> dont need to use the Mass Transit Runtime? Is that true?
True. I can't promise the exchange binding is without some quirkiness
at the moment, but it should work pretty well and RabbitMQ has pretty
good tools to see what's going on now.
Having a saga behind a load balancer could be troublesome, not all
messages are guaranteed to same end point. If it's a multi step saga,
this could cause issues. If you always round trip to the DB or
something to do work you might be okay though. This totally depends on
your saga though.
TS
|
TC--T1
| \
T2 T3
TS - Starts Message
TC - Coordinator or director
T1-3 - Workers for different messages
So if T1 - T3 needs a Saga and they don't just respond to Saga
messages from TC, then hiding T1-3 behind load balancing may be a
problem. You can always move T1-3 to different machines though.
Does this clarify?
> I will look into the RabbitMQ competing consumers option for load
> balancing.
>
> For point 5 you mentioned " the exchange binding is without some
> quirkiness at the moment." Can you throw some more light here, please.
I haven't played with the exchange binding much. My demos always have
the exchanges setup by hand and I've yet to take Rabbit to production.
It's more of a untested area than anything else currently. Our tests
seem to work okay but that's not the same as taking something to
production.
> Also I would like to mention that our first application build on top
> masstransit is now in production. We are an insurance provider in
> property and casualty area. We are just using the publish subscribe
> model for the time being to connect our policy system to the agency
> management system. Working well. Thanks for the great infrastructure
> and support through this forum. Right now we are using MSMQ for
> middleware. Please let me know if you like to know more information.
> We would be happy to share our success story.
This is great to hear. I think compiling some of these success stories
would be great for us. It's on the list, but not with a high priority
currently.
> The new project in design needs to have Saga implementation. Do you
> suggest should we use RabbitMQ or MSMQ with MassTransit 2.0 bits. With
> the current state of the code base, what you suggest with the
> intention to go production with in next 6 months.
If you are going through a full test cycle, I'd do RabbitMQ. It's a
better messaging transport hands down. The tooling isn't as advanced,
mostly since it hasn't been around as long, but what's there is pretty
good stuff. You can scale better with Rabbit as well, it has support
for things like federations. And the 2.0 bits are much easier to us
than the older versions of MT ;) There was a lot of clean up.
Do you have a thought around what your message volume is?
-Travis
--
You received this message because you are subscribed to the Google Groups "masstransit-discuss" group.
To post to this group, send email to masstrans...@googlegroups.com.
To unsubscribe from this group, send email to masstransit-dis...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/masstransit-discuss?hl=en.
> -Travis
> -Travis
Does that still work competing consumers on RabbitMQ? Without our
Distributor infrastructure, I wasn't aware this would work.
If so, I learned something new ;)
-Travis
-Travis