You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/10/26 12:38:13 UTC

[camel-k-runtime] branch master updated: Can't set Knative broker name #535

This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git


The following commit(s) were added to refs/heads/master by this push:
     new 2d422a7  Can't set Knative broker name #535
2d422a7 is described below

commit 2d422a7c5776ab9266e4b37024bd2a870811816b
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Mon Oct 26 12:28:55 2020 +0100

    Can't set Knative broker name #535
---
 .../camel/component/knative/spi/Knative.java       |  1 +
 .../component/knative/http/KnativeHttpTest.java    | 43 +++++++++++++++++-----
 .../knative/KnativeComponentConfigurer.java        | 13 ++++---
 .../knative/KnativeEndpointConfigurer.java         | 10 ++---
 .../apache/camel/component/knative/knative.json    | 11 +++---
 .../component/knative/KnativeConfiguration.java    | 23 +++++++++---
 .../camel/component/knative/KnativeEndpoint.java   | 23 +++++++-----
 .../knative/ce/AbstractCloudEventProcessor.java    |  6 +--
 8 files changed, 88 insertions(+), 42 deletions(-)

diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java
index dea93d9..18248af 100644
--- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java
+++ b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java
@@ -28,6 +28,7 @@ public final class Knative {
     public static final String KNATIVE_TYPE = "knative.type";
     public static final String KNATIVE_EVENT_TYPE = "knative.event.type";
     public static final String KNATIVE_KIND = "knative.kind";
+    public static final String KNATIVE_NAME = "knative.name";
     public static final String KNATIVE_API_VERSION = "knative.apiVersion";
     public static final String KNATIVE_REPLY = "knative.reply";
     public static final String CONTENT_TYPE = "content.type";
diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
index 8b1a163..fbb276c 100644
--- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
+++ b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java
@@ -38,6 +38,7 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.knative.KnativeComponent;
+import org.apache.camel.component.knative.KnativeEndpoint;
 import org.apache.camel.component.knative.spi.CloudEvent;
 import org.apache.camel.component.knative.spi.CloudEvents;
 import org.apache.camel.component.knative.spi.Knative;
@@ -1061,7 +1062,7 @@ public class KnativeHttpTest {
 
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
-    void testEventsWithTypeAndVersion(CloudEvent ce) throws Exception {
+    void testEventsWithResourceRef(CloudEvent ce) throws Exception {
         configureKnativeComponent(
             context,
             ce,
@@ -1073,7 +1074,8 @@ public class KnativeHttpTest {
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_KIND, "MyObject",
-                    Knative.KNATIVE_API_VERSION, "v1"
+                    Knative.KNATIVE_API_VERSION, "v1",
+                    Knative.KNATIVE_NAME, "myName1"
                 )),
             sourceEvent(
                 "default",
@@ -1081,19 +1083,33 @@ public class KnativeHttpTest {
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_KIND, "MyOtherObject",
-                    Knative.KNATIVE_API_VERSION, "v2"
+                    Knative.KNATIVE_API_VERSION, "v2",
+                    Knative.KNATIVE_NAME, "myName2"
                 ))
         );
 
         RouteBuilder.addRoutes(context, b -> {
             b.from("direct:source")
-                .to("knative:event/myEvent?kind=MyObject&apiVersion=v1");
-            b.from("knative:event/myEvent?kind=MyOtherObject&apiVersion=v2")
+                .to("knative:event/myEvent?kind=MyObject&apiVersion=v1&name=myName1");
+            b.from("knative:event/myEvent?kind=MyOtherObject&apiVersion=v2&name=myName2")
                 .to("mock:ce");
         });
 
         context.start();
 
+        assertThat(context.getEndpoint("knative:event/myEvent?kind=MyObject&apiVersion=v1&name=myName1", KnativeEndpoint.class)).satisfies(e -> {
+            assertThat(e.getType()).isEqualTo(Knative.Type.event);
+            assertThat(e.getTypeId()).isEqualTo("myEvent");
+            assertThat(e.getConfiguration().getTypeId()).isEqualTo("myEvent");
+            assertThat(e.getConfiguration().getName()).isEqualTo("myName1");
+        });
+        assertThat(context.getEndpoint("knative:event/myEvent?kind=MyOtherObject&apiVersion=v2&name=myName2", KnativeEndpoint.class)).satisfies(e -> {
+            assertThat(e.getType()).isEqualTo(Knative.Type.event);
+            assertThat(e.getTypeId()).isEqualTo("myEvent");
+            assertThat(e.getConfiguration().getTypeId()).isEqualTo("myEvent");
+            assertThat(e.getConfiguration().getName()).isEqualTo("myName2");
+        });
+
         MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
         mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
         mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "myEvent");
@@ -1110,7 +1126,7 @@ public class KnativeHttpTest {
 
     @ParameterizedTest
     @EnumSource(CloudEvents.class)
-    void testConsumeContentWithTypeAndVersion(CloudEvent ce) throws Exception {
+    void testConsumeContentWithResourceRef(CloudEvent ce) throws Exception {
         configureKnativeComponent(
             context,
             ce,
@@ -1120,7 +1136,8 @@ public class KnativeHttpTest {
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_KIND, "MyObject",
-                    Knative.KNATIVE_API_VERSION, "v1"
+                    Knative.KNATIVE_API_VERSION, "v1",
+                    Knative.KNATIVE_NAME, "myName1"
                 )),
             sourceEndpoint(
                 "myEndpoint",
@@ -1128,17 +1145,25 @@ public class KnativeHttpTest {
                     Knative.KNATIVE_EVENT_TYPE, "org.apache.camel.event",
                     Knative.CONTENT_TYPE, "text/plain",
                     Knative.KNATIVE_KIND, "MyObject",
-                    Knative.KNATIVE_API_VERSION, "v2"
+                    Knative.KNATIVE_API_VERSION, "v2",
+                    Knative.KNATIVE_NAME, "myName2"
                 ))
         );
 
         RouteBuilder.addRoutes(context, b -> {
-            b.from("knative:endpoint/myEndpoint?kind=MyObject&apiVersion=v2")
+            b.from("knative:endpoint/myEndpoint?kind=MyObject&apiVersion=v2&name=myName2")
                 .to("mock:ce");
         });
 
         context.start();
 
+        assertThat(context.getEndpoint("knative:endpoint/myEndpoint?kind=MyObject&apiVersion=v2&name=myName2", KnativeEndpoint.class)).satisfies(e -> {
+            assertThat(e.getType()).isEqualTo(Knative.Type.endpoint);
+            assertThat(e.getTypeId()).isEqualTo("myEndpoint");
+            assertThat(e.getConfiguration().getTypeId()).isEqualTo("myEndpoint");
+            assertThat(e.getConfiguration().getName()).isEqualTo("myName2");
+        });
+
         MockEndpoint mock = context.getEndpoint("mock:ce", MockEndpoint.class);
         mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_VERSION, ce.version());
         mock.expectedHeaderReceived(CloudEvent.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event");
diff --git a/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeComponentConfigurer.java b/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeComponentConfigurer.java
index cd042ce..b64e482 100644
--- a/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeComponentConfigurer.java
+++ b/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeComponentConfigurer.java
@@ -25,9 +25,9 @@ public class KnativeComponentConfigurer extends PropertyConfigurerSupport implem
         map.put("environment", org.apache.camel.component.knative.spi.KnativeEnvironment.class);
         map.put("environmentPath", java.lang.String.class);
         map.put("filters", java.util.Map.class);
-        map.put("serviceName", java.lang.String.class);
         map.put("transport", org.apache.camel.component.knative.spi.KnativeTransport.class);
         map.put("transportOptions", java.util.Map.class);
+        map.put("typeId", java.lang.String.class);
         map.put("bridgeErrorHandler", boolean.class);
         map.put("replyWithCloudEvent", boolean.class);
         map.put("reply", java.lang.Boolean.class);
@@ -35,6 +35,7 @@ public class KnativeComponentConfigurer extends PropertyConfigurerSupport implem
         map.put("apiVersion", java.lang.String.class);
         map.put("basicPropertyBinding", boolean.class);
         map.put("kind", java.lang.String.class);
+        map.put("name", java.lang.String.class);
         ALL_OPTIONS = map;
     }
 
@@ -69,14 +70,15 @@ public class KnativeComponentConfigurer extends PropertyConfigurerSupport implem
         case "kind": getOrCreateConfiguration(target).setKind(property(camelContext, java.lang.String.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "name": getOrCreateConfiguration(target).setName(property(camelContext, java.lang.String.class, value)); return true;
         case "reply": getOrCreateConfiguration(target).setReply(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "replywithcloudevent":
         case "replyWithCloudEvent": getOrCreateConfiguration(target).setReplyWithCloudEvent(property(camelContext, boolean.class, value)); return true;
-        case "servicename":
-        case "serviceName": getOrCreateConfiguration(target).setServiceName(property(camelContext, java.lang.String.class, value)); return true;
         case "transport": target.setTransport(property(camelContext, org.apache.camel.component.knative.spi.KnativeTransport.class, value)); return true;
         case "transportoptions":
         case "transportOptions": getOrCreateConfiguration(target).setTransportOptions(property(camelContext, java.util.Map.class, value)); return true;
+        case "typeid":
+        case "typeId": getOrCreateConfiguration(target).setTypeId(property(camelContext, java.lang.String.class, value)); return true;
         default: return false;
         }
     }
@@ -110,14 +112,15 @@ public class KnativeComponentConfigurer extends PropertyConfigurerSupport implem
         case "kind": return getOrCreateConfiguration(target).getKind();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "name": return getOrCreateConfiguration(target).getName();
         case "reply": return getOrCreateConfiguration(target).getReply();
         case "replywithcloudevent":
         case "replyWithCloudEvent": return getOrCreateConfiguration(target).isReplyWithCloudEvent();
-        case "servicename":
-        case "serviceName": return getOrCreateConfiguration(target).getServiceName();
         case "transport": return target.getTransport();
         case "transportoptions":
         case "transportOptions": return getOrCreateConfiguration(target).getTransportOptions();
+        case "typeid":
+        case "typeId": return getOrCreateConfiguration(target).getTypeId();
         default: return null;
         }
     }
diff --git a/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeEndpointConfigurer.java b/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeEndpointConfigurer.java
index 0e2d5be..c0cfe9b 100644
--- a/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeEndpointConfigurer.java
+++ b/components/camel-knative/camel-knative/src/generated/java/org/apache/camel/component/knative/KnativeEndpointConfigurer.java
@@ -19,13 +19,12 @@ public class KnativeEndpointConfigurer extends PropertyConfigurerSupport impleme
     static {
         Map<String, Object> map = new CaseInsensitiveMap();
         map.put("type", org.apache.camel.component.knative.spi.Knative.Type.class);
-        map.put("name", java.lang.String.class);
+        map.put("typeId", java.lang.String.class);
         map.put("ceOverride", java.util.Map.class);
         map.put("cloudEventsSpecVersion", java.lang.String.class);
         map.put("cloudEventsType", java.lang.String.class);
         map.put("environment", org.apache.camel.component.knative.spi.KnativeEnvironment.class);
         map.put("filters", java.util.Map.class);
-        map.put("serviceName", java.lang.String.class);
         map.put("transportOptions", java.util.Map.class);
         map.put("bridgeErrorHandler", boolean.class);
         map.put("replyWithCloudEvent", boolean.class);
@@ -36,6 +35,7 @@ public class KnativeEndpointConfigurer extends PropertyConfigurerSupport impleme
         map.put("apiVersion", java.lang.String.class);
         map.put("basicPropertyBinding", boolean.class);
         map.put("kind", java.lang.String.class);
+        map.put("name", java.lang.String.class);
         map.put("synchronous", boolean.class);
         ALL_OPTIONS = map;
     }
@@ -65,11 +65,10 @@ public class KnativeEndpointConfigurer extends PropertyConfigurerSupport impleme
         case "kind": target.getConfiguration().setKind(property(camelContext, java.lang.String.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "name": target.getConfiguration().setName(property(camelContext, java.lang.String.class, value)); return true;
         case "reply": target.getConfiguration().setReply(property(camelContext, java.lang.Boolean.class, value)); return true;
         case "replywithcloudevent":
         case "replyWithCloudEvent": target.getConfiguration().setReplyWithCloudEvent(property(camelContext, boolean.class, value)); return true;
-        case "servicename":
-        case "serviceName": target.getConfiguration().setServiceName(property(camelContext, java.lang.String.class, value)); return true;
         case "synchronous": target.setSynchronous(property(camelContext, boolean.class, value)); return true;
         case "transportoptions":
         case "transportOptions": target.getConfiguration().setTransportOptions(property(camelContext, java.util.Map.class, value)); return true;
@@ -107,11 +106,10 @@ public class KnativeEndpointConfigurer extends PropertyConfigurerSupport impleme
         case "kind": return target.getConfiguration().getKind();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "name": return target.getConfiguration().getName();
         case "reply": return target.getConfiguration().getReply();
         case "replywithcloudevent":
         case "replyWithCloudEvent": return target.getConfiguration().isReplyWithCloudEvent();
-        case "servicename":
-        case "serviceName": return target.getConfiguration().getServiceName();
         case "synchronous": return target.isSynchronous();
         case "transportoptions":
         case "transportOptions": return target.getConfiguration().getTransportOptions();
diff --git a/components/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json b/components/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
index c859f0b..5793530 100644
--- a/components/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
+++ b/components/camel-knative/camel-knative/src/generated/resources/org/apache/camel/component/knative/knative.json
@@ -14,7 +14,7 @@
     "version": "1.6.0-SNAPSHOT",
     "scheme": "knative",
     "extendsScheme": "",
-    "syntax": "knative:type\/name",
+    "syntax": "knative:type\/typeId",
     "async": false,
     "api": false,
     "consumerOnly": false,
@@ -29,26 +29,26 @@
     "environment": { "kind": "property", "displayName": "Environment", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeEnvironment", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The environment" },
     "environmentPath": { "kind": "property", "displayName": "Environment Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The path ot the environment definition" },
     "filters": { "kind": "property", "displayName": "Filters", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "filter.", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the filters." },
-    "serviceName": { "kind": "property", "displayName": "Service Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The name of the service to lookup from the KnativeEnvironment." },
     "transport": { "kind": "property", "displayName": "Transport", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeTransport", "deprecated": false, "secret": false, "description": "The transport implementation." },
     "transportOptions": { "kind": "property", "displayName": "Transport Options", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "transport.", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the transport options." },
+    "typeId": { "kind": "property", "displayName": "Type Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The name of the service to lookup from the KnativeEnvironment." },
     "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by [...]
     "replyWithCloudEvent": { "kind": "property", "displayName": "Reply With Cloud Event", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Transforms the reply into a cloud event that will be processed by the caller. When listening to events [...]
     "reply": { "kind": "property", "displayName": "Reply", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": "true", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "If the consumer should construct a full reply to knative request." },
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": 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 producer may otherwise fail during starting and cause the r [...]
     "apiVersion": { "kind": "property", "displayName": "Api Version", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The version of the k8s resource referenced by the endpoint." },
     "basicPropertyBinding": { "kind": "property", "displayName": "Basic Property Binding", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": true, "secret": false, "defaultValue": false, "description": "Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities" },
-    "kind": { "kind": "property", "displayName": "Kind", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The type of the k8s resource referenced by the endpoint." }
+    "kind": { "kind": "property", "displayName": "Kind", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The type of the k8s resource referenced by the endpoint." },
+    "name": { "kind": "property", "displayName": "Name", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The name of the k8s resource referenced by the endpoint." }
   },
   "properties": {
     "type": { "kind": "path", "displayName": "Type", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.Knative.Type", "enum": [ "endpoint", "channel", "event" ], "deprecated": false, "secret": false, "description": "The Knative resource type" },
-    "name": { "kind": "path", "displayName": "Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The name that identifies the Knative resource" },
+    "typeId": { "kind": "path", "displayName": "Type Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The identifier of the Knative resource" },
     "ceOverride": { "kind": "parameter", "displayName": "Ce Override", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "ce.override.", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "CloudEvent headers to override" },
     "cloudEventsSpecVersion": { "kind": "parameter", "displayName": "Cloud Events Spec Version", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "0.1", "0.2", "0.3", "1.0" ], "deprecated": false, "secret": false, "defaultValue": "1.0", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the version of the cloudevents spec." },
     "cloudEventsType": { "kind": "parameter", "displayName": "Cloud Events Type", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": "org.apache.camel.event", "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the event-type information of the produced events." },
     "environment": { "kind": "parameter", "displayName": "Environment", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.knative.spi.KnativeEnvironment", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The environment" },
     "filters": { "kind": "parameter", "displayName": "Filters", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "filter.", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the filters." },
-    "serviceName": { "kind": "parameter", "displayName": "Service Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The name of the service to lookup from the KnativeEnvironment." },
     "transportOptions": { "kind": "parameter", "displayName": "Transport Options", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "transport.", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Set the transport options." },
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled b [...]
     "replyWithCloudEvent": { "kind": "parameter", "displayName": "Reply With Cloud Event", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "Transforms the reply into a cloud event that will be processed by the caller. When listening to event [...]
@@ -59,6 +59,7 @@
     "apiVersion": { "kind": "parameter", "displayName": "Api Version", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The version of the k8s resource referenced by the endpoint." },
     "basicPropertyBinding": { "kind": "parameter", "displayName": "Basic Property Binding", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities" },
     "kind": { "kind": "parameter", "displayName": "Kind", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The type of the k8s resource referenced by the endpoint." },
+    "name": { "kind": "parameter", "displayName": "Name", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.knative.KnativeConfiguration", "configurationField": "configuration", "description": "The name of the k8s resource referenced by the endpoint." },
     "synchronous": { "kind": "parameter", "displayName": "Synchronous", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported)." }
   }
 }
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java
index 30547ba..ab2496a 100644
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java
+++ b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConfiguration.java
@@ -30,7 +30,7 @@ public class KnativeConfiguration implements Cloneable {
     @UriParam
     private KnativeEnvironment environment;
     @UriParam
-    private String serviceName;
+    private String typeId;
     @UriParam(defaultValue = "1.0", enums = "0.1,0.2,0.3,1.0")
     private String cloudEventsSpecVersion = CloudEvents.v1_0.version();
     @UriParam(defaultValue = "org.apache.camel.event")
@@ -45,6 +45,8 @@ public class KnativeConfiguration implements Cloneable {
     private String apiVersion;
     @UriParam(label = "advanced")
     private String kind;
+    @UriParam(label = "advanced")
+    private String name;
     @UriParam(label = "consumer", defaultValue = "false")
     private boolean replyWithCloudEvent;
     @UriParam(label = "consumer,advanced", defaultValue = "true")
@@ -67,15 +69,15 @@ public class KnativeConfiguration implements Cloneable {
         this.environment = environment;
     }
 
-    public String getServiceName() {
-        return serviceName;
+    public String getTypeId() {
+        return typeId;
     }
 
     /**
      * The name of the service to lookup from the {@link KnativeEnvironment}.
      */
-    public void setServiceName(String serviceName) {
-        this.serviceName = serviceName;
+    public void setTypeId(String typeId) {
+        this.typeId = typeId;
     }
 
     public boolean isReplyWithCloudEvent() {
@@ -183,6 +185,17 @@ public class KnativeConfiguration implements Cloneable {
         this.kind = kind;
     }
 
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * The name of the k8s resource referenced by the endpoint.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
     public Boolean getReply() {
         return reply;
     }
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
index 0d0f69e..0b40257 100644
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
+++ b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
@@ -46,14 +46,14 @@ import org.apache.camel.util.ObjectHelper;
 @UriEndpoint(
     firstVersion = "3.0.0",
     scheme = "knative",
-    syntax = "knative:type/name",
+    syntax = "knative:type/typeId",
     title = "Knative",
     label = "cloud,eventing")
 public class KnativeEndpoint extends DefaultEndpoint {
     @UriPath(description = "The Knative resource type")
     private final Knative.Type type;
-    @UriPath(description = "The name that identifies the Knative resource")
-    private final String name;
+    @UriPath(description = "The identifier of the Knative resource")
+    private final String typeId;
     private final CloudEventProcessor cloudEvent;
     @UriParam
     private KnativeConfiguration configuration;
@@ -62,7 +62,7 @@ public class KnativeEndpoint extends DefaultEndpoint {
         super(uri, component);
 
         this.type = type;
-        this.name = name;
+        this.typeId = name;
         this.configuration = configuration;
         this.cloudEvent = CloudEventProcessors.fromSpecVersion(configuration.getCloudEventsSpecVersion());
     }
@@ -117,8 +117,8 @@ public class KnativeEndpoint extends DefaultEndpoint {
         return type;
     }
 
-    public String getName() {
-        return name;
+    public String getTypeId() {
+        return typeId;
     }
 
     public KnativeConfiguration getConfiguration() {
@@ -131,13 +131,13 @@ public class KnativeEndpoint extends DefaultEndpoint {
 
     @Override
     protected void doInit() throws Exception {
-        if (ObjectHelper.isEmpty(this.configuration .getServiceName())) {
-            this.configuration .setServiceName(this.name);
+        if (ObjectHelper.isEmpty(this.configuration.getTypeId())) {
+            this.configuration.setTypeId(this.typeId);
         }
     }
 
     KnativeEnvironment.KnativeResource lookupServiceDefinition(Knative.EndpointKind endpointKind) {
-        String serviceName = configuration.getServiceName();
+        String serviceName = configuration.getTypeId();
 
         //
         // look-up service definition by service name first then if not found try to look it up by using
@@ -232,6 +232,11 @@ public class KnativeEndpoint extends DefaultEndpoint {
                 return false;
             }
 
+            final String name = s.getMetadata(Knative.KNATIVE_NAME);
+            if (configuration.getName() != null && !Objects.equals(name, configuration.getName())) {
+                return false;
+            }
+
             return true;
         };
     }
diff --git a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java
index b24bfcb..61082a6 100644
--- a/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java
+++ b/components/camel-knative/camel-knative/src/main/java/org/apache/camel/component/knative/ce/AbstractCloudEventProcessor.java
@@ -96,16 +96,16 @@ abstract class AbstractCloudEventProcessor implements CloudEventProcessor {
             // in case of events, if the type of the event is defined as URI param so we need
             // to override it to avoid the event type be overridden by Messages's headers
             //
-            if (endpoint.getType() == Knative.Type.event && endpoint.getName() != null) {
+            if (endpoint.getType() == Knative.Type.event && endpoint.getTypeId() != null) {
                 final Object eventType = headers.get(CloudEvent.CAMEL_CLOUD_EVENT_TYPE);
                 if (eventType != null) {
                     logger.debug("Detected the presence of {} header with value {}: it will be ignored and replaced by value set as uri parameter {}",
                         CloudEvent.CAMEL_CLOUD_EVENT_TYPE,
                         eventType,
-                        endpoint.getName());
+                        endpoint.getTypeId());
                 }
 
-                headers.put(cloudEvent().mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), endpoint.getName());
+                headers.put(cloudEvent().mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), endpoint.getTypeId());
             } else {
                 setCloudEventHeader(headers, CloudEvent.CAMEL_CLOUD_EVENT_TYPE, () -> {
                     return service.getMetadata().getOrDefault(