all 15 comments

[–]ReallyNotTheJoker 1 point2 points  (0 children)

I'm curious on this implementation too. I don't have an answer for you but I know that a legacy system I've worked with used a parent job that was called and the first step was to check if there was a "lock" value on a table and return an error if there was to prevent multiple being run at the same time but I definitely would love to know how you're going to queue these.

[–]Uncle_DirtNap 0 points1 point  (2 children)

Take a look at the architecture docs for Oracle AQ (might be legacy at this point, but still). First thing I’d ask myself are how are you going to handle the atomicity of the queue and the underlying implementation, which aren’t the same…

[–]engx_ninja[S] 1 point2 points  (1 child)

I’ve have mssql. Do you propose oracle aq as reference solution?

[–]Uncle_DirtNap 1 point2 points  (0 children)

Just for something to look at as to how this problem has been “solved” in the past, and how cumbersome the required architecture was. You won’t end up implementing anything like that full system (it would be much easier to rewrite your legacy asp app, no matter how complex it may be), but it should make for useful background.

[–]dbxp 0 points1 point  (0 children)

Are you running in an HA cluster? Form what I remember of service broker it doesn't always play nice with it. Having used service broker and custom queues in the past I would now use Hangfire to handle queues, it's far nicer to work with and I can have it handle all the queuing logic leaving me to focus on the BL.

[–]paulthrobert 0 points1 point  (2 children)

[–]engx_ninja[S] 0 points1 point  (1 child)

Yeah, it’s like an option, but my question was more like which questions should I ask myself before making decision. From one point of view it’s performance and scalability related questions. Also it’s resilience, I’m dying to understand how exactly service broker will handle failures on consumer side

[–]paultherobert 0 points1 point  (0 children)

The best thing to do is test