Skip to content

Commit 11d090e

Browse files
authored
Merge pull request #96 from nsweeting/v0.18
Update KeywordValidator to 2.0
2 parents 46f330d + 319e80c commit 11d090e

File tree

14 files changed

+189
-115
lines changed

14 files changed

+189
-115
lines changed

.github/workflows/ci.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: CI
2+
on:
3+
push:
4+
branches:
5+
- master
6+
7+
pull_request:
8+
branches:
9+
- master
10+
11+
jobs:
12+
test:
13+
runs-on: ubuntu-latest
14+
name: Elixir ${{ matrix.elixir }} / OTP ${{ matrix.otp }}
15+
strategy:
16+
matrix:
17+
otp: ['23', '24']
18+
elixir: ['1.11', '1.12', '1.13', '1.14']
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@v3
22+
23+
- name: Start RabbitMQ
24+
run: docker-compose up -d
25+
26+
- name: Set up Elixir
27+
uses: erlef/setup-beam@v1
28+
with:
29+
elixir-version: ${{ matrix.elixir }}
30+
otp-version: ${{ matrix.otp }}
31+
32+
- name: Restore deps and _build cache
33+
uses: actions/cache@v3
34+
with:
35+
path: |
36+
deps
37+
_build
38+
key: deps-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-${{ hashFiles('**/mix.lock') }}
39+
restore-keys: |
40+
deps-${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}
41+
42+
- name: Run CI
43+
run: mix ci

.travis.yml

Lines changed: 0 additions & 13 deletions
This file was deleted.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ The package can be installed by adding `rabbit` to your list of dependencies in
1212
```elixir
1313
def deps do
1414
[
15-
{:rabbit, "~> 0.17"}
15+
{:rabbit, "~> 0.18"}
1616
]
1717
end
1818
```

docker-compose.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: '3'
2+
3+
services:
4+
rabbitmq:
5+
image: rabbitmq:3.9.9-management-alpine
6+
ports:
7+
- '5672:5672'
8+
- '15672:15672'
9+
healthcheck:
10+
test: rabbitmq-diagnostics -q ping
11+
interval: 5s
12+
timeout: 5s
13+
retries: 10
14+
restart: unless-stopped
15+
16+
healthy:
17+
image: alpine
18+
command: echo "All services started and healthy!"
19+
depends_on:
20+
rabbitmq:
21+
condition: service_healthy

lib/rabbit/connection/pool.ex

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ defmodule Rabbit.Connection.Pool do
33

44
alias Rabbit.Connection.Server
55

6-
@opts_schema %{
7-
pool_size: [type: :integer, default: 1, required: true],
8-
max_overflow: [type: :integer, default: 0, required: true],
9-
strategy: [type: :atom, default: :fifo, required: true]
10-
}
6+
@opts_schema KeywordValidator.schema!(
7+
pool_size: [is: :integer, default: 1, required: true],
8+
max_overflow: [is: :integer, default: 0, required: true],
9+
strategy: [is: :atom, default: :fifo, required: true]
10+
)
1111

1212
defmodule Worker do
1313
@moduledoc false
@@ -63,8 +63,7 @@ defmodule Rabbit.Connection.Pool do
6363
end
6464

6565
defp get_worker_opts(module, opts) do
66-
pool_opts = Map.keys(@opts_schema)
67-
opts = Keyword.drop(opts, pool_opts)
66+
opts = Keyword.drop(opts, [:pool_size, :max_overflow, :strategy])
6867
Keyword.put(opts, :module, module)
6968
end
7069
end

lib/rabbit/connection/server.ex

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,24 @@ defmodule Rabbit.Connection.Server do
77

88
require Logger
99

10-
@opts_schema %{
11-
name: [type: :binary, required: false],
12-
uri: [type: :binary, required: false],
13-
username: [type: :binary, required: false],
14-
password: [type: :binary, required: false],
15-
virtual_host: [type: :binary, required: false],
16-
host: [type: :binary, required: false],
17-
port: [type: :integer, required: false],
18-
channel_max: [type: :integer, required: false],
19-
frame_max: [type: :integer, required: false],
20-
heartbeat: [type: :integer, required: false],
21-
connection_timeout: [type: :integer, required: false],
22-
ssl_options: [type: [:binary, :atom], required: false],
23-
client_properties: [type: :list, required: false],
24-
socket_options: [type: :list, required: false],
25-
retry_backoff: [type: :integer, default: 1_000, required: true],
26-
retry_max_delay: [type: :integer, default: 5_000, required: true]
27-
}
10+
@opts_schema KeywordValidator.schema!(
11+
name: [is: :binary, required: false],
12+
uri: [is: :binary, required: false],
13+
username: [is: :binary, required: false],
14+
password: [is: :binary, required: false],
15+
virtual_host: [is: :binary, required: false],
16+
host: [is: :binary, required: false],
17+
port: [is: :integer, required: false],
18+
channel_max: [is: :integer, required: false],
19+
frame_max: [is: :integer, required: false],
20+
heartbeat: [is: :integer, required: false],
21+
connection_timeout: [is: :integer, required: false],
22+
ssl_options: [is: {:one_of, [:binary, :atom]}, required: false],
23+
client_properties: [is: :list, required: false],
24+
socket_options: [is: :list, required: false],
25+
retry_backoff: [is: :integer, default: 1_000, required: true],
26+
retry_max_delay: [is: :integer, default: 5_000, required: true]
27+
)
2828

2929
@connection_opts [
3030
:name,

lib/rabbit/consumer/executer.ex

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ defmodule Rabbit.Consumer.Executer do
99

1010
alias Rabbit.Message
1111

12-
@opts_schema %{
13-
timeout: [type: :integer, default: 60_000]
14-
}
12+
@opts_schema KeywordValidator.schema!(timeout: [is: :integer, default: 60_000])
1513

1614
################################
1715
# Public API

lib/rabbit/consumer/server.ex

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,22 @@ defmodule Rabbit.Consumer.Server do
99

1010
alias Rabbit.Consumer.Worker
1111

12-
@opts_schema %{
13-
connection: [type: [:tuple, :pid, :atom], required: true],
14-
queue: [type: :binary, required: false],
15-
prefetch_count: [type: :integer, default: 1],
16-
prefetch_size: [type: :integer, default: 0],
17-
consumer_tag: [type: :binary, default: ""],
18-
no_local: [type: :boolean, default: false],
19-
no_ack: [type: :boolean, default: false],
20-
exclusive: [type: :boolean, default: false],
21-
nowait: [type: :boolean, default: false],
22-
arguments: [type: :list, default: []],
23-
timeout: [type: [:integer, :atom], required: false],
24-
custom_meta: [type: :map, default: %{}],
25-
setup_opts: [type: :list, default: [], required: false],
26-
workers: [type: :integer, required: false]
27-
}
12+
@opts_schema KeywordValidator.schema!(
13+
connection: [is: {:one_of, [:tuple, :pid, :atom]}, required: true],
14+
queue: [is: :binary, required: false],
15+
prefetch_count: [is: :integer, default: 1],
16+
prefetch_size: [is: :integer, default: 0],
17+
consumer_tag: [is: :binary, default: ""],
18+
no_local: [is: :boolean, default: false],
19+
no_ack: [is: :boolean, default: false],
20+
exclusive: [is: :boolean, default: false],
21+
nowait: [is: :boolean, default: false],
22+
arguments: [is: :list, default: []],
23+
timeout: [is: {:one_of, [:integer, :atom]}, required: false],
24+
custom_meta: [is: :map, default: %{}],
25+
setup_opts: [is: :list, default: [], required: false],
26+
workers: [is: :integer, required: false]
27+
)
2828

2929
@qos_opts [
3030
:prefetch_size,

lib/rabbit/producer/pool.ex

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ defmodule Rabbit.Producer.Pool do
33

44
alias Rabbit.Producer.Server
55

6-
@opts_schema %{
7-
pool_size: [type: :integer, default: 1, required: true],
8-
max_overflow: [type: :integer, default: 0, required: true],
9-
strategy: [type: :atom, default: :lifo, required: true]
10-
}
6+
@opts_schema KeywordValidator.schema!(
7+
pool_size: [is: :integer, default: 1, required: true],
8+
max_overflow: [is: :integer, default: 0, required: true],
9+
strategy: [is: :atom, default: :lifo, required: true]
10+
)
1111

1212
defmodule Worker do
1313
@moduledoc false
@@ -63,8 +63,7 @@ defmodule Rabbit.Producer.Pool do
6363
end
6464

6565
defp get_worker_opts(module, opts) do
66-
pool_opts = Map.keys(@opts_schema)
67-
opts = Keyword.drop(opts, pool_opts)
66+
opts = Keyword.drop(opts, [:pool_size, :max_overflow, :strategy])
6867
Keyword.put(opts, :module, module)
6968
end
7069
end

lib/rabbit/producer/server.ex

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ defmodule Rabbit.Producer.Server do
77

88
import Rabbit.Utilities
99

10-
@opts_schema %{
11-
connection: [type: [:tuple, :pid, :atom], required: true],
12-
sync_start: [type: :boolean, required: true, default: true],
13-
sync_start_delay: [type: :integer, required: true, default: 50],
14-
sync_start_max: [type: :integer, required: true, default: 100],
15-
publish_opts: [type: :list, default: []],
16-
setup_opts: [type: :list, required: false]
17-
}
10+
@opts_schema KeywordValidator.schema!(
11+
connection: [is: {:one_of, [:tuple, :pid, :atom]}, required: true],
12+
sync_start: [is: :boolean, required: true, default: true],
13+
sync_start_delay: [is: :integer, required: true, default: 50],
14+
sync_start_max: [is: :integer, required: true, default: 100],
15+
publish_opts: [is: :list, default: []],
16+
setup_opts: [is: :list, required: false]
17+
)
1818

1919
################################
2020
# Public API

0 commit comments

Comments
 (0)