1 |
|
-module(mongoose_wpool_rabbit). |
2 |
|
-behaviour(mongoose_wpool). |
3 |
|
|
4 |
|
-export([init/0]). |
5 |
|
-export([start/4]). |
6 |
|
-export([stop/2]). |
7 |
|
|
8 |
|
init() -> |
9 |
1 |
application:ensure_all_started(amqp_client). |
10 |
|
|
11 |
|
start(Host, Tag, WpoolOptsIn, |
12 |
|
AMQPOpts = #{confirms_enabled := Confirms, max_worker_queue_len := MaxQueueLen}) -> |
13 |
1 |
PoolName = mongoose_wpool:make_pool_name(rabbit, Host, Tag), |
14 |
1 |
Worker = {mongoose_rabbit_worker, |
15 |
|
[{amqp_client_opts, amqp_client_opts(AMQPOpts)}, |
16 |
|
{host, Host}, |
17 |
|
{pool_tag, Tag}, |
18 |
|
{confirms, Confirms}, |
19 |
|
{max_queue_len, MaxQueueLen}]}, |
20 |
1 |
WpoolOpts = [{worker, Worker} | WpoolOptsIn], |
21 |
1 |
mongoose_wpool:start_sup_pool(rabbit, PoolName, WpoolOpts). |
22 |
|
|
23 |
|
stop(_, _) -> |
24 |
:-( |
ok. |
25 |
|
|
26 |
|
amqp_client_opts(AMQPOpts) -> |
27 |
1 |
AMQPNetworkOpts = maps:with([amqp_host, amqp_port, amqp_username, amqp_password], AMQPOpts), |
28 |
1 |
KVOpts = maps:to_list(AMQPNetworkOpts), |
29 |
1 |
mongoose_amqp:network_params(KVOpts). |