efektivní mail queue v dynamické databázi

jarda256
Člen | 130
+
0
-

Ahoj všichni,

mám takový zapeklitý dotaz (alespoň z mého pohledu). Jak mám efektivně nalít maily do fronty, když se mi dynamicky mění databáze. Mám např. 1 000 účastníků a mail chci odeslat jen těm, kteří účast potvrdili (ti co ne, tak nezadali ještě email). Pokud bych šel cestou úkolové fronty, tak co minutu načtu třeba 200, tím ošetřím nově příchozí ale pokud ten co byl na prvním místě ještě neměl email, tak ho to nenačetlo a mail mu nepřijde. Pokud před prvním projetí fronty ovšem zadám, že kdo od teď přijde tak mail dostane rovnou, tak ho zase někteří dostanou dvakrát (do mailu se generuje unikátní kod a takto se vygeneruje 2×).

Jsem tedy lehce ve slepé uličce. Měl by někdo mapu nebo buldozer, abych se dostal dál? :)

Předem díky za podmětné rady (snad můj popis dává smysl, kdyby ne, tak jakoukoliv otázku rád zodpovím)

voda
Člen | 561
+
0
-

Tak si ukládej komu jsi už daný email poslal a komu ne.

kejlicz
Člen | 201
+
+3
-

A ty máš v databázi nějakou frontu emailů která se odesílá postupně CRONem, nebo adresy pro odeslání taháš až v případě potřeby přímo z tabulek. První řešení je určitě lepší a pokud to tak máš, tak moc nevidím, v čem je problém. Prostě to do fronty dáš až když to splní nějaké podmínky. Případně ty podmínky můžeš ještě jenou ověřit před odesláním, pokud to má smysl.

Editoval kejlicz (7. 11. 2017 10:32)

jarda256
Člen | 130
+
0
-

@kejlicz Naleju emaily do fronty a tu postupně rozesílá cron. Problém je v tom, že do toho selectu se může jeden mail dostat 2×. Jak jsem už psal výše.

Jan Endel
Člen | 1016
+
0
-

A co třeba nepoužívat na frontu technologii, co se na to nehodí (databázi), ale třeba Rabbit MQ/ Zero MQ? Zprovoznění je docela jednoduché, pokud to není sdílený hosting. A právě konkurenci a podobné zmíněné problémy řeší out of the box.

jarda256
Člen | 130
+
0
-

@JanEndel Já samozřejmě vím, že se na to databáze nehodí, ale bohužel tuhle část neovlivním, tak se snažím to udělat co nejefektivněji. Je to na active24 na obyčeném webhostingu tarif firma.