I am looking into the MassTransit Courier code to implement a RoutingSlip solution on top of RabbitMQBased on what I read in the blog (http://lostechies.com/chrispatterson/2013/03/28/implementing-routing-slip-with-masstransit/) it is unclear to me whether every task needs to have its own unique execution Uri or not.I have created a simple RoutingSlip with 3 activities...If I give each activity a unique execution address things appear to work correctly. I see an exchange and queue per activity in RabbitMQ (with the bindings properly configured) and the RoutingSlip executes as expected. In order to get this working I had to create an IServiceBus per Activity/Queue to process the messages. This does not seem right to me and has significant performance implications as creating an IServiceBus is not cheap.If I give each activity the same execution address I am getting into an infinite message execution loop. I see the RoutingSlip exchange setup and a single queue with the proper bindings between the two. However, it seems that when each Activity completes, it sends a new RouteSlip message where the itinerary contains all Activities in the RoutingSlip except the first one. Consequently, messages continue to get processed, re-published and the queued messages increase exponentially.It seems like I must be missing something obvious here and could use some direction/best practices on how to set up Courier.--
You received this message because you are subscribed to the Google Groups "masstransit-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to masstransit-dis...@googlegroups.com.
To post to this group, send email to masstrans...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/masstransit-discuss/3314215a-b55a-4e10-9257-13bb2184d3b6%40googlegroups.com?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.
As the article stated, each activity needs a queue for execution, and a queue for compensation. You should start up a bus instance for each queue, and use the appropriate host on that bus (execute host or compensate host). The cost of each bus is not significant once the bus is started, and you can control the thread usage by setting a concurrent consumer limit.As the article stated, you cannot host more than one activity on a queue, as the dispatching to the proper activity is not supported.
On Wed, Jun 12, 2013 at 3:47 PM, Troy Schneringer <troy.sch...@gmail.com> wrote:
I am looking into the MassTransit Courier code to implement a RoutingSlip solution on top of RabbitMQBased on what I read in the blog (http://lostechies.com/chrispatterson/2013/03/28/implementing-routing-slip-with-masstransit/) it is unclear to me whether every task needs to have its own unique execution Uri or not.I have created a simple RoutingSlip with 3 activities...If I give each activity a unique execution address things appear to work correctly. I see an exchange and queue per activity in RabbitMQ (with the bindings properly configured) and the RoutingSlip executes as expected. In order to get this working I had to create an IServiceBus per Activity/Queue to process the messages. This does not seem right to me and has significant performance implications as creating an IServiceBus is not cheap.If I give each activity the same execution address I am getting into an infinite message execution loop. I see the RoutingSlip exchange setup and a single queue with the proper bindings between the two. However, it seems that when each Activity completes, it sends a new RouteSlip message where the itinerary contains all Activities in the RoutingSlip except the first one. Consequently, messages continue to get processed, re-published and the queued messages increase exponentially.It seems like I must be missing something obvious here and could use some direction/best practices on how to set up Courier.
--
You received this message because you are subscribed to the Google Groups "masstransit-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to masstransit-discuss+unsub...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to masstransit-dis...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/masstransit-discuss/d7a71ee0-c589-4253-8e27-40764cc53f3a%40googlegroups.com.
Yes, if you sneak a peek at RapidTransit (on my GitHub) you can see how the hosting and such has been abstracted out into a simple set of hosts to run activities and such. So yes, if you had twenty activities, each supporting both execution and compensation, then you would have 40 queues (and forty matching IServiceBus instances).I can say that we have this many (and probably more) across half a dozen processes on some of our systems.
On Mon, Jan 6, 2014 at 6:01 AM, Mick Delaney <mickd...@gmail.com> wrote:
Does this mean given a system with 20 different activities, we need 40 instances of IServiceBus ??
On Thursday, 13 June 2013 15:44:34 UTC+1, Chris Patterson wrote:
As the article stated, each activity needs a queue for execution, and a queue for compensation. You should start up a bus instance for each queue, and use the appropriate host on that bus (execute host or compensate host). The cost of each bus is not significant once the bus is started, and you can control the thread usage by setting a concurrent consumer limit.As the article stated, you cannot host more than one activity on a queue, as the dispatching to the proper activity is not supported.
On Wed, Jun 12, 2013 at 3:47 PM, Troy Schneringer <troy.sch...@gmail.com> wrote:
I am looking into the MassTransit Courier code to implement a RoutingSlip solution on top of RabbitMQBased on what I read in the blog (http://lostechies.com/chrispatterson/2013/03/28/implementing-routing-slip-with-masstransit/) it is unclear to me whether every task needs to have its own unique execution Uri or not.I have created a simple RoutingSlip with 3 activities...If I give each activity a unique execution address things appear to work correctly. I see an exchange and queue per activity in RabbitMQ (with the bindings properly configured) and the RoutingSlip executes as expected. In order to get this working I had to create an IServiceBus per Activity/Queue to process the messages. This does not seem right to me and has significant performance implications as creating an IServiceBus is not cheap.If I give each activity the same execution address I am getting into an infinite message execution loop. I see the RoutingSlip exchange setup and a single queue with the proper bindings between the two. However, it seems that when each Activity completes, it sends a new RouteSlip message where the itinerary contains all Activities in the RoutingSlip except the first one. Consequently, messages continue to get processed, re-published and the queued messages increase exponentially.It seems like I must be missing something obvious here and could use some direction/best practices on how to set up Courier.
--
You received this message because you are subscribed to the Google Groups "masstransit-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to masstransit-discuss+unsubscribe...@googlegroups.com.
To post to this group, send email to masstrans...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/masstransit-discuss/3314215a-b55a-4e10-9257-13bb2184d3b6%40googlegroups.com?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "masstransit-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to masstransit-discuss+unsub...@googlegroups.com.
To post to this group, send email to masstrans...@googlegroups.com.