This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch ra in repository https://gitbox.apache.org/repos/asf/camel.git
commit ce9ef36904f398d1c1c2f7c266a7ae61936394ce Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun May 26 11:26:43 2024 +0200 CAMEL-20798: Add RemoteAddress to endpoints so they can tell the url/hostname etc for the system it connects. This is needed for better monitoring, tracing and management. Add this information into camel-tracer as tags. --- .../platform/http/DefaultPlatformHttpConsumer.java | 5 +++++ .../platform/http/PlatformHttpEndpoint.java | 5 ----- .../apache/camel/spi/EndpointLocationAddress.java | 7 ------- .../java/org/apache/camel/spi/HostedService.java} | 20 ++++++++++---------- .../camel/impl/console/ConsumerDevConsole.java | 2 ++ .../camel/impl/console/EndpointDevConsole.java | 2 -- .../api/management/mbean/ManagedConsumerMBean.java | 3 +++ .../api/management/mbean/ManagedEndpointMBean.java | 3 --- .../camel/management/mbean/ManagedConsumer.java | 8 ++++++++ .../camel/management/mbean/ManagedEndpoint.java | 8 -------- .../org/apache/camel/support/DefaultConsumer.java | 8 +++++++- 11 files changed, 35 insertions(+), 36 deletions(-) diff --git a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/DefaultPlatformHttpConsumer.java b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/DefaultPlatformHttpConsumer.java index d26c2505da7..9a1dba53f90 100644 --- a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/DefaultPlatformHttpConsumer.java +++ b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/DefaultPlatformHttpConsumer.java @@ -35,6 +35,11 @@ public class DefaultPlatformHttpConsumer extends DefaultConsumer super(endpoint, processor); } + @Override + public boolean isHostedService() { + return true; + } + @Override public PlatformHttpEndpoint getEndpoint() { return (PlatformHttpEndpoint) super.getEndpoint(); diff --git a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java index ef77dbf5f70..7ff1eed4f92 100644 --- a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java +++ b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java @@ -97,11 +97,6 @@ public class PlatformHttpEndpoint extends DefaultEndpoint return (PlatformHttpComponent) super.getComponent(); } - @Override - public boolean isHostedAddress() { - return true; - } - @Override public String getAddress() { String server = "http://0.0.0.0"; diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/EndpointLocationAddress.java b/core/camel-api/src/main/java/org/apache/camel/spi/EndpointLocationAddress.java index 5a6c35ec96d..828ca615b51 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/EndpointLocationAddress.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/EndpointLocationAddress.java @@ -27,13 +27,6 @@ import java.util.Map; */ public interface EndpointLocationAddress { - /** - * Is this service address hosted (in this Camel application) or external such as on a remote network connection. - */ - default boolean isHostedAddress() { - return false; - } - /** * Gets the remote address such as URL or hostname * diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java b/core/camel-api/src/main/java/org/apache/camel/spi/HostedService.java similarity index 67% copy from core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java copy to core/camel-api/src/main/java/org/apache/camel/spi/HostedService.java index 195410ce158..53e5226707c 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/HostedService.java @@ -14,16 +14,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.api.management.mbean; +package org.apache.camel.spi; -import org.apache.camel.api.management.ManagedAttribute; - -public interface ManagedConsumerMBean extends ManagedServiceMBean { - - @ManagedAttribute(description = "Endpoint URI", mask = true) - String getEndpointUri(); - - @ManagedAttribute(description = "Current number of inflight Exchanges") - Integer getInflightExchanges(); +/** + * To use for identifying {@link org.apache.camel.Consumer} which can host a service, + * such as a TCP network server, or an embedded HTTP server. + */ +public interface HostedService { + /** + * Is this service hosted (in this Camel application). + */ + boolean isHostedService(); } diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java index 89c574bce8b..91004eaf753 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ConsumerDevConsole.java @@ -63,6 +63,7 @@ public class ConsumerDevConsole extends AbstractDevConsole { sb.append(String.format("\n Uri: %s", mc.getEndpointUri())); sb.append(String.format("\n State: %s", mc.getState())); sb.append(String.format("\n Class: %s", mc.getServiceType())); + sb.append(String.format("\n Hosted Service: %b", mc.isHostedService())); sb.append(String.format("\n Inflight: %d", inflight)); if (mcc instanceof ManagedSchedulePollConsumerMBean mpc) { sb.append(String.format("\n Polling: %s", mpc.isPolling())); @@ -150,6 +151,7 @@ public class ConsumerDevConsole extends AbstractDevConsole { jo.put("uri", mc.getEndpointUri()); jo.put("state", mc.getState()); jo.put("class", mc.getServiceType()); + jo.put("hostedService", mc.isHostedService()); jo.put("inflight", inflight); jo.put("scheduled", false); if (mcc instanceof ManagedSchedulePollConsumerMBean mpc) { diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java index 4f8c057802a..67cf79047b6 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java @@ -108,8 +108,6 @@ public class EndpointDevConsole extends AbstractDevConsole { } if (e instanceof EndpointLocationAddress raa) { JsonObject ro = new JsonObject(); - ro.put("hosted", raa.isHostedAddress()); - ro.put("remote", !raa.isHostedAddress()); ro.put("address", raa.getAddress()); var d = raa.getAddressMetadata(); if (d != null) { diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java index 195410ce158..96404ade564 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedConsumerMBean.java @@ -26,4 +26,7 @@ public interface ManagedConsumerMBean extends ManagedServiceMBean { @ManagedAttribute(description = "Current number of inflight Exchanges") Integer getInflightExchanges(); + @ManagedAttribute(description = "Whether this consumer hosts a service such as acting as a HTTP server (only available for some components)") + boolean isHostedService(); + } diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java index 53c2418c762..dbf19c1944e 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java @@ -40,9 +40,6 @@ public interface ManagedEndpointMBean { @ManagedAttribute(description = "Endpoint State") String getState(); - @ManagedAttribute(description = "Whether the endpoint location address is hosted or external (only available for some components)") - boolean isEndpointLocationHosted(); - @ManagedAttribute(description = "Address (such as URL or hostname) this endpoint is connecting (only available for some components)") String getEndpointLocationAddress(); diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java index e693ac778c0..5766b4c4e25 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedConsumer.java @@ -20,6 +20,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.Consumer; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.api.management.mbean.ManagedConsumerMBean; +import org.apache.camel.spi.HostedService; @ManagedResource(description = "Managed Consumer") public class ManagedConsumer extends ManagedService implements ManagedConsumerMBean { @@ -48,4 +49,11 @@ public class ManagedConsumer extends ManagedService implements ManagedConsumerMB } } + @Override + public boolean isHostedService() { + if (consumer instanceof HostedService hs) { + return hs.isHostedService(); + } + return false; + } } diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java index 7c50fb0a0c2..c90ba2f6813 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java @@ -80,14 +80,6 @@ public class ManagedEndpoint implements ManagedInstance, ManagedEndpointMBean { return ServiceStatus.Started.name(); } - @Override - public boolean isEndpointLocationHosted() { - if (endpoint instanceof EndpointLocationAddress raa) { - return raa.isHostedAddress(); - } - return false; - } - @Override public String getEndpointLocationAddress() { if (endpoint instanceof EndpointLocationAddress raa) { diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultConsumer.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultConsumer.java index e5d8dd7b0f2..f6d0298f685 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultConsumer.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultConsumer.java @@ -29,6 +29,7 @@ import org.apache.camel.health.HealthCheck; import org.apache.camel.health.HealthCheckAware; import org.apache.camel.spi.ExceptionHandler; import org.apache.camel.spi.ExchangeFactory; +import org.apache.camel.spi.HostedService; import org.apache.camel.spi.RouteIdAware; import org.apache.camel.spi.UnitOfWork; import org.apache.camel.support.service.ServiceHelper; @@ -40,7 +41,7 @@ import org.slf4j.LoggerFactory; /** * A default consumer useful for implementation inheritance. */ -public class DefaultConsumer extends ServiceSupport implements Consumer, RouteAware, RouteIdAware, HealthCheckAware { +public class DefaultConsumer extends ServiceSupport implements Consumer, RouteAware, RouteIdAware, HealthCheckAware, HostedService { private static final Logger LOG = LoggerFactory.getLogger(DefaultConsumer.class); @@ -64,6 +65,11 @@ public class DefaultConsumer extends ServiceSupport implements Consumer, RouteAw .getExchangeFactory().newExchangeFactory(this); } + @Override + public boolean isHostedService() { + return false; + } + @Override public String toString() { if (consumerToString == null) {