What is an efficient way to handle massive amounts of data via an HTTP POST?

I'm writing an application that will be used to chart and analyze massive amounts of log data. Basically, our applications (web, Tomcat, console, etc) will have custom log4j appenders that send the log entries to our remote server.

For now I want to accept these log entries via a normal HTTP POST. At that point, the web service would record the entry into a database.

I'm on the fence between Node.js and Akka. Mainly because I have experience in both Java and JavaScript. But I'm new to the actor pattern of Akka and I've read that Node isn't truly parallel unless you run multiple Node servers?

My logic is this:

1) Application POSTs log entry to server

2) Server takes HTTP request and creates an Amazon SQS entry (or Azure Service Bus..haven't decided)

3) Workers clean out queue and store the entries in DB.

I figure this would allow really fast inputs but calling an SQS operation would be a long IO process.

My other idea was to accept the POST request, store it in memcached or Redis, then have workers pull from cache, send to SQS then clean out queue for DB inserts. This would have the advantage of the HTTP request passing off the data as fast as possible and let other workers handle recording it.

This clearly sounds like a job for Akka because could I not allocate an actor per request and then have it spawn other actors to handle moving it in/out of the cache?

In the testing phase, I could easily see 20 - 500 requests come in at a time. Depending on how many apps we turn on in testing. But once fully running, I could see several thousand requests per second come in from all of the apps we have.

So my question is how to best handle the massive amounts of data I will be getting. I'm concerned with thread locking, http blocking, etc.

Architecturally, offloading the inbound log data to a queue for downstream processing (filtering, analytics, pushing to a database, whatever) is the correct approach. If you're concerned about volume and scaling, then you will need a lighter weight TCP-based protocol on the inbound side. HTTP, while convenient, is ridiculously heavy-handed for straight data transfer. (At a minimum the server side component handling the inbound data should be reading directly from the socket connection, something that typically does not happen in the processing of HTTP POST.)