This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 44654560d4c5 CAMEL-23032: camel-nats - Add AckPolicy so messages can
be retried when NACK due to routing failure. Fix infra-nats to run nats broker
with jetstream enabled.
44654560d4c5 is described below
commit 44654560d4c55e7e20fc5e236fe210952619f026
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Feb 26 15:30:56 2026 +0100
CAMEL-23032: camel-nats - Add AckPolicy so messages can be retried when
NACK due to routing failure. Fix infra-nats to run nats broker with jetstream
enabled.
---
.../generated/resources/org/apache/camel/catalog/components/nats.json | 4 ++--
.../resources/META-INF/org/apache/camel/component/nats/nats.json | 4 ++--
.../main/java/org/apache/camel/component/nats/NatsConfiguration.java | 2 +-
.../component/nats/jetstream/NatsJetstreamConsumerMaxDeliverIT.java | 2 +-
.../component/nats/jetstream/NatsJetstreamConsumerRedeliveryIT.java | 2 +-
.../camel/builder/component/dsl/NatsComponentBuilderFactory.java | 2 +-
.../apache/camel/builder/endpoint/dsl/NatsEndpointBuilderFactory.java | 4 ++--
7 files changed, 10 insertions(+), 10 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/nats.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/nats.json
index 91bcdd9ce121..938518bc3adc 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/nats.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/nats.json
@@ -41,7 +41,7 @@
"requestCleanupInterval": { "index": 14, "kind": "property",
"displayName": "Request Cleanup Interval", "group": "common", "label":
"common", "required": false, "type": "integer", "javaType": "int",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 5000,
"configurationClass": "org.apache.camel.component.nats.NatsConfiguration",
"configurationField": "configuration", "description": "Interval to clean up
cancelled\/timed out requests." },
"servers": { "index": 15, "kind": "property", "displayName": "Servers",
"group": "common", "label": "common", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "URLs to one or more NAT servers. Use comma to
separate URLs when specifying multiple servers." },
"verbose": { "index": 16, "kind": "property", "displayName": "Verbose",
"group": "common", "label": "", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Whether or not running in verbose mode" },
- "ackPolicy": { "index": 17, "kind": "property", "displayName": "Ack
Policy", "group": "consumer", "label": "consumer", "required": false, "type":
"enum", "javaType": "io.nats.client.api.AckPolicy", "enum": [ "none", "all",
"explicit" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "explicit", "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Acknowledgement mode. none = Messag [...]
+ "ackPolicy": { "index": 17, "kind": "property", "displayName": "Ack
Policy", "group": "consumer", "label": "consumer", "required": false, "type":
"enum", "javaType": "io.nats.client.api.AckPolicy", "enum": [ "None", "All",
"Explicit" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "Explicit", "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Acknowledgement mode. none = Messag [...]
"ackWait": { "index": 18, "kind": "property", "displayName": "Ack Wait",
"group": "consumer", "label": "consumer", "required": false, "type": "integer",
"javaType": "long", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": 30000, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "After a message is delivered to a consumer,
the server waits 30 seconds (default) for an acknowledgement [...]
"bridgeErrorHandler": { "index": 19, "kind": "property", "displayName":
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false, "description":
"Allows for bridging the consumer to the Camel routing Error Handler, which
mean any exceptions (if possible) occurred while the Camel consumer is trying
to pickup incoming messages, or the lik [...]
"durableName": { "index": 20, "kind": "property", "displayName": "Durable
Name", "group": "consumer", "label": "consumer", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Sets the name to assign to the JetStream
durable consumer. Setting this value makes the consumer durable. Th [...]
@@ -94,7 +94,7 @@
"requestCleanupInterval": { "index": 14, "kind": "parameter",
"displayName": "Request Cleanup Interval", "group": "common", "label":
"common", "required": false, "type": "integer", "javaType": "int",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 5000,
"configurationClass": "org.apache.camel.component.nats.NatsConfiguration",
"configurationField": "configuration", "description": "Interval to clean up
cancelled\/timed out requests." },
"servers": { "index": 15, "kind": "parameter", "displayName": "Servers",
"group": "common", "label": "common", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "URLs to one or more NAT servers. Use comma to
separate URLs when specifying multiple servers." },
"verbose": { "index": 16, "kind": "parameter", "displayName": "Verbose",
"group": "common", "label": "", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Whether or not running in verbose mode" },
- "ackPolicy": { "index": 17, "kind": "parameter", "displayName": "Ack
Policy", "group": "consumer", "label": "consumer", "required": false, "type":
"enum", "javaType": "io.nats.client.api.AckPolicy", "enum": [ "none", "all",
"explicit" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "explicit", "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Acknowledgement mode. none = Messa [...]
+ "ackPolicy": { "index": 17, "kind": "parameter", "displayName": "Ack
Policy", "group": "consumer", "label": "consumer", "required": false, "type":
"enum", "javaType": "io.nats.client.api.AckPolicy", "enum": [ "None", "All",
"Explicit" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "Explicit", "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Acknowledgement mode. none = Messa [...]
"ackWait": { "index": 18, "kind": "parameter", "displayName": "Ack Wait",
"group": "consumer", "label": "consumer", "required": false, "type": "integer",
"javaType": "long", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": 30000, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "After a message is delivered to a consumer,
the server waits 30 seconds (default) for an acknowledgemen [...]
"durableName": { "index": 19, "kind": "parameter", "displayName": "Durable
Name", "group": "consumer", "label": "consumer", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Sets the name to assign to the JetStream
durable consumer. Setting this value makes the consumer durable. T [...]
"maxDeliver": { "index": 20, "kind": "parameter", "displayName": "Max
Deliver", "group": "consumer", "label": "consumer", "required": false, "type":
"integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Maximum number of attempts to deliver a
message from Nats to a consumer. Once MaxDeliver is reached, the NATS server
sto [...]
diff --git
a/components/camel-nats/src/generated/resources/META-INF/org/apache/camel/component/nats/nats.json
b/components/camel-nats/src/generated/resources/META-INF/org/apache/camel/component/nats/nats.json
index 91bcdd9ce121..938518bc3adc 100644
---
a/components/camel-nats/src/generated/resources/META-INF/org/apache/camel/component/nats/nats.json
+++
b/components/camel-nats/src/generated/resources/META-INF/org/apache/camel/component/nats/nats.json
@@ -41,7 +41,7 @@
"requestCleanupInterval": { "index": 14, "kind": "property",
"displayName": "Request Cleanup Interval", "group": "common", "label":
"common", "required": false, "type": "integer", "javaType": "int",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 5000,
"configurationClass": "org.apache.camel.component.nats.NatsConfiguration",
"configurationField": "configuration", "description": "Interval to clean up
cancelled\/timed out requests." },
"servers": { "index": 15, "kind": "property", "displayName": "Servers",
"group": "common", "label": "common", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "URLs to one or more NAT servers. Use comma to
separate URLs when specifying multiple servers." },
"verbose": { "index": 16, "kind": "property", "displayName": "Verbose",
"group": "common", "label": "", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Whether or not running in verbose mode" },
- "ackPolicy": { "index": 17, "kind": "property", "displayName": "Ack
Policy", "group": "consumer", "label": "consumer", "required": false, "type":
"enum", "javaType": "io.nats.client.api.AckPolicy", "enum": [ "none", "all",
"explicit" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "explicit", "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Acknowledgement mode. none = Messag [...]
+ "ackPolicy": { "index": 17, "kind": "property", "displayName": "Ack
Policy", "group": "consumer", "label": "consumer", "required": false, "type":
"enum", "javaType": "io.nats.client.api.AckPolicy", "enum": [ "None", "All",
"Explicit" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "Explicit", "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Acknowledgement mode. none = Messag [...]
"ackWait": { "index": 18, "kind": "property", "displayName": "Ack Wait",
"group": "consumer", "label": "consumer", "required": false, "type": "integer",
"javaType": "long", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": 30000, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "After a message is delivered to a consumer,
the server waits 30 seconds (default) for an acknowledgement [...]
"bridgeErrorHandler": { "index": 19, "kind": "property", "displayName":
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false, "description":
"Allows for bridging the consumer to the Camel routing Error Handler, which
mean any exceptions (if possible) occurred while the Camel consumer is trying
to pickup incoming messages, or the lik [...]
"durableName": { "index": 20, "kind": "property", "displayName": "Durable
Name", "group": "consumer", "label": "consumer", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Sets the name to assign to the JetStream
durable consumer. Setting this value makes the consumer durable. Th [...]
@@ -94,7 +94,7 @@
"requestCleanupInterval": { "index": 14, "kind": "parameter",
"displayName": "Request Cleanup Interval", "group": "common", "label":
"common", "required": false, "type": "integer", "javaType": "int",
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 5000,
"configurationClass": "org.apache.camel.component.nats.NatsConfiguration",
"configurationField": "configuration", "description": "Interval to clean up
cancelled\/timed out requests." },
"servers": { "index": 15, "kind": "parameter", "displayName": "Servers",
"group": "common", "label": "common", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "URLs to one or more NAT servers. Use comma to
separate URLs when specifying multiple servers." },
"verbose": { "index": 16, "kind": "parameter", "displayName": "Verbose",
"group": "common", "label": "", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "autowired": false, "secret":
false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Whether or not running in verbose mode" },
- "ackPolicy": { "index": 17, "kind": "parameter", "displayName": "Ack
Policy", "group": "consumer", "label": "consumer", "required": false, "type":
"enum", "javaType": "io.nats.client.api.AckPolicy", "enum": [ "none", "all",
"explicit" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "explicit", "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Acknowledgement mode. none = Messa [...]
+ "ackPolicy": { "index": 17, "kind": "parameter", "displayName": "Ack
Policy", "group": "consumer", "label": "consumer", "required": false, "type":
"enum", "javaType": "io.nats.client.api.AckPolicy", "enum": [ "None", "All",
"Explicit" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "Explicit", "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Acknowledgement mode. none = Messa [...]
"ackWait": { "index": 18, "kind": "parameter", "displayName": "Ack Wait",
"group": "consumer", "label": "consumer", "required": false, "type": "integer",
"javaType": "long", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": 30000, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "After a message is delivered to a consumer,
the server waits 30 seconds (default) for an acknowledgemen [...]
"durableName": { "index": 19, "kind": "parameter", "displayName": "Durable
Name", "group": "consumer", "label": "consumer", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Sets the name to assign to the JetStream
durable consumer. Setting this value makes the consumer durable. T [...]
"maxDeliver": { "index": 20, "kind": "parameter", "displayName": "Max
Deliver", "group": "consumer", "label": "consumer", "required": false, "type":
"integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.nats.NatsConfiguration", "configurationField":
"configuration", "description": "Maximum number of attempts to deliver a
message from Nats to a consumer. Once MaxDeliver is reached, the NATS server
sto [...]
diff --git
a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConfiguration.java
b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConfiguration.java
index 7db5daccdca7..fee6e509fe4b 100644
---
a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConfiguration.java
+++
b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsConfiguration.java
@@ -75,7 +75,7 @@ public class NatsConfiguration implements Cloneable {
private boolean replyToDisabled;
@UriParam(label = "consumer")
private String maxMessages;
- @UriParam(label = "consumer", defaultValue = "explicit", enums =
"none,all,explicit")
+ @UriParam(label = "consumer", defaultValue = "Explicit", enums =
"None,All,Explicit")
private AckPolicy ackPolicy;
@UriParam(label = "consumer", defaultValue = "30000")
private long ackWait = 30000;
diff --git
a/components/camel-nats/src/test/java/org/apache/camel/component/nats/jetstream/NatsJetstreamConsumerMaxDeliverIT.java
b/components/camel-nats/src/test/java/org/apache/camel/component/nats/jetstream/NatsJetstreamConsumerMaxDeliverIT.java
index 558fd69efd30..85763e440a6f 100644
---
a/components/camel-nats/src/test/java/org/apache/camel/component/nats/jetstream/NatsJetstreamConsumerMaxDeliverIT.java
+++
b/components/camel-nats/src/test/java/org/apache/camel/component/nats/jetstream/NatsJetstreamConsumerMaxDeliverIT.java
@@ -62,7 +62,7 @@ public class NatsJetstreamConsumerMaxDeliverIT extends
NatsITSupport {
@Override
public void configure() {
String uri
- =
"nats:mytopic2?jetstreamEnabled=true&jetstreamName=mystream2&jetstreamAsync=false&durableName=camel2&pullSubscription=false&ackPolicy=explicit&nackWait=10&maxDeliver=3";
+ =
"nats:mytopic2?jetstreamEnabled=true&jetstreamName=mystream2&jetstreamAsync=false&durableName=camel2&pullSubscription=false&nackWait=10&maxDeliver=3";
from("direct:send")
// when running full test suite then send can fail due
to nats server setup/teardown
diff --git
a/components/camel-nats/src/test/java/org/apache/camel/component/nats/jetstream/NatsJetstreamConsumerRedeliveryIT.java
b/components/camel-nats/src/test/java/org/apache/camel/component/nats/jetstream/NatsJetstreamConsumerRedeliveryIT.java
index b72e96b7af36..7bb41acaaa3f 100644
---
a/components/camel-nats/src/test/java/org/apache/camel/component/nats/jetstream/NatsJetstreamConsumerRedeliveryIT.java
+++
b/components/camel-nats/src/test/java/org/apache/camel/component/nats/jetstream/NatsJetstreamConsumerRedeliveryIT.java
@@ -63,7 +63,7 @@ public class NatsJetstreamConsumerRedeliveryIT extends
NatsITSupport {
@Override
public void configure() {
String uri
- =
"nats:mytopic2?jetstreamEnabled=true&jetstreamName=mystream2&jetstreamAsync=false&durableName=camel2&pullSubscription=false&ackPolicy=explicit&nackWait=10";
+ =
"nats:mytopic2?jetstreamEnabled=true&jetstreamName=mystream2&jetstreamAsync=false&durableName=camel2&pullSubscription=false&nackWait=10";
from("direct:send")
// when running full test suite then send can fail due
to nats server setup/teardown
diff --git
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/NatsComponentBuilderFactory.java
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/NatsComponentBuilderFactory.java
index dd6bf8b64a5c..b78c037b7c72 100644
---
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/NatsComponentBuilderFactory.java
+++
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/NatsComponentBuilderFactory.java
@@ -358,7 +358,7 @@ public interface NatsComponentBuilderFactory {
* The option is a:
* <code>io.nats.client.api.AckPolicy</code> type.
*
- * Default: explicit
+ * Default: Explicit
* Group: consumer
*
* @param ackPolicy the value to set
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/NatsEndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/NatsEndpointBuilderFactory.java
index 4b9f9b7de854..004f94329b6b 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/NatsEndpointBuilderFactory.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/NatsEndpointBuilderFactory.java
@@ -519,7 +519,7 @@ public interface NatsEndpointBuilderFactory {
*
* The option is a: <code>io.nats.client.api.AckPolicy</code> type.
*
- * Default: explicit
+ * Default: Explicit
* Group: consumer
*
* @param ackPolicy the value to set
@@ -545,7 +545,7 @@ public interface NatsEndpointBuilderFactory {
* The option will be converted to a
* <code>io.nats.client.api.AckPolicy</code> type.
*
- * Default: explicit
+ * Default: Explicit
* Group: consumer
*
* @param ackPolicy the value to set