Skip to content

Commit

Permalink
Configurable request timeout in subscription view. Addidtionaly set d…
Browse files Browse the repository at this point in the history
…efault value to 'false' for store offline property in topic view. (#1353)
  • Loading branch information
druminski committed Jul 14, 2021
1 parent dc9144f commit 3d14003
Show file tree
Hide file tree
Showing 8 changed files with 83 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ subscriptions.factory('SubscriptionFactory', ['SUBSCRIPTION_CONFIG', function (s
messageBackoff: 1000,
sendingDelay: 0,
backoffMultiplier: 1.0,
backoffMaxIntervalInSec: 600
backoffMaxIntervalInSec: 600,
requestTimeout: 1000
},
monitoringDetails: {
severity: 'NON_IMPORTANT',
Expand Down
1 change: 1 addition & 0 deletions hermes-console/static/js/console/topic/TopicFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ topics.factory('TopicFactory', ['TOPIC_CONFIG',
source: ''
},
offlineStorage: {
enabled: false,
retentionTime: {
duration: 60
}
Expand Down
15 changes: 13 additions & 2 deletions hermes-console/static/partials/modal/editSubscription.html
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,23 @@ <h3 class="modal-title" ng-show="operation === 'EDIT'"><small>Edit:</small> {{su
</div>
</div>

<div class="form-group {{subscriptionForm.subscriptionRequestTimeout.$valid ? '' : 'has-error'}}" ng-show="subscription.deliveryType === 'BATCH'">
<div class="form-group {{subscriptionForm.subscriptionRequestTimeout.$valid ? '' : 'has-error'}}">
<label for="subscriptionRequestTimeout" class="col-md-3 control-label">Request timeout</label>
<div class="col-md-9">
<div class="input-group">
<input type="number" min="0" max="1000000" step="1" ng-required="subscription.deliveryType === 'BATCH'" class="form-control" id="subscriptionRequestTimeout" name="subscriptionRequestTimeout" placeholder="Max time for processing message by subscriber." ng-model="subscription.subscriptionPolicy.requestTimeout"/>
<input type="number" min="0" max="{{subscription.deliveryType === 'SERIAL' ? 10000 : 1000000}}"
step="1" ng-required="subscription.deliveryType === 'BATCH'" class="form-control"
id="subscriptionRequestTimeout" name="subscriptionRequestTimeout"
placeholder="Max time for processing message by the subscriber"
ng-model="subscription.subscriptionPolicy.requestTimeout"/>
<span class="input-group-addon">milliseconds</span>
<span class="input-group-addon helpme-addon" uib-tooltip="Max time for processing message by the subscriber. The value is used in Hermes http client.">?</span>
</div>
<div class="alert alert-warning"
ng-show="subscription.subscriptionPolicy.requestTimeout >= config.requestTimeoutWarningThreshold && subscription.deliveryType === 'SERIAL'">
<strong>High request timeout <span class="glyphicon glyphicon-alert" /></strong>
Please consider lower value to comply with the fail-fast principle.
In some cases it is better to rethink the design of a subscriber rather than increase the timeout.
</div>
</div>
</div>
Expand Down
4 changes: 4 additions & 0 deletions hermes-console/static/partials/subscription.html
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,10 @@ <h3 class="panel-title">Properties</h3>
<strong>Message TTL:</strong> {{subscription.subscriptionPolicy.messageTtl}} seconds
<span uib-popover='Amount of time a message can be held in sending queue and retried. If message will not be delivered during this time, it will be discarded.' popover-trigger="mouseenter" class="fa helpme pull-right">&#xf128;</span>
</p>
<p>
<strong>Request timeout:</strong> {{subscription.subscriptionPolicy.requestTimeout}} milliseconds
<span uib-popover='Http client request timeout in milliseconds.' popover-trigger="mouseenter" class="fa helpme pull-right">&#xf128;</span>
</p>
<p><strong>Message delivery tracking:</strong> {{ trackingModeName[subscription.trackingMode] }}</p>
<hr/>
<p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,7 @@ public static final class DefaultTopicView {
private String ack = "LEADER";
private String contentType = "JSON";
private RetentionTime retentionTime = new RetentionTime();
private DefaultOfflineStorageView offlineStorage = new DefaultOfflineStorageView();

public String getAck() {
return ack;
Expand All @@ -450,6 +451,35 @@ public RetentionTime getRetentionTime() {
public void setRetentionTime(RetentionTime retentionTime) {
this.retentionTime = retentionTime;
}

public DefaultOfflineStorageView getOfflineStorage() {
return offlineStorage;
}

public void setOfflineStorage(DefaultOfflineStorageView offlineStorage) {
this.offlineStorage = offlineStorage;
}
}

public static final class DefaultOfflineStorageView {
private boolean enabled = false;
private RetentionTime retentionTime = new RetentionTime();

public boolean isEnabled() {
return enabled;
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
}

public RetentionTime getRetentionTime() {
return retentionTime;
}

public void setRetentionTime(RetentionTime retentionTime) {
this.retentionTime = retentionTime;
}
}

public static final class RetentionTime {
Expand Down Expand Up @@ -577,6 +607,7 @@ public static final class SubscriptionView {
private Map<String, EndpointAddressResolverMetadata> endpointAddressResolverMetadata = new HashMap<>();
private boolean showHeadersFilter = false;
private boolean showFixedHeaders = false;
private int requestTimeoutWarningThreshold = 1001;
private DefaultSubscriptionView defaults = new DefaultSubscriptionView();
private List<SubscriptionDeliveryType> deliveryTypes = Lists.newArrayList(
new SubscriptionDeliveryType("SERIAL", "SERIAL"),
Expand Down Expand Up @@ -622,6 +653,14 @@ public boolean isShowFixedHeaders() {
public void setShowFixedHeaders(boolean showFixedHeaders) {
this.showFixedHeaders = showFixedHeaders;
}

public int getRequestTimeoutWarningThreshold() {
return requestTimeoutWarningThreshold;
}

public void setRequestTimeoutWarningThreshold(int requestTimeoutWarningThreshold) {
this.requestTimeoutWarningThreshold = requestTimeoutWarningThreshold;
}
}

public static final class GroupView {
Expand Down Expand Up @@ -689,6 +728,7 @@ public void setDeliveryType(String deliveryType) {

public static final class SubscriptionPolicy {
private int messageTtl = 3600;
private int requestTimeout = 1000;

public int getMessageTtl() {
return messageTtl;
Expand All @@ -697,6 +737,14 @@ public int getMessageTtl() {
public void setMessageTtl(int messageTtl) {
this.messageTtl = messageTtl;
}

public int getRequestTimeout() {
return requestTimeout;
}

public void setRequestTimeout(int requestTimeout) {
this.requestTimeout = requestTimeout;
}
}

public static final class SubscriptionDeliveryType {
Expand Down
5 changes: 5 additions & 0 deletions hermes-management/src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ console:
label: Hours
- value: TimeUnit.DAYS
label: Days
defaults:
offlineStorage:
retentionTime:
duration: 60

subscription:
showHeadersFilter: false
showFixedHeaders: false
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"subscription": {
"showHeadersFilter": false,
"showFixedHeaders": false,
"requestTimeoutWarningThreshold": 1001,
"deliveryTypes": [
{"value": "SERIAL", "label": "SERIAL"},
{"value": "BATCH", "label": "BATCH"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,14 @@
"topic": {
"messagePreviewEnabled": true,
"offlineClientsEnabled": false
},
"subscription": {
"showHeadersFilter": false,
"showFixedHeaders": false,
"requestTimeoutWarningThreshold": 1001,
"deliveryTypes": [
{"value": "SERIAL", "label": "SERIAL"},
{"value": "BATCH", "label": "BATCH"}
]
}
}

0 comments on commit 3d14003

Please sign in to comment.