summary refs log tree commit diff
path: root/src/api
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-02-03 23:42:14 +0100
committerRory& <root@rory.gay>2026-02-03 23:42:14 +0100
commitdd42085975d7012f98c127d30df5a5bd3350ea44 (patch)
tree5aa3e402c0c855b921a6a998129bddaf7a3de938 /src/api
parentMerge remote-tracking branch 'oh64/master' (diff)
parentdon't rethrow error, just keep retrying (diff)
downloadserver-ts-dd42085975d7012f98c127d30df5a5bd3350ea44.tar.xz
Merge remote-tracking branch 's074/add-rabbitmq-error-handling'
Diffstat (limited to 'src/api')
-rw-r--r--src/api/middlewares/RateLimit.ts20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/api/middlewares/RateLimit.ts b/src/api/middlewares/RateLimit.ts

index c749df6a..8a8c17f6 100644 --- a/src/api/middlewares/RateLimit.ts +++ b/src/api/middlewares/RateLimit.ts
@@ -16,7 +16,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import { Config, getRights, listenEvent } from "@spacebar/util"; +import { Config, getRights, listenEvent, RabbitMQ } from "@spacebar/util"; import { NextFunction, Request, Response, Router } from "express"; import { API_PREFIX_TRAILING_SLASH } from "./Authentication"; @@ -154,9 +154,21 @@ export async function initRateLimits(app: Router) { const { routes, global, ip, error, enabled } = Config.get().limits.rate; if (!enabled) return; console.log("Enabling rate limits..."); - await listenEvent(EventRateLimit, (event) => { - Cache.set(event.channel_id as string, event.data); - event.acknowledge?.(); + + // Set up rate limit event listener + const setupRateLimitListener = async () => { + await listenEvent(EventRateLimit, (event) => { + Cache.set(event.channel_id as string, event.data); + event.acknowledge?.(); + }); + }; + + await setupRateLimitListener(); + + // Re-establish listener on RabbitMQ reconnection + RabbitMQ.on("reconnected", async () => { + console.log("[RateLimit] RabbitMQ reconnected, re-establishing rate limit listener"); + await setupRateLimitListener(); }); // await RateLimit.delete({ expires_at: LessThan(new Date().toISOString()) }); // cleans up if not already deleted, morethan -> older date // const limits = await RateLimit.find({ blocked: true });