diff --git a/springwolf-examples/springwolf-amqp-example/src/main/java/io/github/stavshamir/springwolf/example/configuration/RabbitConfiguration.java b/springwolf-examples/springwolf-amqp-example/src/main/java/io/github/stavshamir/springwolf/example/configuration/RabbitConfiguration.java index 17cc842f7..b613e401b 100644 --- a/springwolf-examples/springwolf-amqp-example/src/main/java/io/github/stavshamir/springwolf/example/configuration/RabbitConfiguration.java +++ b/springwolf-examples/springwolf-amqp-example/src/main/java/io/github/stavshamir/springwolf/example/configuration/RabbitConfiguration.java @@ -26,4 +26,9 @@ public Queue anotherQueue() { return new Queue("another-queue", false); } + @Bean + public Queue exampleBindingsQueue() { + return new Queue("example-bindings-queue", false); + } + } diff --git a/springwolf-examples/springwolf-amqp-example/src/main/java/io/github/stavshamir/springwolf/example/consumers/ExampleConsumer.java b/springwolf-examples/springwolf-amqp-example/src/main/java/io/github/stavshamir/springwolf/example/consumers/ExampleConsumer.java index eec88fa18..6eaaf2be1 100644 --- a/springwolf-examples/springwolf-amqp-example/src/main/java/io/github/stavshamir/springwolf/example/consumers/ExampleConsumer.java +++ b/springwolf-examples/springwolf-amqp-example/src/main/java/io/github/stavshamir/springwolf/example/consumers/ExampleConsumer.java @@ -4,6 +4,10 @@ import io.github.stavshamir.springwolf.example.dtos.ExamplePayloadDto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.ExchangeTypes; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Service; @@ -22,4 +26,13 @@ public void receiveAnotherPayload(AnotherPayloadDto payload) { logger.info("Received new message in another-queue: {}", payload.toString()); } + @RabbitListener(bindings = { + @QueueBinding( + exchange = @Exchange(name = "name", type = ExchangeTypes.TOPIC), + value = @Queue(name = "example-bindings-queue")) + }) + public void bindingsExample(AnotherPayloadDto payload) { + logger.info("Received new message in example-bindings-queue: {}", payload.toString()); + } + } diff --git a/springwolf-examples/springwolf-amqp-example/src/test/resources/asyncapi.json b/springwolf-examples/springwolf-amqp-example/src/test/resources/asyncapi.json index 3a28251c1..c9832fd09 100644 --- a/springwolf-examples/springwolf-amqp-example/src/test/resources/asyncapi.json +++ b/springwolf-examples/springwolf-amqp-example/src/test/resources/asyncapi.json @@ -12,6 +12,27 @@ } }, "channels": { + "example-bindings-queue": { + "publish": { + "bindings": { + "amqp": { + "expiration": 0, + "priority": 0, + "deliveryMode": 0, + "mandatory": false, + "timestamp": false, + "ack": false + } + }, + "message": { + "name": "io.github.stavshamir.springwolf.example.dtos.AnotherPayloadDto", + "title": "AnotherPayloadDto", + "payload": { + "$ref": "#/components/schemas/AnotherPayloadDto" + } + } + } + }, "another-queue": { "publish": { "bindings": { @@ -57,6 +78,25 @@ }, "components": { "schemas": { + "AnotherPayloadDto": { + "type": "object", + "properties": { + "foo": { + "type": "string" + }, + "example": { + "$ref": "#/components/schemas/ExamplePayloadDto" + } + }, + "example": { + "foo": "string", + "example": { + "someString": "string", + "someLong": 0, + "someEnum": "FOO1" + } + } + }, "ExamplePayloadDto": { "type": "object", "properties": { @@ -81,25 +121,6 @@ "someLong": 0, "someEnum": "FOO1" } - }, - "AnotherPayloadDto": { - "type": "object", - "properties": { - "foo": { - "type": "string" - }, - "example": { - "$ref": "#/components/schemas/ExamplePayloadDto" - } - }, - "example": { - "foo": "string", - "example": { - "someString": "string", - "someLong": 0, - "someEnum": "FOO1" - } - } } } }