From 95c2f7ee4991f505ffefdd15d59c27451aea209b Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Mon, 11 Jun 2018 17:39:17 -0400 Subject: [PATCH] GH-155: Support overflowBehavior Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-rabbit/issues/155 Add `overFlowBehavior` and `dlqOverflowBehavior` queue properties. Resolves #158 --- .../properties/RabbitCommonProperties.java | 26 +++++++++++++++++++ .../RabbitExchangeQueueProvisioner.java | 19 +++++++++----- .../src/main/asciidoc/overview.adoc | 8 ++++++ .../binder/rabbit/RabbitBinderTests.java | 4 +++ 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/properties/RabbitCommonProperties.java b/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/properties/RabbitCommonProperties.java index 1dcc5c425..a30709a5f 100644 --- a/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/properties/RabbitCommonProperties.java +++ b/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/properties/RabbitCommonProperties.java @@ -164,6 +164,16 @@ public abstract class RabbitCommonProperties { */ private boolean dlqLazy; + /** + * action when maxLength or maxLengthBytes is exceeded + */ + private String overflowBehavior; + + /** + * action when maxLength or maxLengthBytes is exceeded + */ + private String dlqOverflowBehavior; + public String getExchangeType() { return this.exchangeType; } @@ -381,4 +391,20 @@ public abstract class RabbitCommonProperties { this.dlqLazy = dlqLazy; } + public String getOverflowBehavior() { + return this.overflowBehavior; + } + + public void setOverflowBehavior(String overflowBehavior) { + this.overflowBehavior = overflowBehavior; + } + + public String getDlqOverflowBehavior() { + return this.dlqOverflowBehavior; + } + + public void setDlqOverflowBehavior(String dlqOverflowBehavior) { + this.dlqOverflowBehavior = dlqOverflowBehavior; + } + } diff --git a/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/provisioning/RabbitExchangeQueueProvisioner.java b/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/provisioning/RabbitExchangeQueueProvisioner.java index 67706d5fb..9c70f8894 100644 --- a/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/provisioning/RabbitExchangeQueueProvisioner.java +++ b/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/provisioning/RabbitExchangeQueueProvisioner.java @@ -380,8 +380,6 @@ public class RabbitExchangeQueueProvisioner implements ApplicationListener args, Integer expires, Integer maxLength, Integer maxLengthBytes, - Integer maxPriority, Integer ttl, boolean lazy) { + private void additionalArgs(Map args, RabbitCommonProperties properties, boolean isDlq) { + Integer expires = isDlq ? properties.getDlqExpires() : properties.getExpires(); + Integer maxLength = isDlq ? properties.getDlqMaxLength() : properties.getMaxLength(); + Integer maxLengthBytes = isDlq ? properties.getDlqMaxLengthBytes() : properties.getMaxLengthBytes(); + Integer maxPriority = isDlq ? properties.getDlqMaxPriority() : properties.getMaxPriority(); + Integer ttl = isDlq ? properties.getDlqTtl() : properties.getTtl(); + boolean lazy = isDlq ? properties.isDlqLazy() : properties.isLazy(); + String overflow = isDlq ? properties.getDlqOverflowBehavior() : properties.getOverflowBehavior(); if (expires != null) { args.put("x-expires", expires); } @@ -417,6 +419,9 @@ public class RabbitExchangeQueueProvisioner implements ApplicationListener