Expert answer is always “it depends”. And long winded answer:
I’d first write a function that can send one “email”: (defn send-email! [ctx email-data] …) ; context contains whatever outside resources you need Now you have the freedom to work on a list of email-data like this: (doseq [email emails] (send-email ctx email)) So now you could do something like (let [emails (read-unsent-emails! [db])] (doseq [email emails] (send-email ctx email))) put that in a main, create a uberjar and make a cronjob which runs every 5 minutes. Or, you could as you suggest do it in a scheduler, I think I’ve used a clojure wrapper for quartz previously. but I know the people from Juxt has some stuff that might be nice as well. Or you could use make a transducer, (map (partial send-email ctx), and use that on your async channel. Erik. > On 26 Oct 2018, at 15:05, brj...@gmail.com wrote: > > You are quite right. My plan is to save emails that must be sent (not all > need guaranteed delivery) to a database but queue them right away in a worker > thread. The DB will then be updated with delivery status. In the interest of > reducing IO, I would prefer not to have to write and read from the DB for all > emails but only in case of a crash or mail server down something similar. So > there needs to be continuous monitoring of the email table - which requires > some sort of ever running task? Would you suggest a go block or using a > scheduler (there seem to be quite a few options of Clojure schedulers). > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.