2014-05-30 6:41 GMT-03:00 Norbert Hartl <norb...@hartl.name>:

>> * It's pretty much free (though this is not a relevant factor )
> Well, it is 12000 emails free per month.

We will send arount 3000 per month, and the $1.5 per 10000 of Postmark
wasn't expensive either.

>> Assuming you flag the transactions as "mailSent" or similar.
> Mariano is referring to a piece of code I’ve sent him. This one

> ((mailResponse first at: 'status') = 'sent')
> ifTrue: [  self persistence changeStateOf: participant to: #emailSent ]
> ifFalse: [ self persistence changeStateOf: participant to: #emailFailed ].
> self emptyOkResponse

I was taking about a general pattern, of having a flag in the object,
a log or both. I just need a flag (actually two).


> There are a lot of ways you can do that. From your description I assume you
> have quite some incoming requests that should return quickly. Furthermore
> you want to keep exact track of the sent email and react to unexpected
> cases, right?

Not really that much, but the email is not as important as the
transaction being submitted (through a REST url), so I try to separate
concerns as much as I can.

> In my case I don’t have these requirements. The request rate is pretty low
> and there is no effect to the user if a request to my handler takes longer.
> So I decided to use the synchronous API from Mandrill. So I get back the
> status immediately and can flag the action as OK or failed. I don’t need
> more because if a message is not delivered from time to time it is no
> problem. So I guess I’m in case #1

Here the volume isn't high, I'm simply worried about what a failure in
the sending of the mails could affect the "stability" of the whole
server (which is going to be a single image).

> If your requirements are different I’d probably wouldn’t take the effort to
> do #2. It gets complicated really quick. If we have another view on the
> Mandrill API webhooks come to the rescue [1]. In your request handler you
> send the message asynchronously. The status in the message is „queued“ then.
> If you have the webhooks registered you get called from mandrill whenever
> the status of a mail send changes. That is probably the best option because
> no need to poll anything.There is no support for that in the Mandrill API at
> the moment. But I’m interested in this as well and could collaborate on
> that.

Webhooks seems to be way to go if I want to defer the sending.

> I think #3 would be really heavy weight for the task. My advize is not to do
> these kind of things until you really know that you need it. Complexity
> kills!

I know... I won't do such thing unless there is another requirement
that justifies it.
However, I'm always tempted to use MQs an similars, it is the message
sending paradigm taken to a different level :D

Regards!

Esteban A. Maringolo

Reply via email to