0

We need to send 1000s (under 10,000) per day for a few years. The data is in a SQL Server database - we have many asp.net MVC 5 and .net CORE 2 MVC sites on a Windows 2012 R2 server on IIS.

The emails are sent to customers who are expiring, so some calculations are required to work out who to send what to but nothing super taxing. I'm using AWS SES to send emails.

Previously we just used an asp.net web forms page with a long time out intermittently hit at a certain URL by pingdom.

I'd like to modernise this - I've been looking at Hangfire.net and RabbitMQ / RawRabbit. I don't want to get too bogged down and want to keep this relatively simple.

What would be a good way to architect this that's simple to maintain and build? Are there any other approaches that I haven't considered, are my suggestions good?

  • see Where to start? – gnat Apr 24 '18 at 21:24
  • OK aside from my - now I see erroneous 'where do I start' statement, I actually mentioned a couple of possibilities. So I don't think your criticism is warranted. I've removed the statement for this reason. – niico Apr 24 '18 at 22:24
2

This really sounds like something you could easily put in a AWS Lambda. We do something similar at my company using Azure Functions. You could even chain them together. One lambda determines who to send to put them into a queue. Then another calculates and processes the data and puts it into another queue and then the last formats and sends the emails.

  • Thanks. Can you use c# for that though? Keen to keep it MS stack if possible as this is our skill base. – niico Apr 24 '18 at 22:23
  • AFAIK you can use C# in AWS Lambda or Azure Functions. – mcknz Apr 24 '18 at 23:28
  • another issue here is our production database contains not only customer emails - but expiry dates and email text. Our system changes expiry dates and selects the right emails to send. Without exporting large amounts of data to Amazon at least some of the logic would have to remain on our side. – niico Apr 25 '18 at 6:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.