Recommendation separate queue or separate instance?


#1

The problem:
Sage reference requires to be compiled for x86 so limiting my maximum memory to 3.5GB. There are instances where memory maxes out due to dealing with large reports before GC takes care of the memory.

Would you create a separate Hangfire for the Sage related reports?
Or
Would you create a separate queue and make another instance of Hangfire?

Thank you.


#2

Both have pros and cons.

Separate hangfire means that you have to look at 2 dashboard to look at the status of all your jobs. Easier to manage

Another instance of hangfire means that you have to share the interface between the 2 instances since any worker can pick up a job to change it’s status to enqueued. that can become a problem because if you update the interfaces you’ll need to deploy all the hangfire instances.

Personally, I would go with separate hangfire because we’ve started to have problem because we had 6 hangfire instances and everytime we had to change the interfaces, we had to redeploy each of them and sometimes we forgot to deploy one and it would crash the jobs of the other worker since the interface wasn’t compatible with the serialized job.


#3

Thanks for the feedback. I’ll create separate Hangfire for these tasks. :+1:


#4

Yeah, really hating this.
Really hope that Hangfire becomes more aware of its own queues.