Show HN: StarQueue – a free hosted HTTP message queue with a Postgres back end
starqueue.org
starqueue.org
Here's my side project StarQueue which is a free message queue.
I built it because I wanted to see if it was possible to implement something similar to SQS using Postgres as a back end. I actually implemented the back end in Postgres, MySQL and also SQL server and they all work fine. I chose Postgres in the end because of personal preference. I tried to implement the same back end in Oracle and the experience or using Oracle was horrifying so I dropped that. I tried to implement for IBM DB2 but that got hard for reasons I can't recall so I dropped that too.
It's written in async Python using the Starlette framework.
It's in beta at the moment. Let me know if you notice any problems.
It wasn't clear if you wanted commentary here, or via your contact form, so ...
I was surprised that the JWT is being sent as a POST param, instead of its more traditional place in an Authorization header
Kind of related, kind of not: I was also surprised to see the API request include the accountId in the URI when it's present in the JWT -- is that an implementation concession allowing a future where one AccountId (from the auth perspective) is able to control multiple "{accountId}" URIs?
Definitely related to that: I was surprised to see the QueuesList response send back what I presume is the same accountid that was present in the URI, repeated for every QueueName
I think the MessageReceive example copy-pasted the "MessageBody" field from its MessageSend friend, and the MessageDelete example is missing its "ReceiptHandles" that is mentioned in the description
Good luck on your adventure!
As to why the token is in the body not the header, honestly it was expedience.
Thanks for your thoughtful analysis.
SSE provides many niceties for a queue like this.
Are you familiar with long polling? It’s very efficient for a lot of applications. I’d be interested to hear what further benefit SSE would add.
SSE also defines a format that allows for pings and the server to define how/when the client should retry failed connections.
Minor nit: On the `div`s with the class name `code`, I see the curl demo is overflowing its contents. It could be fixed by adding this to its css:
``` overflow: scroll; ```
I was surprised to not see a Github link. Are you planning to open source it?
It’s such a huge amount of work to get it to this point I had to stop at some point and say “make it public”.
The original plan was open source only, not hosted so yes likely I’ll open source it at some point if people find it interesting.