Skip to content

Commit c097454

Browse files
authored
36 as a library user i want to create an exchange of non built in type (#46)
* added support for custom exchange types * fixed tests * added volume in container definition for github action
1 parent 05bfb7d commit c097454

File tree

6 files changed

+23
-2
lines changed

6 files changed

+23
-2
lines changed

.github/workflows/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ jobs:
2929
ports:
3030
- 5672:5672
3131
- 15672:15672
32+
volumes:
33+
- ./conf/:/etc/rabbitmq/
3234

3335
steps:
3436
- uses: actions/checkout@v3

conf/enabled_plugins

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[rabbitmq_stream_management,rabbitmq_consistent_hash_exchange].

docker-compose.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ services:
1010
environment:
1111
RABBITMQ_DEFAULT_USER: "rabbit"
1212
RABBITMQ_DEFAULT_PASS: "rabbit"
13+
volumes:
14+
- ./conf/:/etc/rabbitmq/

src/exchange.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ export type ExchangeOptions = {
44
arguments: Record<string, string>
55
auto_delete: boolean
66
durable: boolean
7-
type: ExchangeType
7+
type: ExchangeType | string
88
}
99

1010
export interface ExchangeInfo {
1111
name: string
1212
arguments: Record<string, string>
1313
autoDelete: boolean
1414
durable: boolean
15-
type: ExchangeType
15+
type: ExchangeType | string
1616
}
1717

1818
export interface Exchange {

src/management.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ export class AmqpManagement implements Management {
200200
type: options.type ?? "direct",
201201
durable: options.durable ?? true,
202202
auto_delete: options.auto_delete ?? false,
203+
arguments: options.arguments ?? {},
203204
})
204205
.build()
205206

test/e2e/management.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,21 @@ describe("Management", () => {
114114
})
115115
})
116116

117+
test("create an exchange with custom type", async () => {
118+
const customType = "x-consistent-hash" // requires plugin rabbitmq_consistent_hash_exchange enabled
119+
const exchange = await management.declareExchange(exchangeName, {
120+
type: customType,
121+
auto_delete: true,
122+
durable: false,
123+
})
124+
125+
await eventually(async () => {
126+
const exchangeInfo = await getExchangeInfo(exchange.getInfo.name)
127+
expect(exchangeInfo.ok).to.eql(true)
128+
expect(exchangeInfo.body.type).to.eql(customType)
129+
})
130+
})
131+
117132
test("delete an exchange through the management", async () => {
118133
await createExchange(exchangeName)
119134
await eventually(async () => {

0 commit comments

Comments
 (0)