From 155bf6a4711f6c2e82334e5d9e423146d7b3e544 Mon Sep 17 00:00:00 2001 From: Matt Mullins Date: Sun, 3 Jan 2016 23:37:16 -0800 Subject: [PATCH] amqp: Rate limit reconnections to AMQP --- amqp/amqp_bot_connection.erl | 11 +++++++---- amqp/amqp_bot_sup.erl | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/amqp/amqp_bot_connection.erl b/amqp/amqp_bot_connection.erl index a851e8c..2bc3189 100644 --- a/amqp/amqp_bot_connection.erl +++ b/amqp/amqp_bot_connection.erl @@ -3,7 +3,7 @@ -vsn(1). -export([ - start_link/0, + start_link/1, get_connection/0, open_channel/0 ]). @@ -13,11 +13,13 @@ handle_call/3 ]). +-define(RESTART, timer:seconds(30)). + -include_lib("amqp_client/include/amqp_client.hrl"). % Public-facing -start_link() -> - gen_server:start_link({local, ?MODULE}, ?MODULE, none, []). +start_link(RatelimitTableId) -> + gen_server:start_link({local, ?MODULE}, ?MODULE, {RatelimitTableId}, []). get_connection() -> gen_server:call(?MODULE, get_connection). @@ -27,7 +29,8 @@ open_channel() -> amqp_connection:open_channel(Connection). % Callbacks -init(_Args) -> +init({RatelimitTableId}) -> + rate_limit:wait_and_reset(RatelimitTableId, amqp_connection, ?RESTART), start_link_connection(). handle_call(get_connection, _From, Connection) -> diff --git a/amqp/amqp_bot_sup.erl b/amqp/amqp_bot_sup.erl index a1a69c4..ce39832 100644 --- a/amqp/amqp_bot_sup.erl +++ b/amqp/amqp_bot_sup.erl @@ -15,9 +15,10 @@ start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). init(_) -> + TableId = rate_limit:create(), Children = [ {amqp_bot_connection, % Id - {amqp_bot_connection, start_link, []}, % MFA + {amqp_bot_connection, start_link, [TableId]}, % MFA permanent, 5, worker, -- 2.11.0