Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[ALG]Beste polling architectuur

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende situatie:
Naar een mailaccount wordt een mailtje gestuurd met een XML als bijlage. Deze XML moet worden geopend en specifieke gegevens daarvan moeten worden opgeslagen in een database.
Vervolgens moet op basis van instructies in de XML een aantal handelingen worden gedaan en uiteindelijk moet er een mailtje worden terug gestuurd met het resultaat (PDF als bijlage).

Nu is de vraag wat de beste architectuur is om dit op te lossen.
Voorwaarden: De mailbox zit in een MS Echange server, de database kan Oracle of PostGIS zijn en de mailtje kunnen 24 uur per dag binnen komen, ca 200 per dag. Het geheel moet op Windows Server draaien en geschreven worden in C#

Nu had ik het volgende bedacht:
Twee Windows service maken: mailinspector en pdfbuilder.
De mailinspector kijkt om de zoveel tijd (5 minuten) in de mailbox of er nieuwe mail is, zo ja dan wordt die geopend en wordt de XML geparsed en in de database gezet met status=nieuw.
De pdfbuilder kijkt ook om de zoveel tijd of er in de database records zijn met de status=nieuw en gaat daar mee aan de slag.

Voordeel van deze oplossing is dat als om wat voor reden dan ook de server onderuit schuift, nog niet volledig afgehandelde requests weer opnieuw opgepakt kunnen worden.
Nadeel is dat ook al is er niets te doen de twee services constant aan het vragen zijn of er werk is.

Mijn vraag is wat voor aternatieven er zijn. Ik sta open voor alles ;)

  • sanzut
  • Registratie: December 2006
  • Laatst online: 09:28

sanzut

It's always christmas time

Weet niet zeker of dit gaat in MS Exchange, maar bij veel mailservers is het mogelijk om bij bijvoorbeeld een alias in te stellen dat er een programma wordt gestart zodra er een bericht is ontvangen voor die alias/mailbox.

Als dit gaat met je server zou je natuurlijk mailinspector aan kunnen passen, deze alleen de DB vult, en vervolgens direct zelf pdfbuilder aanstuurt.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

Als je bang bent voor de load van mailinspector/pdfbuilder zou ik eerder eens serieus naar de servers zelf kijken. 5 minuten is echt peanuts.

Misschien zitten er in de nieuwe Exchange versies wel mogelijkheden om verschillende toolies aan te roepen als er een mailtje binnen is.

[ Voor 33% gewijzigd door TeeDee op 08-08-2008 08:52 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • 4VAlien
  • Registratie: November 2000
  • Laatst online: 17-11 22:34

4VAlien

Intarweb!

Het lijkt me logischer om pdfbuilder aan te roepen vanuit inspector zodra je nieuwe items hebt toegevoegd. Tevens is het vergelijken van de timestamp van het meest recente mailtje met de vorige die je verwerkt hebt natuurlijk niet echt belasting voor een systeem.

Verwijderd

Topicstarter
Ik zal nog wat verduidelijken.
Nu wordt er met een mailbox gewerkt maar in de toekomst wordt dit een webservice. Hoe dit precies zal gaan is nu nog niet duidelijk. Ik kan dus niet iets met de Exchange server doen, omdat ik de input lezen zo generiek mogelijk wil doen.
Verder is inderdaad de belasting van de mailinspector niet zo groot. Maar van de pdfbuilder wel.
Deze service doet nl. veel meer, benaderd meerdere webservices om data op te halen. Omdat de doorlooptijd hierdoor groot kan/zal zijn, moet het mogelijk zijn om meerdere pdfbuilder services tegelijk te draaien (wel op dezelfde server). Daardoor wordt het al moeilijker om de pdfbuilder aan te laten sturen door de mailinspector.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

Verwijderd schreef op vrijdag 08 augustus 2008 @ 09:04:
Ik zal nog wat verduidelijken.
Nu wordt er met een mailbox gewerkt maar in de toekomst wordt dit een webservice. Hoe dit precies zal gaan is nu nog niet duidelijk. Ik kan dus niet iets met de Exchange server doen, omdat ik de input lezen zo generiek mogelijk wil doen.
Zeg dat dan voortaan. 't Is maar goed dat ik niet verder op het onderwerp ingegaan ben. zonde van m'n tijd
Verder is inderdaad de belasting van de mailinspector niet zo groot. Maar van de pdfbuilder wel.
Deze service doet nl. veel meer, benaderd meerdere webservices om data op te halen. Omdat de doorlooptijd hierdoor groot kan/zal zijn, moet het mogelijk zijn om meerdere pdfbuilder services tegelijk te draaien (wel op dezelfde server). Daardoor wordt het al moeilijker om de pdfbuilder aan te laten sturen door de mailinspector.
Mailinspector: laat deze een soort opdracht wegschrijven (txt, xml)
PdfBuilder: met iets als een FileSystemWatcher kan je daar een opdracht mee uitvoeren. De scheiding is groter, geen load op de DB (blijkbaar is dat een issue), iets meer controle over de diverse queues (geef je opdrachten een identifier, werk met een load checker of wat dan ook).

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Verwijderd schreef op vrijdag 08 augustus 2008 @ 09:04:
Ik zal nog wat verduidelijken.
Nu wordt er met een mailbox gewerkt maar in de toekomst wordt dit een webservice. Hoe dit precies zal gaan is nu nog niet duidelijk. Ik kan dus niet iets met de Exchange server doen, omdat ik de input lezen zo generiek mogelijk wil doen.
Verder is inderdaad de belasting van de mailinspector niet zo groot. Maar van de pdfbuilder wel.
Deze service doet nl. veel meer, benaderd meerdere webservices om data op te halen. Omdat de doorlooptijd hierdoor groot kan/zal zijn, moet het mogelijk zijn om meerdere pdfbuilder services tegelijk te draaien (wel op dezelfde server). Daardoor wordt het al moeilijker om de pdfbuilder aan te laten sturen door de mailinspector.
Je kan toch threading doen en een overkoepelende pdfbuilder service die vervolgens meerdere "kindjes" pdf's laat maken? Laat je de overkopelende service ook meteen bijhouden hoeveel processen er lopen zodat je de server wat kan ontzien en hij kan ook een wachtrij bijhouden.

Of denk ik nu te simpel?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:42

Creepy

Tactical Espionage Splatterer

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 09:22

TeeDee

CQB 241

En? Heb je al een beeld van de aangedragen alternatieven?

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Met de aangedragen alternatieven kan ik wel wat mee.

Ik vind de overkoepelende pdfbuilder service (simonkey) wel een hele interessante oplossing.
Ik zal ook de FileSystemWatcher (TeeDee) verder uitzoeken.

Bedankt voor het meedenken.

  • _Erikje_
  • Registratie: Januari 2005
  • Laatst online: 20-10 19:51

_Erikje_

Tweaker in Spanje

Volgens mij doe je iets te moeilijk.
Laat je mail inspector gewoon periodiek (1 keer per minuut ofzo) kijken naar de e-mail box en als er iets nieuws is (wat maar 200 keer per dag is) stuurt hij direct de pdf builder aan.
Als je het echt twee gescheiden onderdelen wilt laten plak je een webservice aan je pdf builder en laat je de mail inspector via die webservice praten met je pdf builder.

Je gaat het toch niet op een pentium 200 draaien. Het verwerken van zo'n e-mailtje gaat echt geen minuten duren. Daarnaast genereert het pollen van een mailserver zowat geen dataverkeer of load aan het kant van de mailserver.

Je gaat nu namelijk moeilijk doen met 2 pollende services. Pollen is meestal een slechte architectuur (beetje last resort). Nu zit je aan een pollende service vast en kan je heel gemakkelijk de andere pollende service ombouwen tot een webservice!
Pagina: 1