antirez / disque

Disque is a distributed message broker
BSD 3-Clause "New" or "Revised" License
8.01k stars 538 forks source link

Client supplied job ids? #193

Open bttmly opened 7 years ago

bttmly commented 7 years ago

I've noticed that Disque, similar to Beanstalkd, returns a job id when you add a job, and seemingly does not provide a way for the client to supply the job id. Out of curiosity, is there any reason Disque must work this way?

The use case I'm interested in here is that applications may have well-known ID schemas, so they can cancel delayed jobs easily. For instance, if a new user signs up, we may want to send them an "Are you stuck?" email if they don't do some particular action within some amount of time. However, once they do that action, the application will want to cancel a job with the id are_you_stuck_<user_id>. With Disque returning job ids rather than accepting them, you'd have to maintain a mapping of application_id -> disque_id somewhere to make this scheme work. (Of course, there are ways to accomplish this particular task using other approaches.)