This is an automated email from the ASF dual-hosted git repository. jamesnetherton 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 d8d24a7c0d6 CAMEL-20662: Add more consumer options for the gRPC server setup d8d24a7c0d6 is described below commit d8d24a7c0d612728bc4ded32548b41c6b1ff486d Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Thu Apr 11 10:31:32 2024 +0100 CAMEL-20662: Add more consumer options for the gRPC server setup --- .../org/apache/camel/catalog/components/grpc.json | 61 ++-- .../component/grpc/GrpcEndpointConfigurer.java | 66 ++++ .../component/grpc/GrpcEndpointUriFactory.java | 13 +- .../org/apache/camel/component/grpc/grpc.json | 61 ++-- .../camel/component/grpc/GrpcConfiguration.java | 168 ++++++++- .../apache/camel/component/grpc/GrpcConsumer.java | 20 + .../grpc/GrpcConsumerConfigurationTest.java | 32 ++ .../endpoint/dsl/GrpcEndpointBuilderFactory.java | 403 ++++++++++++++++++++- .../apache/camel/kotlin/components/GrpcUriDsl.kt | 190 +++++++++- 9 files changed, 958 insertions(+), 56 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/grpc.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/grpc.json index 6ab6b63d56d..8df4313896e 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/grpc.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/grpc.json @@ -43,30 +43,41 @@ "consumerStrategy": { "index": 6, "kind": "parameter", "displayName": "Consumer Strategy", "group": "consumer", "label": "consumer", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcConsumerStrategy", "enum": [ "AGGREGATION", "PROPAGATION", "DELEGATION" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PROPAGATION", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configu [...] "forwardOnCompleted": { "index": 7, "kind": "parameter", "displayName": "Forward On Completed", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Determines if onCompleted events should be pushed to the Camel route." }, "forwardOnError": { "index": 8, "kind": "parameter", "displayName": "Forward On Error", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Determines if onError events should be pushed to the Camel route. Exceptions will be s [...] - "maxConcurrentCallsPerConnection": { "index": 9, "kind": "parameter", "displayName": "Max Concurrent Calls Per Connection", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2147483647, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The maximum number of concurrent calls permitted [...] - "routeControlledStreamObserver": { "index": 10, "kind": "parameter", "displayName": "Route Controlled Stream Observer", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Lets the route to take control over stream observer. I [...] - "bridgeErrorHandler": { "index": 11, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "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 [...] - "exceptionHandler": { "index": 12, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...] - "exchangePattern": { "index": 13, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." }, - "autoDiscoverClientInterceptors": { "index": 14, "kind": "parameter", "displayName": "Auto Discover Client Interceptors", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Setting the autoDiscoverClientInterceptors mechanism, [...] - "inheritExchangePropertiesForReplies": { "index": 15, "kind": "parameter", "displayName": "Inherit Exchange Properties For Replies", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Copies exchange properties from original [...] - "method": { "index": 16, "kind": "parameter", "displayName": "Method", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "gRPC method name" }, - "producerStrategy": { "index": 17, "kind": "parameter", "displayName": "Producer Strategy", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcProducerStrategy", "enum": [ "SIMPLE", "STREAMING" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "SIMPLE", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": " [...] - "streamRepliesTo": { "index": 18, "kind": "parameter", "displayName": "Stream Replies To", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "When using STREAMING client mode, it indicates the endpoint where responses should be forwarded." }, - "toRouteControlledStreamObserver": { "index": 19, "kind": "parameter", "displayName": "To Route Controlled Stream Observer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Expects that exchange property GrpcConstants.GRPC [...] - "userAgent": { "index": 20, "kind": "parameter", "displayName": "User Agent", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The user agent header passed to the server" }, - "lazyStartProducer": { "index": 21, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...] - "synchronous": { "index": 22, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets whether synchronous processing should be strictly used" }, - "authenticationType": { "index": 23, "kind": "parameter", "displayName": "Authentication Type", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcAuthType", "enum": [ "NONE", "GOOGLE", "JWT" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "NONE", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Auth [...] - "jwtAlgorithm": { "index": 24, "kind": "parameter", "displayName": "Jwt Algorithm", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm", "enum": [ "HMAC256", "HMAC384", "HMAC512" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HMAC256", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description [...] - "jwtIssuer": { "index": 25, "kind": "parameter", "displayName": "Jwt Issuer", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token issuer" }, - "jwtSecret": { "index": 26, "kind": "parameter", "displayName": "Jwt Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token secret" }, - "jwtSubject": { "index": 27, "kind": "parameter", "displayName": "Jwt Subject", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token subject" }, - "keyCertChainResource": { "index": 28, "kind": "parameter", "displayName": "Key Cert Chain Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The X.509 certificate chain file r [...] - "keyPassword": { "index": 29, "kind": "parameter", "displayName": "Key Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The PKCS#8 private key file password" }, - "keyResource": { "index": 30, "kind": "parameter", "displayName": "Key Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The PKCS#8 private key file resource in PEM format link" }, - "negotiationType": { "index": 31, "kind": "parameter", "displayName": "Negotiation Type", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "io.grpc.netty.NegotiationType", "enum": [ "TLS", "PLAINTEXT_UPGRADE", "PLAINTEXT" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PLAINTEXT", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Iden [...] - "serviceAccountResource": { "index": 32, "kind": "parameter", "displayName": "Service Account Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Service Account key file in JSO [...] - "trustCertCollectionResource": { "index": 33, "kind": "parameter", "displayName": "Trust Cert Collection Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The trusted certific [...] + "initialFlowControlWindow": { "index": 9, "kind": "parameter", "displayName": "Initial Flow Control Window", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1048576, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets the initial flow control window in bytes." }, + "keepAliveTime": { "index": 10, "kind": "parameter", "displayName": "Keep Alive Time", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 7200000, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom keepalive time in milliseconds, the delay time for sending next keepalive [...] + "keepAliveTimeout": { "index": 11, "kind": "parameter", "displayName": "Keep Alive Timeout", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20000, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom keepalive timeout in milliseconds, the timeout for keepalive ping requ [...] + "maxConcurrentCallsPerConnection": { "index": 12, "kind": "parameter", "displayName": "Max Concurrent Calls Per Connection", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2147483647, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The maximum number of concurrent calls permitted [...] + "maxConnectionAge": { "index": 13, "kind": "parameter", "displayName": "Max Connection Age", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 9223372036854775807, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom max connection age in milliseconds. Connections lasting [...] + "maxConnectionAgeGrace": { "index": 14, "kind": "parameter", "displayName": "Max Connection Age Grace", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 9223372036854775807, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom grace time in milliseconds for the graceful c [...] + "maxConnectionIdle": { "index": 15, "kind": "parameter", "displayName": "Max Connection Idle", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 9223372036854775807, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom max connection idle time in milliseconds. Connection b [...] + "maxInboundMetadataSize": { "index": 16, "kind": "parameter", "displayName": "Max Inbound Metadata Size", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 8192, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets the maximum size of metadata allowed to be received. The default is [...] + "maxRstFramesPerWindow": { "index": 17, "kind": "parameter", "displayName": "Max Rst Frames Per Window", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Limits the rate of incoming RST_STREAM frames per connection to maxRstFramesP [...] + "maxRstPeriodSeconds": { "index": 18, "kind": "parameter", "displayName": "Max Rst Period Seconds", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Limits the rate of incoming RST_STREAM frames per maxRstPeriodSeconds. This option [...] + "permitKeepAliveTime": { "index": 19, "kind": "parameter", "displayName": "Permit Keep Alive Time", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 300000, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets the most aggressive keep-alive time in milliseconds that clients are pe [...] + "permitKeepAliveWithoutCalls": { "index": 20, "kind": "parameter", "displayName": "Permit Keep Alive Without Calls", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets whether to allow clients to send keep-alive HTTP\/ 2 [...] + "routeControlledStreamObserver": { "index": 21, "kind": "parameter", "displayName": "Route Controlled Stream Observer", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Lets the route to take control over stream observer. I [...] + "bridgeErrorHandler": { "index": 22, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "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 [...] + "exceptionHandler": { "index": 23, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...] + "exchangePattern": { "index": 24, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." }, + "autoDiscoverClientInterceptors": { "index": 25, "kind": "parameter", "displayName": "Auto Discover Client Interceptors", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Setting the autoDiscoverClientInterceptors mechanism, [...] + "inheritExchangePropertiesForReplies": { "index": 26, "kind": "parameter", "displayName": "Inherit Exchange Properties For Replies", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Copies exchange properties from original [...] + "method": { "index": 27, "kind": "parameter", "displayName": "Method", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "gRPC method name" }, + "producerStrategy": { "index": 28, "kind": "parameter", "displayName": "Producer Strategy", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcProducerStrategy", "enum": [ "SIMPLE", "STREAMING" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "SIMPLE", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": " [...] + "streamRepliesTo": { "index": 29, "kind": "parameter", "displayName": "Stream Replies To", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "When using STREAMING client mode, it indicates the endpoint where responses should be forwarded." }, + "toRouteControlledStreamObserver": { "index": 30, "kind": "parameter", "displayName": "To Route Controlled Stream Observer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Expects that exchange property GrpcConstants.GRPC [...] + "userAgent": { "index": 31, "kind": "parameter", "displayName": "User Agent", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The user agent header passed to the server" }, + "lazyStartProducer": { "index": 32, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...] + "synchronous": { "index": 33, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets whether synchronous processing should be strictly used" }, + "authenticationType": { "index": 34, "kind": "parameter", "displayName": "Authentication Type", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcAuthType", "enum": [ "NONE", "GOOGLE", "JWT" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "NONE", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Auth [...] + "jwtAlgorithm": { "index": 35, "kind": "parameter", "displayName": "Jwt Algorithm", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm", "enum": [ "HMAC256", "HMAC384", "HMAC512" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HMAC256", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description [...] + "jwtIssuer": { "index": 36, "kind": "parameter", "displayName": "Jwt Issuer", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token issuer" }, + "jwtSecret": { "index": 37, "kind": "parameter", "displayName": "Jwt Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token secret" }, + "jwtSubject": { "index": 38, "kind": "parameter", "displayName": "Jwt Subject", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token subject" }, + "keyCertChainResource": { "index": 39, "kind": "parameter", "displayName": "Key Cert Chain Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The X.509 certificate chain file r [...] + "keyPassword": { "index": 40, "kind": "parameter", "displayName": "Key Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The PKCS#8 private key file password" }, + "keyResource": { "index": 41, "kind": "parameter", "displayName": "Key Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The PKCS#8 private key file resource in PEM format link" }, + "negotiationType": { "index": 42, "kind": "parameter", "displayName": "Negotiation Type", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "io.grpc.netty.NegotiationType", "enum": [ "TLS", "PLAINTEXT_UPGRADE", "PLAINTEXT" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PLAINTEXT", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Iden [...] + "serviceAccountResource": { "index": 43, "kind": "parameter", "displayName": "Service Account Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Service Account key file in JSO [...] + "trustCertCollectionResource": { "index": 44, "kind": "parameter", "displayName": "Trust Cert Collection Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The trusted certific [...] } } diff --git a/components/camel-grpc/src/generated/java/org/apache/camel/component/grpc/GrpcEndpointConfigurer.java b/components/camel-grpc/src/generated/java/org/apache/camel/component/grpc/GrpcEndpointConfigurer.java index c982e98b20c..bf01e1ddc67 100644 --- a/components/camel-grpc/src/generated/java/org/apache/camel/component/grpc/GrpcEndpointConfigurer.java +++ b/components/camel-grpc/src/generated/java/org/apache/camel/component/grpc/GrpcEndpointConfigurer.java @@ -43,6 +43,8 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "forwardOnError": target.getConfiguration().setForwardOnError(property(camelContext, boolean.class, value)); return true; case "inheritexchangepropertiesforreplies": case "inheritExchangePropertiesForReplies": target.getConfiguration().setInheritExchangePropertiesForReplies(property(camelContext, boolean.class, value)); return true; + case "initialflowcontrolwindow": + case "initialFlowControlWindow": target.getConfiguration().setInitialFlowControlWindow(property(camelContext, int.class, value)); return true; case "jwtalgorithm": case "jwtAlgorithm": target.getConfiguration().setJwtAlgorithm(property(camelContext, org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm.class, value)); return true; case "jwtissuer": @@ -51,6 +53,10 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "jwtSecret": target.getConfiguration().setJwtSecret(property(camelContext, java.lang.String.class, value)); return true; case "jwtsubject": case "jwtSubject": target.getConfiguration().setJwtSubject(property(camelContext, java.lang.String.class, value)); return true; + case "keepalivetime": + case "keepAliveTime": target.getConfiguration().setKeepAliveTime(property(camelContext, long.class, value)); return true; + case "keepalivetimeout": + case "keepAliveTimeout": target.getConfiguration().setKeepAliveTimeout(property(camelContext, long.class, value)); return true; case "keycertchainresource": case "keyCertChainResource": target.getConfiguration().setKeyCertChainResource(property(camelContext, java.lang.String.class, value)); return true; case "keypassword": @@ -61,11 +67,27 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "maxconcurrentcallsperconnection": case "maxConcurrentCallsPerConnection": target.getConfiguration().setMaxConcurrentCallsPerConnection(property(camelContext, int.class, value)); return true; + case "maxconnectionage": + case "maxConnectionAge": target.getConfiguration().setMaxConnectionAge(property(camelContext, long.class, value)); return true; + case "maxconnectionagegrace": + case "maxConnectionAgeGrace": target.getConfiguration().setMaxConnectionAgeGrace(property(camelContext, long.class, value)); return true; + case "maxconnectionidle": + case "maxConnectionIdle": target.getConfiguration().setMaxConnectionIdle(property(camelContext, long.class, value)); return true; + case "maxinboundmetadatasize": + case "maxInboundMetadataSize": target.getConfiguration().setMaxInboundMetadataSize(property(camelContext, int.class, value)); return true; case "maxmessagesize": case "maxMessageSize": target.getConfiguration().setMaxMessageSize(property(camelContext, int.class, value)); return true; + case "maxrstframesperwindow": + case "maxRstFramesPerWindow": target.getConfiguration().setMaxRstFramesPerWindow(property(camelContext, int.class, value)); return true; + case "maxrstperiodseconds": + case "maxRstPeriodSeconds": target.getConfiguration().setMaxRstPeriodSeconds(property(camelContext, int.class, value)); return true; case "method": target.getConfiguration().setMethod(property(camelContext, java.lang.String.class, value)); return true; case "negotiationtype": case "negotiationType": target.getConfiguration().setNegotiationType(property(camelContext, io.grpc.netty.NegotiationType.class, value)); return true; + case "permitkeepalivetime": + case "permitKeepAliveTime": target.getConfiguration().setPermitKeepAliveTime(property(camelContext, long.class, value)); return true; + case "permitkeepalivewithoutcalls": + case "permitKeepAliveWithoutCalls": target.getConfiguration().setPermitKeepAliveWithoutCalls(property(camelContext, boolean.class, value)); return true; case "producerstrategy": case "producerStrategy": target.getConfiguration().setProducerStrategy(property(camelContext, org.apache.camel.component.grpc.GrpcProducerStrategy.class, value)); return true; case "routecontrolledstreamobserver": @@ -110,6 +132,8 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "forwardOnError": return boolean.class; case "inheritexchangepropertiesforreplies": case "inheritExchangePropertiesForReplies": return boolean.class; + case "initialflowcontrolwindow": + case "initialFlowControlWindow": return int.class; case "jwtalgorithm": case "jwtAlgorithm": return org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm.class; case "jwtissuer": @@ -118,6 +142,10 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "jwtSecret": return java.lang.String.class; case "jwtsubject": case "jwtSubject": return java.lang.String.class; + case "keepalivetime": + case "keepAliveTime": return long.class; + case "keepalivetimeout": + case "keepAliveTimeout": return long.class; case "keycertchainresource": case "keyCertChainResource": return java.lang.String.class; case "keypassword": @@ -128,11 +156,27 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "lazyStartProducer": return boolean.class; case "maxconcurrentcallsperconnection": case "maxConcurrentCallsPerConnection": return int.class; + case "maxconnectionage": + case "maxConnectionAge": return long.class; + case "maxconnectionagegrace": + case "maxConnectionAgeGrace": return long.class; + case "maxconnectionidle": + case "maxConnectionIdle": return long.class; + case "maxinboundmetadatasize": + case "maxInboundMetadataSize": return int.class; case "maxmessagesize": case "maxMessageSize": return int.class; + case "maxrstframesperwindow": + case "maxRstFramesPerWindow": return int.class; + case "maxrstperiodseconds": + case "maxRstPeriodSeconds": return int.class; case "method": return java.lang.String.class; case "negotiationtype": case "negotiationType": return io.grpc.netty.NegotiationType.class; + case "permitkeepalivetime": + case "permitKeepAliveTime": return long.class; + case "permitkeepalivewithoutcalls": + case "permitKeepAliveWithoutCalls": return boolean.class; case "producerstrategy": case "producerStrategy": return org.apache.camel.component.grpc.GrpcProducerStrategy.class; case "routecontrolledstreamobserver": @@ -178,6 +222,8 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "forwardOnError": return target.getConfiguration().isForwardOnError(); case "inheritexchangepropertiesforreplies": case "inheritExchangePropertiesForReplies": return target.getConfiguration().isInheritExchangePropertiesForReplies(); + case "initialflowcontrolwindow": + case "initialFlowControlWindow": return target.getConfiguration().getInitialFlowControlWindow(); case "jwtalgorithm": case "jwtAlgorithm": return target.getConfiguration().getJwtAlgorithm(); case "jwtissuer": @@ -186,6 +232,10 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "jwtSecret": return target.getConfiguration().getJwtSecret(); case "jwtsubject": case "jwtSubject": return target.getConfiguration().getJwtSubject(); + case "keepalivetime": + case "keepAliveTime": return target.getConfiguration().getKeepAliveTime(); + case "keepalivetimeout": + case "keepAliveTimeout": return target.getConfiguration().getKeepAliveTimeout(); case "keycertchainresource": case "keyCertChainResource": return target.getConfiguration().getKeyCertChainResource(); case "keypassword": @@ -196,11 +246,27 @@ public class GrpcEndpointConfigurer extends PropertyConfigurerSupport implements case "lazyStartProducer": return target.isLazyStartProducer(); case "maxconcurrentcallsperconnection": case "maxConcurrentCallsPerConnection": return target.getConfiguration().getMaxConcurrentCallsPerConnection(); + case "maxconnectionage": + case "maxConnectionAge": return target.getConfiguration().getMaxConnectionAge(); + case "maxconnectionagegrace": + case "maxConnectionAgeGrace": return target.getConfiguration().getMaxConnectionAgeGrace(); + case "maxconnectionidle": + case "maxConnectionIdle": return target.getConfiguration().getMaxConnectionIdle(); + case "maxinboundmetadatasize": + case "maxInboundMetadataSize": return target.getConfiguration().getMaxInboundMetadataSize(); case "maxmessagesize": case "maxMessageSize": return target.getConfiguration().getMaxMessageSize(); + case "maxrstframesperwindow": + case "maxRstFramesPerWindow": return target.getConfiguration().getMaxRstFramesPerWindow(); + case "maxrstperiodseconds": + case "maxRstPeriodSeconds": return target.getConfiguration().getMaxRstPeriodSeconds(); case "method": return target.getConfiguration().getMethod(); case "negotiationtype": case "negotiationType": return target.getConfiguration().getNegotiationType(); + case "permitkeepalivetime": + case "permitKeepAliveTime": return target.getConfiguration().getPermitKeepAliveTime(); + case "permitkeepalivewithoutcalls": + case "permitKeepAliveWithoutCalls": return target.getConfiguration().isPermitKeepAliveWithoutCalls(); case "producerstrategy": case "producerStrategy": return target.getConfiguration().getProducerStrategy(); case "routecontrolledstreamobserver": diff --git a/components/camel-grpc/src/generated/java/org/apache/camel/component/grpc/GrpcEndpointUriFactory.java b/components/camel-grpc/src/generated/java/org/apache/camel/component/grpc/GrpcEndpointUriFactory.java index fe990fa1072..8ab3efc2b69 100644 --- a/components/camel-grpc/src/generated/java/org/apache/camel/component/grpc/GrpcEndpointUriFactory.java +++ b/components/camel-grpc/src/generated/java/org/apache/camel/component/grpc/GrpcEndpointUriFactory.java @@ -21,7 +21,7 @@ public class GrpcEndpointUriFactory extends org.apache.camel.support.component.E private static final Set<String> SECRET_PROPERTY_NAMES; private static final Set<String> MULTI_VALUE_PREFIXES; static { - Set<String> props = new HashSet<>(34); + Set<String> props = new HashSet<>(45); props.add("authenticationType"); props.add("autoDiscoverClientInterceptors"); props.add("autoDiscoverServerInterceptors"); @@ -34,18 +34,29 @@ public class GrpcEndpointUriFactory extends org.apache.camel.support.component.E props.add("forwardOnError"); props.add("host"); props.add("inheritExchangePropertiesForReplies"); + props.add("initialFlowControlWindow"); props.add("jwtAlgorithm"); props.add("jwtIssuer"); props.add("jwtSecret"); props.add("jwtSubject"); + props.add("keepAliveTime"); + props.add("keepAliveTimeout"); props.add("keyCertChainResource"); props.add("keyPassword"); props.add("keyResource"); props.add("lazyStartProducer"); props.add("maxConcurrentCallsPerConnection"); + props.add("maxConnectionAge"); + props.add("maxConnectionAgeGrace"); + props.add("maxConnectionIdle"); + props.add("maxInboundMetadataSize"); props.add("maxMessageSize"); + props.add("maxRstFramesPerWindow"); + props.add("maxRstPeriodSeconds"); props.add("method"); props.add("negotiationType"); + props.add("permitKeepAliveTime"); + props.add("permitKeepAliveWithoutCalls"); props.add("port"); props.add("producerStrategy"); props.add("routeControlledStreamObserver"); diff --git a/components/camel-grpc/src/generated/resources/META-INF/org/apache/camel/component/grpc/grpc.json b/components/camel-grpc/src/generated/resources/META-INF/org/apache/camel/component/grpc/grpc.json index 6ab6b63d56d..8df4313896e 100644 --- a/components/camel-grpc/src/generated/resources/META-INF/org/apache/camel/component/grpc/grpc.json +++ b/components/camel-grpc/src/generated/resources/META-INF/org/apache/camel/component/grpc/grpc.json @@ -43,30 +43,41 @@ "consumerStrategy": { "index": 6, "kind": "parameter", "displayName": "Consumer Strategy", "group": "consumer", "label": "consumer", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcConsumerStrategy", "enum": [ "AGGREGATION", "PROPAGATION", "DELEGATION" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PROPAGATION", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configu [...] "forwardOnCompleted": { "index": 7, "kind": "parameter", "displayName": "Forward On Completed", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Determines if onCompleted events should be pushed to the Camel route." }, "forwardOnError": { "index": 8, "kind": "parameter", "displayName": "Forward On Error", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Determines if onError events should be pushed to the Camel route. Exceptions will be s [...] - "maxConcurrentCallsPerConnection": { "index": 9, "kind": "parameter", "displayName": "Max Concurrent Calls Per Connection", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2147483647, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The maximum number of concurrent calls permitted [...] - "routeControlledStreamObserver": { "index": 10, "kind": "parameter", "displayName": "Route Controlled Stream Observer", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Lets the route to take control over stream observer. I [...] - "bridgeErrorHandler": { "index": 11, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "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 [...] - "exceptionHandler": { "index": 12, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...] - "exchangePattern": { "index": 13, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." }, - "autoDiscoverClientInterceptors": { "index": 14, "kind": "parameter", "displayName": "Auto Discover Client Interceptors", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Setting the autoDiscoverClientInterceptors mechanism, [...] - "inheritExchangePropertiesForReplies": { "index": 15, "kind": "parameter", "displayName": "Inherit Exchange Properties For Replies", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Copies exchange properties from original [...] - "method": { "index": 16, "kind": "parameter", "displayName": "Method", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "gRPC method name" }, - "producerStrategy": { "index": 17, "kind": "parameter", "displayName": "Producer Strategy", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcProducerStrategy", "enum": [ "SIMPLE", "STREAMING" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "SIMPLE", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": " [...] - "streamRepliesTo": { "index": 18, "kind": "parameter", "displayName": "Stream Replies To", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "When using STREAMING client mode, it indicates the endpoint where responses should be forwarded." }, - "toRouteControlledStreamObserver": { "index": 19, "kind": "parameter", "displayName": "To Route Controlled Stream Observer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Expects that exchange property GrpcConstants.GRPC [...] - "userAgent": { "index": 20, "kind": "parameter", "displayName": "User Agent", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The user agent header passed to the server" }, - "lazyStartProducer": { "index": 21, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...] - "synchronous": { "index": 22, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets whether synchronous processing should be strictly used" }, - "authenticationType": { "index": 23, "kind": "parameter", "displayName": "Authentication Type", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcAuthType", "enum": [ "NONE", "GOOGLE", "JWT" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "NONE", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Auth [...] - "jwtAlgorithm": { "index": 24, "kind": "parameter", "displayName": "Jwt Algorithm", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm", "enum": [ "HMAC256", "HMAC384", "HMAC512" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HMAC256", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description [...] - "jwtIssuer": { "index": 25, "kind": "parameter", "displayName": "Jwt Issuer", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token issuer" }, - "jwtSecret": { "index": 26, "kind": "parameter", "displayName": "Jwt Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token secret" }, - "jwtSubject": { "index": 27, "kind": "parameter", "displayName": "Jwt Subject", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token subject" }, - "keyCertChainResource": { "index": 28, "kind": "parameter", "displayName": "Key Cert Chain Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The X.509 certificate chain file r [...] - "keyPassword": { "index": 29, "kind": "parameter", "displayName": "Key Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The PKCS#8 private key file password" }, - "keyResource": { "index": 30, "kind": "parameter", "displayName": "Key Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The PKCS#8 private key file resource in PEM format link" }, - "negotiationType": { "index": 31, "kind": "parameter", "displayName": "Negotiation Type", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "io.grpc.netty.NegotiationType", "enum": [ "TLS", "PLAINTEXT_UPGRADE", "PLAINTEXT" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PLAINTEXT", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Iden [...] - "serviceAccountResource": { "index": 32, "kind": "parameter", "displayName": "Service Account Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Service Account key file in JSO [...] - "trustCertCollectionResource": { "index": 33, "kind": "parameter", "displayName": "Trust Cert Collection Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The trusted certific [...] + "initialFlowControlWindow": { "index": 9, "kind": "parameter", "displayName": "Initial Flow Control Window", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1048576, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets the initial flow control window in bytes." }, + "keepAliveTime": { "index": 10, "kind": "parameter", "displayName": "Keep Alive Time", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 7200000, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom keepalive time in milliseconds, the delay time for sending next keepalive [...] + "keepAliveTimeout": { "index": 11, "kind": "parameter", "displayName": "Keep Alive Timeout", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20000, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom keepalive timeout in milliseconds, the timeout for keepalive ping requ [...] + "maxConcurrentCallsPerConnection": { "index": 12, "kind": "parameter", "displayName": "Max Concurrent Calls Per Connection", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 2147483647, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The maximum number of concurrent calls permitted [...] + "maxConnectionAge": { "index": 13, "kind": "parameter", "displayName": "Max Connection Age", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 9223372036854775807, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom max connection age in milliseconds. Connections lasting [...] + "maxConnectionAgeGrace": { "index": 14, "kind": "parameter", "displayName": "Max Connection Age Grace", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 9223372036854775807, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom grace time in milliseconds for the graceful c [...] + "maxConnectionIdle": { "index": 15, "kind": "parameter", "displayName": "Max Connection Idle", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 9223372036854775807, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets a custom max connection idle time in milliseconds. Connection b [...] + "maxInboundMetadataSize": { "index": 16, "kind": "parameter", "displayName": "Max Inbound Metadata Size", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 8192, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets the maximum size of metadata allowed to be received. The default is [...] + "maxRstFramesPerWindow": { "index": 17, "kind": "parameter", "displayName": "Max Rst Frames Per Window", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Limits the rate of incoming RST_STREAM frames per connection to maxRstFramesP [...] + "maxRstPeriodSeconds": { "index": 18, "kind": "parameter", "displayName": "Max Rst Period Seconds", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Limits the rate of incoming RST_STREAM frames per maxRstPeriodSeconds. This option [...] + "permitKeepAliveTime": { "index": 19, "kind": "parameter", "displayName": "Permit Keep Alive Time", "group": "consumer", "label": "consumer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 300000, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets the most aggressive keep-alive time in milliseconds that clients are pe [...] + "permitKeepAliveWithoutCalls": { "index": 20, "kind": "parameter", "displayName": "Permit Keep Alive Without Calls", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets whether to allow clients to send keep-alive HTTP\/ 2 [...] + "routeControlledStreamObserver": { "index": 21, "kind": "parameter", "displayName": "Route Controlled Stream Observer", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Lets the route to take control over stream observer. I [...] + "bridgeErrorHandler": { "index": 22, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "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 [...] + "exceptionHandler": { "index": 23, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...] + "exchangePattern": { "index": 24, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." }, + "autoDiscoverClientInterceptors": { "index": 25, "kind": "parameter", "displayName": "Auto Discover Client Interceptors", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Setting the autoDiscoverClientInterceptors mechanism, [...] + "inheritExchangePropertiesForReplies": { "index": 26, "kind": "parameter", "displayName": "Inherit Exchange Properties For Replies", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Copies exchange properties from original [...] + "method": { "index": 27, "kind": "parameter", "displayName": "Method", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "gRPC method name" }, + "producerStrategy": { "index": 28, "kind": "parameter", "displayName": "Producer Strategy", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcProducerStrategy", "enum": [ "SIMPLE", "STREAMING" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "SIMPLE", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": " [...] + "streamRepliesTo": { "index": 29, "kind": "parameter", "displayName": "Stream Replies To", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "When using STREAMING client mode, it indicates the endpoint where responses should be forwarded." }, + "toRouteControlledStreamObserver": { "index": 30, "kind": "parameter", "displayName": "To Route Controlled Stream Observer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Expects that exchange property GrpcConstants.GRPC [...] + "userAgent": { "index": 31, "kind": "parameter", "displayName": "User Agent", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The user agent header passed to the server" }, + "lazyStartProducer": { "index": 32, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...] + "synchronous": { "index": 33, "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Sets whether synchronous processing should be strictly used" }, + "authenticationType": { "index": 34, "kind": "parameter", "displayName": "Authentication Type", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.GrpcAuthType", "enum": [ "NONE", "GOOGLE", "JWT" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "NONE", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Auth [...] + "jwtAlgorithm": { "index": 35, "kind": "parameter", "displayName": "Jwt Algorithm", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm", "enum": [ "HMAC256", "HMAC384", "HMAC512" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HMAC256", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description [...] + "jwtIssuer": { "index": 36, "kind": "parameter", "displayName": "Jwt Issuer", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token issuer" }, + "jwtSecret": { "index": 37, "kind": "parameter", "displayName": "Jwt Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token secret" }, + "jwtSubject": { "index": 38, "kind": "parameter", "displayName": "Jwt Subject", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "JSON Web Token subject" }, + "keyCertChainResource": { "index": 39, "kind": "parameter", "displayName": "Key Cert Chain Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The X.509 certificate chain file r [...] + "keyPassword": { "index": 40, "kind": "parameter", "displayName": "Key Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The PKCS#8 private key file password" }, + "keyResource": { "index": 41, "kind": "parameter", "displayName": "Key Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The PKCS#8 private key file resource in PEM format link" }, + "negotiationType": { "index": 42, "kind": "parameter", "displayName": "Negotiation Type", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "io.grpc.netty.NegotiationType", "enum": [ "TLS", "PLAINTEXT_UPGRADE", "PLAINTEXT" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "PLAINTEXT", "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Iden [...] + "serviceAccountResource": { "index": 43, "kind": "parameter", "displayName": "Service Account Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "Service Account key file in JSO [...] + "trustCertCollectionResource": { "index": 44, "kind": "parameter", "displayName": "Trust Cert Collection Resource", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "configurationClass": "org.apache.camel.component.grpc.GrpcConfiguration", "configurationField": "configuration", "description": "The trusted certific [...] } } diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConfiguration.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConfiguration.java index 41067736feb..5a3e24e62a7 100644 --- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConfiguration.java +++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConfiguration.java @@ -19,12 +19,14 @@ package org.apache.camel.component.grpc; import java.net.URI; import java.util.Collections; import java.util.List; +import java.util.concurrent.TimeUnit; import io.grpc.ClientInterceptor; import io.grpc.ServerInterceptor; import io.grpc.internal.GrpcUtil; import io.grpc.netty.NegotiationType; import io.grpc.netty.NettyChannelBuilder; +import io.grpc.netty.NettyServerBuilder; import org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; @@ -138,6 +140,39 @@ public class GrpcConfiguration { description = "Expects that exchange property GrpcConstants.GRPC_RESPONSE_OBSERVER is set. Takes its value and calls onNext, onError and onComplete on that StreamObserver. All other gRPC parameters are ignored.") private boolean toRouteControlledStreamObserver = false; + @UriParam(label = "consumer", defaultValue = "" + NettyServerBuilder.DEFAULT_FLOW_CONTROL_WINDOW) + private int initialFlowControlWindow = NettyServerBuilder.DEFAULT_FLOW_CONTROL_WINDOW; + + @UriParam(label = "consumer", defaultValue = "7200000") + private long keepAliveTime = TimeUnit.NANOSECONDS.toMillis(GrpcUtil.DEFAULT_SERVER_KEEPALIVE_TIME_NANOS); + + @UriParam(label = "consumer", defaultValue = "20000") + private long keepAliveTimeout = TimeUnit.NANOSECONDS.toMillis(GrpcUtil.DEFAULT_SERVER_KEEPALIVE_TIMEOUT_NANOS); + + @UriParam(label = "consumer", defaultValue = "" + Long.MAX_VALUE) + private long maxConnectionAge = Long.MAX_VALUE; + + @UriParam(label = "consumer", defaultValue = "" + Long.MAX_VALUE) + private long maxConnectionIdle = Long.MAX_VALUE; + + @UriParam(label = "consumer", defaultValue = "" + Long.MAX_VALUE) + private long maxConnectionAgeGrace = Long.MAX_VALUE; + + @UriParam(label = "consumer", defaultValue = "" + GrpcUtil.DEFAULT_MAX_HEADER_LIST_SIZE) + private int maxInboundMetadataSize = GrpcUtil.DEFAULT_MAX_HEADER_LIST_SIZE; + + @UriParam(label = "consumer", defaultValue = "0") + private int maxRstFramesPerWindow; + + @UriParam(label = "consumer", defaultValue = "0") + private int maxRstPeriodSeconds; + + @UriParam(label = "consumer", defaultValue = "300000") + private long permitKeepAliveTime = TimeUnit.MINUTES.toMillis(5); + + @UriParam(label = "consumer", defaultValue = "false") + private boolean permitKeepAliveWithoutCalls; + /** * Fully qualified service name from the protocol buffer descriptor file (package dot service definition name) */ @@ -419,7 +454,7 @@ public class GrpcConfiguration { } /** - * The maximum number of concurrent calls permitted for each incoming server connection + * The maximum number of concurrent calls permitted for each incoming server connection. Defaults to no limit. */ public void setMaxConcurrentCallsPerConnection(int maxConcurrentCallsPerConnection) { this.maxConcurrentCallsPerConnection = maxConcurrentCallsPerConnection; @@ -497,6 +532,137 @@ public class GrpcConfiguration { this.toRouteControlledStreamObserver = toRouteControlledStreamObserver; } + public int getInitialFlowControlWindow() { + return initialFlowControlWindow; + } + + /** + * Sets the initial flow control window in bytes. + */ + public void setInitialFlowControlWindow(int initialFlowControlWindow) { + this.initialFlowControlWindow = initialFlowControlWindow; + } + + public long getKeepAliveTime() { + return keepAliveTime; + } + + /** + * Sets a custom keepalive time in milliseconds, the delay time for sending next keepalive ping. A value of + * Long.MAX_VALUE or a value greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE will disable keepalive. + */ + public void setKeepAliveTime(long keepAliveTime) { + this.keepAliveTime = keepAliveTime; + } + + public long getKeepAliveTimeout() { + return keepAliveTimeout; + } + + /** + * Sets a custom keepalive timeout in milliseconds, the timeout for keepalive ping requests. + */ + public void setKeepAliveTimeout(long keepAliveTimeout) { + this.keepAliveTimeout = keepAliveTimeout; + } + + public long getMaxConnectionAge() { + return maxConnectionAge; + } + + /** + * Sets a custom max connection age in milliseconds. Connections lasting longer than which will be gracefully + * terminated. A random jitter of +/-10% will be added to the value. A value of Long.MAX_VALUE (the default) or a + * value greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection age. + */ + public void setMaxConnectionAge(long maxConnectionAge) { + this.maxConnectionAge = maxConnectionAge; + } + + public long getMaxConnectionIdle() { + return maxConnectionIdle; + } + + /** + * Sets a custom max connection idle time in milliseconds. Connection being idle for longer than which will be + * gracefully terminated. A value of Long.MAX_VALUE (the default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection idle + */ + public void setMaxConnectionIdle(long maxConnectionIdle) { + this.maxConnectionIdle = maxConnectionIdle; + } + + public long getMaxConnectionAgeGrace() { + return maxConnectionAgeGrace; + } + + /** + * Sets a custom grace time in milliseconds for the graceful connection termination. A value of Long.MAX_VALUE (the + * default) or a value greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE is considered infinite. + */ + public void setMaxConnectionAgeGrace(long maxConnectionAgeGrace) { + this.maxConnectionAgeGrace = maxConnectionAgeGrace; + } + + public int getMaxInboundMetadataSize() { + return maxInboundMetadataSize; + } + + /** + * Sets the maximum size of metadata allowed to be received. The default is 8 KiB. + */ + public void setMaxInboundMetadataSize(int maxInboundMetadataSize) { + this.maxInboundMetadataSize = maxInboundMetadataSize; + } + + public int getMaxRstFramesPerWindow() { + return maxRstFramesPerWindow; + } + + /** + * Limits the rate of incoming RST_STREAM frames per connection to maxRstFramesPerWindow per maxRstPeriodSeconds. + * This option MUST be used in conjunction with maxRstPeriodSeconds for it to be effective. + */ + public void setMaxRstFramesPerWindow(int maxRstFramesPerWindow) { + this.maxRstFramesPerWindow = maxRstFramesPerWindow; + } + + public int getMaxRstPeriodSeconds() { + return maxRstPeriodSeconds; + } + + /** + * Limits the rate of incoming RST_STREAM frames per maxRstPeriodSeconds. This option MUST be used in conjunction + * with maxRstFramesPerWindow for it to be effective. + */ + public void setMaxRstPeriodSeconds(int maxRstPeriodSeconds) { + this.maxRstPeriodSeconds = maxRstPeriodSeconds; + } + + public long getPermitKeepAliveTime() { + return permitKeepAliveTime; + } + + /** + * Sets the most aggressive keep-alive time in milliseconds that clients are permitted to configure. The server will + * try to detect clients exceeding this rate and will forcefully close the connection. + */ + public void setPermitKeepAliveTime(long permitKeepAliveTime) { + this.permitKeepAliveTime = permitKeepAliveTime; + } + + public boolean isPermitKeepAliveWithoutCalls() { + return permitKeepAliveWithoutCalls; + } + + /** + * Sets whether to allow clients to send keep-alive HTTP/ 2 PINGs even if there are no outstanding RPCs on the + * connection. + */ + public void setPermitKeepAliveWithoutCalls(boolean permitKeepAliveWithoutCalls) { + this.permitKeepAliveWithoutCalls = permitKeepAliveWithoutCalls; + } + public void parseURI(URI uri) { setHost(uri.getHost()); diff --git a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java index 93ecb2cace2..90447c6de28 100644 --- a/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java +++ b/components/camel-grpc/src/main/java/org/apache/camel/component/grpc/GrpcConsumer.java @@ -17,6 +17,7 @@ package org.apache.camel.component.grpc; import java.net.InetSocketAddress; +import java.util.concurrent.TimeUnit; import io.grpc.BindableService; import io.grpc.Server; @@ -138,6 +139,16 @@ public class GrpcConsumer extends DefaultConsumer { configuration.getJwtIssuer(), configuration.getJwtSubject())); } + // To configure RST_STREAM settings we need valid configuration for both maxRstFramesPerWindow & maxRstPeriodSeconds + if (configuration.getMaxRstFramesPerWindow() > 0 && configuration.getMaxRstPeriodSeconds() <= 0) { + throw new IllegalArgumentException("maxRstPeriodSeconds must be a positive value"); + } else if (configuration.getMaxRstFramesPerWindow() <= 0 && configuration.getMaxRstPeriodSeconds() > 0) { + throw new IllegalArgumentException("maxRstFramesPerWindow must be a positive value"); + } else if (configuration.getMaxRstFramesPerWindow() > 0 && configuration.getMaxRstPeriodSeconds() > 0) { + serverBuilder.maxRstFramesPerWindow(configuration.getMaxRstFramesPerWindow(), + configuration.getMaxRstPeriodSeconds()); + } + for (ServerInterceptor si : configuration.getServerInterceptors()) { serverBuilder.intercept(si); } @@ -146,6 +157,15 @@ public class GrpcConsumer extends DefaultConsumer { .maxInboundMessageSize(configuration.getMaxMessageSize()) .flowControlWindow(configuration.getFlowControlWindow()) .maxConcurrentCallsPerConnection(configuration.getMaxConcurrentCallsPerConnection()) + .initialFlowControlWindow(configuration.getInitialFlowControlWindow()) + .keepAliveTime(configuration.getKeepAliveTime(), TimeUnit.MILLISECONDS) + .keepAliveTimeout(configuration.getKeepAliveTimeout(), TimeUnit.MILLISECONDS) + .maxConnectionAge(configuration.getMaxConnectionAge(), TimeUnit.MILLISECONDS) + .maxConnectionIdle(configuration.getMaxConnectionIdle(), TimeUnit.MILLISECONDS) + .maxConnectionAgeGrace(configuration.getMaxConnectionAgeGrace(), TimeUnit.MILLISECONDS) + .maxInboundMetadataSize(configuration.getMaxInboundMetadataSize()) + .permitKeepAliveTime(configuration.getPermitKeepAliveTime(), TimeUnit.MILLISECONDS) + .permitKeepAliveWithoutCalls(configuration.isPermitKeepAliveWithoutCalls()) .build(); } diff --git a/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcConsumerConfigurationTest.java b/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcConsumerConfigurationTest.java index 0b8b1c38908..b604e668bf3 100644 --- a/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcConsumerConfigurationTest.java +++ b/components/camel-grpc/src/test/java/org/apache/camel/component/grpc/GrpcConsumerConfigurationTest.java @@ -44,4 +44,36 @@ class GrpcConsumerConfigurationTest extends CamelTestSupport { () -> consumer.receive("grpc:localhost:0/org.apache.camel.component.grpc.PingPong")); assertInstanceOf(IllegalArgumentException.class, exception.getCause()); } + + @Test + void invalidMaxRstFramesPerWindowWithValidMaxRstPeriodSeconds() { + FailedToCreateConsumerException exception = assertThrows(FailedToCreateConsumerException.class, + () -> consumer.receive( + "grpc:localhost:8080/org.apache.camel.component.grpc.PingPong?maxRstFramesPerWindow=-1&maxRstPeriodSeconds=5")); + assertInstanceOf(IllegalArgumentException.class, exception.getCause()); + } + + @Test + void missingMaxRstFramesPerWindowWithValidMaxRstPeriodSeconds() { + FailedToCreateConsumerException exception = assertThrows(FailedToCreateConsumerException.class, + () -> consumer.receive( + "grpc:localhost:8080/org.apache.camel.component.grpc.PingPong?maxRstPeriodSeconds=5")); + assertInstanceOf(IllegalArgumentException.class, exception.getCause()); + } + + @Test + void invalidMaxRstPeriodSecondsWithValidMaxRstFramesPerWindow() { + FailedToCreateConsumerException exception = assertThrows(FailedToCreateConsumerException.class, + () -> consumer.receive( + "grpc:localhost:8080/org.apache.camel.component.grpc.PingPong?maxRstFramesPerWindow=100&maxRstPeriodSeconds=-1")); + assertInstanceOf(IllegalArgumentException.class, exception.getCause()); + } + + @Test + void missingMaxRstPeriodSecondsWithValidMaxRstFramesPerWindow() { + FailedToCreateConsumerException exception = assertThrows(FailedToCreateConsumerException.class, + () -> consumer.receive( + "grpc:localhost:8080/org.apache.camel.component.grpc.PingPong?maxRstFramesPerWindow=100")); + assertInstanceOf(IllegalArgumentException.class, exception.getCause()); + } } diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GrpcEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GrpcEndpointBuilderFactory.java index 41542bb9b26..b0b09f429cd 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GrpcEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GrpcEndpointBuilderFactory.java @@ -263,9 +263,111 @@ public interface GrpcEndpointBuilderFactory { doSetProperty("forwardOnError", forwardOnError); return this; } + /** + * Sets the initial flow control window in bytes. + * + * The option is a: <code>int</code> type. + * + * Default: 1048576 + * Group: consumer + * + * @param initialFlowControlWindow the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder initialFlowControlWindow( + int initialFlowControlWindow) { + doSetProperty("initialFlowControlWindow", initialFlowControlWindow); + return this; + } + /** + * Sets the initial flow control window in bytes. + * + * The option will be converted to a <code>int</code> type. + * + * Default: 1048576 + * Group: consumer + * + * @param initialFlowControlWindow the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder initialFlowControlWindow( + String initialFlowControlWindow) { + doSetProperty("initialFlowControlWindow", initialFlowControlWindow); + return this; + } + /** + * Sets a custom keepalive time in milliseconds, the delay time for + * sending next keepalive ping. A value of Long.MAX_VALUE or a value + * greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE will + * disable keepalive. + * + * The option is a: <code>long</code> type. + * + * Default: 7200000 + * Group: consumer + * + * @param keepAliveTime the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder keepAliveTime(long keepAliveTime) { + doSetProperty("keepAliveTime", keepAliveTime); + return this; + } + /** + * Sets a custom keepalive time in milliseconds, the delay time for + * sending next keepalive ping. A value of Long.MAX_VALUE or a value + * greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE will + * disable keepalive. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 7200000 + * Group: consumer + * + * @param keepAliveTime the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder keepAliveTime(String keepAliveTime) { + doSetProperty("keepAliveTime", keepAliveTime); + return this; + } + /** + * Sets a custom keepalive timeout in milliseconds, the timeout for + * keepalive ping requests. + * + * The option is a: <code>long</code> type. + * + * Default: 20000 + * Group: consumer + * + * @param keepAliveTimeout the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder keepAliveTimeout( + long keepAliveTimeout) { + doSetProperty("keepAliveTimeout", keepAliveTimeout); + return this; + } + /** + * Sets a custom keepalive timeout in milliseconds, the timeout for + * keepalive ping requests. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 20000 + * Group: consumer + * + * @param keepAliveTimeout the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder keepAliveTimeout( + String keepAliveTimeout) { + doSetProperty("keepAliveTimeout", keepAliveTimeout); + return this; + } /** * The maximum number of concurrent calls permitted for each incoming - * server connection. + * server connection. Defaults to no limit. * * The option is a: <code>int</code> type. * @@ -282,7 +384,7 @@ public interface GrpcEndpointBuilderFactory { } /** * The maximum number of concurrent calls permitted for each incoming - * server connection. + * server connection. Defaults to no limit. * * The option will be converted to a <code>int</code> type. * @@ -297,6 +399,303 @@ public interface GrpcEndpointBuilderFactory { doSetProperty("maxConcurrentCallsPerConnection", maxConcurrentCallsPerConnection); return this; } + /** + * Sets a custom max connection age in milliseconds. Connections lasting + * longer than which will be gracefully terminated. A random jitter of + * /-10% will be added to the value. A value of Long.MAX_VALUE (the + * default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection + * age. + * + * The option is a: <code>long</code> type. + * + * Default: 9223372036854775807 + * Group: consumer + * + * @param maxConnectionAge the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxConnectionAge( + long maxConnectionAge) { + doSetProperty("maxConnectionAge", maxConnectionAge); + return this; + } + /** + * Sets a custom max connection age in milliseconds. Connections lasting + * longer than which will be gracefully terminated. A random jitter of + * /-10% will be added to the value. A value of Long.MAX_VALUE (the + * default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection + * age. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 9223372036854775807 + * Group: consumer + * + * @param maxConnectionAge the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxConnectionAge( + String maxConnectionAge) { + doSetProperty("maxConnectionAge", maxConnectionAge); + return this; + } + /** + * Sets a custom grace time in milliseconds for the graceful connection + * termination. A value of Long.MAX_VALUE (the default) or a value + * greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE is + * considered infinite. + * + * The option is a: <code>long</code> type. + * + * Default: 9223372036854775807 + * Group: consumer + * + * @param maxConnectionAgeGrace the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxConnectionAgeGrace( + long maxConnectionAgeGrace) { + doSetProperty("maxConnectionAgeGrace", maxConnectionAgeGrace); + return this; + } + /** + * Sets a custom grace time in milliseconds for the graceful connection + * termination. A value of Long.MAX_VALUE (the default) or a value + * greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE is + * considered infinite. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 9223372036854775807 + * Group: consumer + * + * @param maxConnectionAgeGrace the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxConnectionAgeGrace( + String maxConnectionAgeGrace) { + doSetProperty("maxConnectionAgeGrace", maxConnectionAgeGrace); + return this; + } + /** + * Sets a custom max connection idle time in milliseconds. Connection + * being idle for longer than which will be gracefully terminated. A + * value of Long.MAX_VALUE (the default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection + * idle. + * + * The option is a: <code>long</code> type. + * + * Default: 9223372036854775807 + * Group: consumer + * + * @param maxConnectionIdle the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxConnectionIdle( + long maxConnectionIdle) { + doSetProperty("maxConnectionIdle", maxConnectionIdle); + return this; + } + /** + * Sets a custom max connection idle time in milliseconds. Connection + * being idle for longer than which will be gracefully terminated. A + * value of Long.MAX_VALUE (the default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection + * idle. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 9223372036854775807 + * Group: consumer + * + * @param maxConnectionIdle the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxConnectionIdle( + String maxConnectionIdle) { + doSetProperty("maxConnectionIdle", maxConnectionIdle); + return this; + } + /** + * Sets the maximum size of metadata allowed to be received. The default + * is 8 KiB. + * + * The option is a: <code>int</code> type. + * + * Default: 8192 + * Group: consumer + * + * @param maxInboundMetadataSize the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxInboundMetadataSize( + int maxInboundMetadataSize) { + doSetProperty("maxInboundMetadataSize", maxInboundMetadataSize); + return this; + } + /** + * Sets the maximum size of metadata allowed to be received. The default + * is 8 KiB. + * + * The option will be converted to a <code>int</code> type. + * + * Default: 8192 + * Group: consumer + * + * @param maxInboundMetadataSize the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxInboundMetadataSize( + String maxInboundMetadataSize) { + doSetProperty("maxInboundMetadataSize", maxInboundMetadataSize); + return this; + } + /** + * Limits the rate of incoming RST_STREAM frames per connection to + * maxRstFramesPerWindow per maxRstPeriodSeconds. This option MUST be + * used in conjunction with maxRstPeriodSeconds for it to be effective. + * + * The option is a: <code>int</code> type. + * + * Default: 0 + * Group: consumer + * + * @param maxRstFramesPerWindow the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxRstFramesPerWindow( + int maxRstFramesPerWindow) { + doSetProperty("maxRstFramesPerWindow", maxRstFramesPerWindow); + return this; + } + /** + * Limits the rate of incoming RST_STREAM frames per connection to + * maxRstFramesPerWindow per maxRstPeriodSeconds. This option MUST be + * used in conjunction with maxRstPeriodSeconds for it to be effective. + * + * The option will be converted to a <code>int</code> type. + * + * Default: 0 + * Group: consumer + * + * @param maxRstFramesPerWindow the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxRstFramesPerWindow( + String maxRstFramesPerWindow) { + doSetProperty("maxRstFramesPerWindow", maxRstFramesPerWindow); + return this; + } + /** + * Limits the rate of incoming RST_STREAM frames per + * maxRstPeriodSeconds. This option MUST be used in conjunction with + * maxRstFramesPerWindow for it to be effective. + * + * The option is a: <code>int</code> type. + * + * Default: 0 + * Group: consumer + * + * @param maxRstPeriodSeconds the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxRstPeriodSeconds( + int maxRstPeriodSeconds) { + doSetProperty("maxRstPeriodSeconds", maxRstPeriodSeconds); + return this; + } + /** + * Limits the rate of incoming RST_STREAM frames per + * maxRstPeriodSeconds. This option MUST be used in conjunction with + * maxRstFramesPerWindow for it to be effective. + * + * The option will be converted to a <code>int</code> type. + * + * Default: 0 + * Group: consumer + * + * @param maxRstPeriodSeconds the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder maxRstPeriodSeconds( + String maxRstPeriodSeconds) { + doSetProperty("maxRstPeriodSeconds", maxRstPeriodSeconds); + return this; + } + /** + * Sets the most aggressive keep-alive time in milliseconds that clients + * are permitted to configure. The server will try to detect clients + * exceeding this rate and will forcefully close the connection. + * + * The option is a: <code>long</code> type. + * + * Default: 300000 + * Group: consumer + * + * @param permitKeepAliveTime the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder permitKeepAliveTime( + long permitKeepAliveTime) { + doSetProperty("permitKeepAliveTime", permitKeepAliveTime); + return this; + } + /** + * Sets the most aggressive keep-alive time in milliseconds that clients + * are permitted to configure. The server will try to detect clients + * exceeding this rate and will forcefully close the connection. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 300000 + * Group: consumer + * + * @param permitKeepAliveTime the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder permitKeepAliveTime( + String permitKeepAliveTime) { + doSetProperty("permitKeepAliveTime", permitKeepAliveTime); + return this; + } + /** + * Sets whether to allow clients to send keep-alive HTTP/ 2 PINGs even + * if there are no outstanding RPCs on the connection. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: consumer + * + * @param permitKeepAliveWithoutCalls the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder permitKeepAliveWithoutCalls( + boolean permitKeepAliveWithoutCalls) { + doSetProperty("permitKeepAliveWithoutCalls", permitKeepAliveWithoutCalls); + return this; + } + /** + * Sets whether to allow clients to send keep-alive HTTP/ 2 PINGs even + * if there are no outstanding RPCs on the connection. + * + * The option will be converted to a <code>boolean</code> + * type. + * + * Default: false + * Group: consumer + * + * @param permitKeepAliveWithoutCalls the value to set + * @return the dsl builder + */ + default GrpcEndpointConsumerBuilder permitKeepAliveWithoutCalls( + String permitKeepAliveWithoutCalls) { + doSetProperty("permitKeepAliveWithoutCalls", permitKeepAliveWithoutCalls); + return this; + } /** * Lets the route to take control over stream observer. If this value is * set to true, then the response observer of gRPC call will be set with diff --git a/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/GrpcUriDsl.kt b/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/GrpcUriDsl.kt index bd7a2faca23..0d8d54437af 100644 --- a/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/GrpcUriDsl.kt +++ b/dsl/camel-kotlin-api/src/generated/kotlin/org/apache/camel/kotlin/components/GrpcUriDsl.kt @@ -170,19 +170,205 @@ public class GrpcUriDsl( } /** - * The maximum number of concurrent calls permitted for each incoming server connection + * Sets the initial flow control window in bytes. + */ + public fun initialFlowControlWindow(initialFlowControlWindow: String) { + it.property("initialFlowControlWindow", initialFlowControlWindow) + } + + /** + * Sets the initial flow control window in bytes. + */ + public fun initialFlowControlWindow(initialFlowControlWindow: Int) { + it.property("initialFlowControlWindow", initialFlowControlWindow.toString()) + } + + /** + * Sets a custom keepalive time in milliseconds, the delay time for sending next keepalive ping. A + * value of Long.MAX_VALUE or a value greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE + * will disable keepalive. + */ + public fun keepAliveTime(keepAliveTime: String) { + it.property("keepAliveTime", keepAliveTime) + } + + /** + * Sets a custom keepalive time in milliseconds, the delay time for sending next keepalive ping. A + * value of Long.MAX_VALUE or a value greater or equal to NettyServerBuilder.AS_LARGE_AS_INFINITE + * will disable keepalive. + */ + public fun keepAliveTime(keepAliveTime: Int) { + it.property("keepAliveTime", keepAliveTime.toString()) + } + + /** + * Sets a custom keepalive timeout in milliseconds, the timeout for keepalive ping requests. + */ + public fun keepAliveTimeout(keepAliveTimeout: String) { + it.property("keepAliveTimeout", keepAliveTimeout) + } + + /** + * Sets a custom keepalive timeout in milliseconds, the timeout for keepalive ping requests. + */ + public fun keepAliveTimeout(keepAliveTimeout: Int) { + it.property("keepAliveTimeout", keepAliveTimeout.toString()) + } + + /** + * The maximum number of concurrent calls permitted for each incoming server connection. Defaults + * to no limit. */ public fun maxConcurrentCallsPerConnection(maxConcurrentCallsPerConnection: String) { it.property("maxConcurrentCallsPerConnection", maxConcurrentCallsPerConnection) } /** - * The maximum number of concurrent calls permitted for each incoming server connection + * The maximum number of concurrent calls permitted for each incoming server connection. Defaults + * to no limit. */ public fun maxConcurrentCallsPerConnection(maxConcurrentCallsPerConnection: Int) { it.property("maxConcurrentCallsPerConnection", maxConcurrentCallsPerConnection.toString()) } + /** + * Sets a custom max connection age in milliseconds. Connections lasting longer than which will be + * gracefully terminated. A random jitter of /-10% will be added to the value. A value of + * Long.MAX_VALUE (the default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection age. + */ + public fun maxConnectionAge(maxConnectionAge: String) { + it.property("maxConnectionAge", maxConnectionAge) + } + + /** + * Sets a custom max connection age in milliseconds. Connections lasting longer than which will be + * gracefully terminated. A random jitter of /-10% will be added to the value. A value of + * Long.MAX_VALUE (the default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection age. + */ + public fun maxConnectionAge(maxConnectionAge: Int) { + it.property("maxConnectionAge", maxConnectionAge.toString()) + } + + /** + * Sets a custom grace time in milliseconds for the graceful connection termination. A value of + * Long.MAX_VALUE (the default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE is considered infinite. + */ + public fun maxConnectionAgeGrace(maxConnectionAgeGrace: String) { + it.property("maxConnectionAgeGrace", maxConnectionAgeGrace) + } + + /** + * Sets a custom grace time in milliseconds for the graceful connection termination. A value of + * Long.MAX_VALUE (the default) or a value greater or equal to + * NettyServerBuilder.AS_LARGE_AS_INFINITE is considered infinite. + */ + public fun maxConnectionAgeGrace(maxConnectionAgeGrace: Int) { + it.property("maxConnectionAgeGrace", maxConnectionAgeGrace.toString()) + } + + /** + * Sets a custom max connection idle time in milliseconds. Connection being idle for longer than + * which will be gracefully terminated. A value of Long.MAX_VALUE (the default) or a value greater or + * equal to NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection idle + */ + public fun maxConnectionIdle(maxConnectionIdle: String) { + it.property("maxConnectionIdle", maxConnectionIdle) + } + + /** + * Sets a custom max connection idle time in milliseconds. Connection being idle for longer than + * which will be gracefully terminated. A value of Long.MAX_VALUE (the default) or a value greater or + * equal to NettyServerBuilder.AS_LARGE_AS_INFINITE will disable max connection idle + */ + public fun maxConnectionIdle(maxConnectionIdle: Int) { + it.property("maxConnectionIdle", maxConnectionIdle.toString()) + } + + /** + * Sets the maximum size of metadata allowed to be received. The default is 8 KiB. + */ + public fun maxInboundMetadataSize(maxInboundMetadataSize: String) { + it.property("maxInboundMetadataSize", maxInboundMetadataSize) + } + + /** + * Sets the maximum size of metadata allowed to be received. The default is 8 KiB. + */ + public fun maxInboundMetadataSize(maxInboundMetadataSize: Int) { + it.property("maxInboundMetadataSize", maxInboundMetadataSize.toString()) + } + + /** + * Limits the rate of incoming RST_STREAM frames per connection to maxRstFramesPerWindow per + * maxRstPeriodSeconds. This option MUST be used in conjunction with maxRstPeriodSeconds for it to be + * effective. + */ + public fun maxRstFramesPerWindow(maxRstFramesPerWindow: String) { + it.property("maxRstFramesPerWindow", maxRstFramesPerWindow) + } + + /** + * Limits the rate of incoming RST_STREAM frames per connection to maxRstFramesPerWindow per + * maxRstPeriodSeconds. This option MUST be used in conjunction with maxRstPeriodSeconds for it to be + * effective. + */ + public fun maxRstFramesPerWindow(maxRstFramesPerWindow: Int) { + it.property("maxRstFramesPerWindow", maxRstFramesPerWindow.toString()) + } + + /** + * Limits the rate of incoming RST_STREAM frames per maxRstPeriodSeconds. This option MUST be used + * in conjunction with maxRstFramesPerWindow for it to be effective. + */ + public fun maxRstPeriodSeconds(maxRstPeriodSeconds: String) { + it.property("maxRstPeriodSeconds", maxRstPeriodSeconds) + } + + /** + * Limits the rate of incoming RST_STREAM frames per maxRstPeriodSeconds. This option MUST be used + * in conjunction with maxRstFramesPerWindow for it to be effective. + */ + public fun maxRstPeriodSeconds(maxRstPeriodSeconds: Int) { + it.property("maxRstPeriodSeconds", maxRstPeriodSeconds.toString()) + } + + /** + * Sets the most aggressive keep-alive time in milliseconds that clients are permitted to + * configure. The server will try to detect clients exceeding this rate and will forcefully close the + * connection. + */ + public fun permitKeepAliveTime(permitKeepAliveTime: String) { + it.property("permitKeepAliveTime", permitKeepAliveTime) + } + + /** + * Sets the most aggressive keep-alive time in milliseconds that clients are permitted to + * configure. The server will try to detect clients exceeding this rate and will forcefully close the + * connection. + */ + public fun permitKeepAliveTime(permitKeepAliveTime: Int) { + it.property("permitKeepAliveTime", permitKeepAliveTime.toString()) + } + + /** + * Sets whether to allow clients to send keep-alive HTTP/ 2 PINGs even if there are no outstanding + * RPCs on the connection. + */ + public fun permitKeepAliveWithoutCalls(permitKeepAliveWithoutCalls: String) { + it.property("permitKeepAliveWithoutCalls", permitKeepAliveWithoutCalls) + } + + /** + * Sets whether to allow clients to send keep-alive HTTP/ 2 PINGs even if there are no outstanding + * RPCs on the connection. + */ + public fun permitKeepAliveWithoutCalls(permitKeepAliveWithoutCalls: Boolean) { + it.property("permitKeepAliveWithoutCalls", permitKeepAliveWithoutCalls.toString()) + } + /** * Lets the route to take control over stream observer. If this value is set to true, then the * response observer of gRPC call will be set with the name GrpcConstants.GRPC_RESPONSE_OBSERVER in