clojure-europe

mdiin 2025-08-31T05:23:02.399709Z

Good morning

2025-08-31T07:01:45.728589Z

Morgen

Ludger Solbach 2025-08-31T07:14:58.322069Z

Moin

teodorlu 2025-08-31T07:49:52.740689Z

morning!

jasonbell 2025-08-31T07:50:05.150629Z

Morning

2025-08-31T09:13:14.336639Z

Morning

jasonbell 2025-08-31T21:01:25.384849Z

Hmmm starting to get a bit worried on my options here. A long time user of https://github.com/clj-commons/durable-queue move to clj-commons and it also looks like https://github.com/mpenet/tape hasn’t had any commits in a good few years as well. Does anyone know any alternatives or am I just going to have to rely on AWS SNS to do the work for me?

2025-09-01T07:11:50.951939Z

sometimes a library is just the right size and does just the right thing

💯 2
jasonbell 2025-09-01T07:29:40.284019Z

Thanks @mpenet - I’ll certainly take another look once the volumes are there to make it a requirement. Complete makes sense and I certainly didn’t intend to describe it otherwise. There are still options and this is still one of them.

👍 1
mpenet 2025-09-01T08:18:04.207499Z

fyi tape was created after we had some deadlocks with durable-queue and needed something more stable, it worked quite nicely (used it at previous job). ChronicleQueue is far from perfect, they tend to break backward compatibility at every release, but back then I had no time to either start from scratch or fix durable-queue, and there were no other alternative ready to go. Maybe nowadays there are better alternatives, not sure.

👍 1
mpenet 2025-09-01T01:58:33.818239Z

Tape is « complete », rather than dead. I suppose I could upgrade the dependencies but that’s about it.

👍 2
jasonbell 2025-08-31T21:01:55.749719Z

SQS I mean…

jasonbell 2025-09-01T07:27:30.728899Z

Currently no commits since two years ago, not working with later Java versions. For now just http client to Sendgrid will do fine.

seancorfield 2025-09-01T14:02:39.664679Z

Hmm, @slipset is the "owner" of that fork. I just updated and merged the Java 13 PR. We can probably get this updated and a new release cut -- but it'll have a different group ID since we don't have access to the Factual group on Clojars.

👍 1
borkdude 2025-08-31T21:06:59.248139Z

These seem two be two different concerns. 1. you want a library to solve a problem. 2. you want some hosted service? for 1 there are other options too, I guess, like kafka or rabbitmq or maybe some java lib that does a similar thing

jasonbell 2025-08-31T21:16:07.057529Z

I’m reviving an old startup I did, all in Clojure. But there’s a mailer queue that needed some attention and it used durable-queue (to avoid Kafka overkill (Kafka expert is my day job so I know it’s overkill 🙂 ). Same RabbitMQ or NATS, just too much for what will probably be needed. I even got into trouble on hackernews over this. Single node Kafka isn’t such a bad option now with KRAFT.

borkdude 2025-08-31T21:17:13.828559Z

and AWS SQS isn't overkill?

jasonbell 2025-08-31T21:17:29.647669Z

My sentiments exactly Michiel! 🙂

😆 1
jasonbell 2025-08-31T21:17:57.020729Z

Ah well Kafka it is then….

borkdude 2025-08-31T21:18:52.592719Z

I looked into alternatives. Something named Chronicle-Queue came up, it's a Java lib

jasonbell 2025-08-31T21:20:03.126329Z

Thank you, I’ll take a look at that.

jasonbell 2025-08-31T21:22:28.412399Z

I’ll run Kafka native in a container, everything else is going into containers. Thanks @borkdude, appreciate you taking the time, most kind. 👍🙏

👍 1
borkdude 2025-08-31T21:22:54.132469Z

There seems to be even a Clojure-wrapper around Chronicle-Queue here: https://github.com/zalky/cues > For when distributed systems like Kafka are too much, durable-queue is not enough, and both are too slow.

jasonbell 2025-08-31T21:33:40.398419Z

Thinking about it a Kafka consumer just works perfectly, all the other API calls were retired.

2025-08-31T22:02:12.480099Z

I mean, if you’re running in aws, sqs is really easy to set up. I wouldn’t avoid it for any reason.

2025-08-31T22:02:41.733319Z

Wait, this is for a mailer. Yeah duplicate sends are a thing with sqs.

👍 1
jasonbell 2025-08-31T22:04:24.023169Z

I’m fortuned enough to know that I don’t trust any system that says “exactly once🙂

2025-08-31T22:20:30.970959Z

They have a thing that dedupes by id within a timeframe iirc. So it’ll be mostly good. The way I solved it once was to lock around a row in dynamo, but that’s annoying af for the use case. Idk if you’re using a db I might just shove it in there. If your volume is low, I might just put it direct in the request handler.

jasonbell 2025-08-31T22:21:07.336079Z

Volume is low for now so I’ve just been thinking about a direct request, overhead is low.

2025-08-31T22:21:44.750159Z

Unless this is a key part of the business, I’d lean toward that. You know how to solve this later, it’s just annoying.

💯 1
seancorfield 2025-09-01T00:58:34.674719Z

What's your concern about durable-queue moving to clj-commons? That at least means it has an active maintainer and will get fixes etc.