From 6cd7e1d3c6cf447a2f6295b3177c3882645178a1 Mon Sep 17 00:00:00 2001 From: Tim Hess Date: Fri, 10 Apr 2026 14:44:51 -0500 Subject: [PATCH 1/2] update for UseAspNetCoreUrls changes --- docs/docs/v4/discovery/hashicorp-consul.md | 8 +++++++- docs/docs/v4/discovery/netflix-eureka.md | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/docs/v4/discovery/hashicorp-consul.md b/docs/docs/v4/discovery/hashicorp-consul.md index f5a32a8e..46062908 100644 --- a/docs/docs/v4/discovery/hashicorp-consul.md +++ b/docs/docs/v4/discovery/hashicorp-consul.md @@ -61,7 +61,7 @@ All of these settings must start with `Consul:Discovery:`. | `UseNetworkInterfaces` | Query the operating system for network interfaces to determine `HostName` and `IPAddress` | `false` | | `PreferIPAddress` | Register the running app with IP address instead of hostname | `false` | | `Port` | Port number with which to register the running app | | -| `UseAspNetCoreUrls` | Register with the port number ASP.NET Core is listening on | `true` | +| `UseAspNetCoreUrls` | Use ASP.NET Core listen addresses for service registration [^3] | `true` | | `InstanceId` | The unique ID under which to register the running app | computed | | `Tags` | Array of tags used when registering the running app | | | `Meta` | Metadata key/value pairs used when registering the running app | see [Configuring metadata](#configuring-metadata) | @@ -84,6 +84,12 @@ All of these settings must start with `Consul:Discovery:`. [^2]: This setting only affects operation when `RegisterHealthCheck` is `true` and `Heartbeat:Enabled` is `false` +[^3]: Has no effect when `Port`, `Scheme`, or `UseNetworkInterfaces` already determine registration. Set to `false` to disable listen-address probing. + +When `UseAspNetCoreUrls` is `true` (the default), `Port` and `Scheme` follow ASP.NET listen addresses [^3]. +See [8 ways to set the URLs for an ASP.NET Core app](https://andrewlock.net/8-ways-to-set-the-urls-for-an-aspnetcore-app/) +for how to influence them using environment variables. + This section pertains to querying for app instances. All of these settings must start with `Consul:Discovery:`. diff --git a/docs/docs/v4/discovery/netflix-eureka.md b/docs/docs/v4/discovery/netflix-eureka.md index ffe65029..5e83f4f1 100644 --- a/docs/docs/v4/discovery/netflix-eureka.md +++ b/docs/docs/v4/discovery/netflix-eureka.md @@ -78,6 +78,7 @@ All of these settings must start with `Eureka:Instance:`. | `IPAddress` | IP address on which the instance is registered | computed | | `UseNetworkInterfaces` | Query the operating system for network interfaces to determine `HostName` and `IPAddress` | `false` | | `PreferIPAddress` | Whether to register with `IPAddress` instead of `HostName` | `false` | +| `UseAspNetCoreUrls` | Use ASP.NET Core listen addresses for service registration [^5] | `true` | | `VipAddress` | Comma-separated list of VIP addresses for the instance | computed | | `SecureVipAddress` | Comma-separated list of secure VIP addresses for the instance | computed | | `Port` | Non-secure port number on which the instance should receive traffic | computed | @@ -106,7 +107,9 @@ All of these settings must start with `Eureka:Instance:`. [^4]: Add a NuGet package reference to `Steeltoe.Management.Endpoint` to use its `health` and `info` actuator paths. -The values for `Port` and `SecurePort`, and whether they are enabled, are automatically determined from the ASP.NET address bindings. [^1] +[^5]: Has no effect when configured `Port` / `SecurePort` already apply (with the matching enabled flags). Set to `false` to disable listen-address probing. The default Cloud Foundry registration method (`route`) uses ports 80 and 443. + +When `UseAspNetCoreUrls` is `true` (the default), `Port`, `SecurePort`, and whether they are enabled follow ASP.NET listen addresses [^5]. See [8 ways to set the URLs for an ASP.NET Core app](https://andrewlock.net/8-ways-to-set-the-urls-for-an-aspnetcore-app/) for how to influence them using environment variables. From b5bc79d670d4cecc8e9e4ad6f5d8f8006164a388 Mon Sep 17 00:00:00 2001 From: Tim Hess Date: Mon, 13 Apr 2026 13:11:57 -0500 Subject: [PATCH 2/2] fix AMQP link, pr suggestions - change footnotes to use text instead of numbers so order doesn't matter - move aspnetcore-urls link into footnote --- docs/docs/v3/messaging/rabbitmq-reference.md | 2 +- docs/docs/v4/discovery/hashicorp-consul.md | 26 ++++++++---------- docs/docs/v4/discovery/netflix-eureka.md | 28 +++++++++----------- 3 files changed, 24 insertions(+), 32 deletions(-) diff --git a/docs/docs/v3/messaging/rabbitmq-reference.md b/docs/docs/v3/messaging/rabbitmq-reference.md index adc6a679..2f42a3cc 100644 --- a/docs/docs/v3/messaging/rabbitmq-reference.md +++ b/docs/docs/v3/messaging/rabbitmq-reference.md @@ -3280,7 +3280,7 @@ To use this classifier for retry, you can use a `PollyRetryPolicy` created with ## Further Reading -For those who are not familiar with AMQP, the [specification](https://www.amqp.org/resources/download) is actually quite readable. +For those who are not familiar with AMQP, the [AMQP 0-9-1 specification (PDF)](https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf) is actually quite readable. It is, of course, the authoritative source of information, and the Spring AMQP code should be easy to understand for anyone who is familiar with the spec. Our current implementation of the RabbitMQ support is based on their 2.8.x version, and it officially supports AMQP 0.8 and 0.9.1. We recommend reading the 0.9.1 document. diff --git a/docs/docs/v4/discovery/hashicorp-consul.md b/docs/docs/v4/discovery/hashicorp-consul.md index 46062908..109c6b5f 100644 --- a/docs/docs/v4/discovery/hashicorp-consul.md +++ b/docs/docs/v4/discovery/hashicorp-consul.md @@ -61,7 +61,7 @@ All of these settings must start with `Consul:Discovery:`. | `UseNetworkInterfaces` | Query the operating system for network interfaces to determine `HostName` and `IPAddress` | `false` | | `PreferIPAddress` | Register the running app with IP address instead of hostname | `false` | | `Port` | Port number with which to register the running app | | -| `UseAspNetCoreUrls` | Use ASP.NET Core listen addresses for service registration [^3] | `true` | +| `UseAspNetCoreUrls` | Register with the port number and scheme ASP.NET Core is listening on [^ASPNETUrls] | `true` | | `InstanceId` | The unique ID under which to register the running app | computed | | `Tags` | Array of tags used when registering the running app | | | `Meta` | Metadata key/value pairs used when registering the running app | see [Configuring metadata](#configuring-metadata) | @@ -69,26 +69,22 @@ All of these settings must start with `Consul:Discovery:`. | `InstanceZone` | Metadata zone value to use when registering the running app | | | `DefaultZoneMetadataName` | Metadata key name for `InstanceZone` | `zone` | | `RegisterHealthCheck` | Whether to enable periodic health checking for the running app | `true` | -| `HealthCheckCriticalTimeout` | Duration after which Consul deregisters the running app when in state `critical` [^1] | `30m` | -| `Heartbeat:Enabled` | Whether the running app periodically sends TTL (time-to-live) heartbeats [^1] | `true` | +| `HealthCheckCriticalTimeout` | Duration after which Consul deregisters the running app when in state `critical` [^RegisterHealthCheckTrue] | `30m` | +| `Heartbeat:Enabled` | Whether the running app periodically sends TTL (time-to-live) heartbeats [^RegisterHealthCheckTrue] | `true` | | `Heartbeat:TtlValue` | How often a TTL heartbeat must be sent to be considered healthy | `30` | | `Heartbeat:TtlUnit` | Unit for `TtlValue` (`ms`, `s`, `m` or `h`) | `s` | | `Heartbeat:IntervalRatio` | Rate at which the running app sends TTL heartbeats, relative to `TtlValue` with `TtlUnit` | `0.66` | -| `HealthCheckPath` | Relative URL to the health endpoint of the running app [^2] | `/actuator/health` | -| `HealthCheckUrl` | Absolute URL to the health endpoint of the running app (overrides `HealthCheckPath`) [^2] | | -| `HealthCheckTlsSkipVerify` | Whether Consul should skip TLS verification for HTTP health checks [^2] | `false` | -| `HealthCheckInterval` | How often Consul should perform HTTP health checks [^2] | `10s` | -| `HealthCheckTimeout` | The timeout Consul should use for HTTP health checks [^2] | `10s` | +| `HealthCheckPath` | Relative URL to the health endpoint of the running app [^HealthCheckSettings] | `/actuator/health` | +| `HealthCheckUrl` | Absolute URL to the health endpoint of the running app (overrides `HealthCheckPath`) [^HealthCheckSettings] | | +| `HealthCheckTlsSkipVerify` | Whether Consul should skip TLS verification for HTTP health checks [^HealthCheckSettings] | `false` | +| `HealthCheckInterval` | How often Consul should perform HTTP health checks [^HealthCheckSettings] | `10s` | +| `HealthCheckTimeout` | The timeout Consul should use for HTTP health checks [^HealthCheckSettings] | `10s` | -[^1]: This setting only affects operation when `RegisterHealthCheck` is `true` +[^ASPNETUrls]: When `UseAspNetCoreUrls` is `true` (the default), Steeltoe sets `Port` and `Scheme` to match the address ASP.NET Core is listening on (the host portion is not used), preferring HTTPS. However, if there are configured values for `Port` or `Scheme` or if `UseNetworkInterfaces` is `true`, ASP.NET Core addresses are not used. See [8 ways to set the URLs for an ASP.NET Core app](https://andrewlock.net/8-ways-to-set-the-urls-for-an-aspnetcore-app/) for how to influence ASP.NET Core listen addresses. -[^2]: This setting only affects operation when `RegisterHealthCheck` is `true` and `Heartbeat:Enabled` is `false` +[^RegisterHealthCheckTrue]: This setting only affects operation when `RegisterHealthCheck` is `true` -[^3]: Has no effect when `Port`, `Scheme`, or `UseNetworkInterfaces` already determine registration. Set to `false` to disable listen-address probing. - -When `UseAspNetCoreUrls` is `true` (the default), `Port` and `Scheme` follow ASP.NET listen addresses [^3]. -See [8 ways to set the URLs for an ASP.NET Core app](https://andrewlock.net/8-ways-to-set-the-urls-for-an-aspnetcore-app/) -for how to influence them using environment variables. +[^HealthCheckSettings]: This setting only affects operation when `RegisterHealthCheck` is `true` and `Heartbeat:Enabled` is `false` This section pertains to querying for app instances. All of these settings must start with `Consul:Discovery:`. diff --git a/docs/docs/v4/discovery/netflix-eureka.md b/docs/docs/v4/discovery/netflix-eureka.md index 5e83f4f1..4af17d10 100644 --- a/docs/docs/v4/discovery/netflix-eureka.md +++ b/docs/docs/v4/discovery/netflix-eureka.md @@ -78,40 +78,36 @@ All of these settings must start with `Eureka:Instance:`. | `IPAddress` | IP address on which the instance is registered | computed | | `UseNetworkInterfaces` | Query the operating system for network interfaces to determine `HostName` and `IPAddress` | `false` | | `PreferIPAddress` | Whether to register with `IPAddress` instead of `HostName` | `false` | -| `UseAspNetCoreUrls` | Use ASP.NET Core listen addresses for service registration [^5] | `true` | +| `UseAspNetCoreUrls` | Register with the port number and scheme ASP.NET Core is listening on [^ASPNETUrls] | `true` | | `VipAddress` | Comma-separated list of VIP addresses for the instance | computed | | `SecureVipAddress` | Comma-separated list of secure VIP addresses for the instance | computed | | `Port` | Non-secure port number on which the instance should receive traffic | computed | -| `NonSecurePortEnabled` | Whether the non-secure port should be enabled [^1] | computed | +| `NonSecurePortEnabled` | Whether the non-secure port should be enabled [^PreferSecure] | computed | | `SecurePort` | Secure port on which the instance should receive traffic | computed | -| `SecurePortEnabled` | Whether the secure port should be enabled [^1] | computed | -| `RegistrationMethod` | How to register on Cloud Foundry; can be `route`, `direct`, or `hostname` [^2] | | -| `InstanceEnabledOnInit` | Whether the instance should take traffic as soon as it is registered [^3] | `true` | +| `SecurePortEnabled` | Whether the secure port should be enabled [^PreferSecure] | computed | +| `RegistrationMethod` | How to register on Cloud Foundry; can be `route`, `direct`, or `hostname` [^RegistrationMethod] | | +| `InstanceEnabledOnInit` | Whether the instance should take traffic as soon as it is registered [^EnabledOnInit] | `true` | | `LeaseRenewalIntervalInSeconds` | How often (in seconds) the client sends heartbeats to Eureka to indicate that it is still alive | `30` | | `LeaseExpirationDurationInSeconds` | Time (in seconds) that the Eureka server waits after receiving the last heartbeat before it marks the instance as down | `90` | -| `StatusPageUrlPath` | Relative path to the status page for the instance [^4] | `/info` | +| `StatusPageUrlPath` | Relative path to the status page for the instance [^ManagementRef] | `/info` | | `StatusPageUrl` | Absolute URL to the status page for the instance (overrides `StatusPageUrlPath`) | computed | | `HomePageUrlPath` | Relative path to the home page URL for the instance | `/` | | `HomePageUrl` | Absolute URL to the home page for the instance (overrides `HomePageUrlPath`) | computed | -| `HealthCheckUrlPath` | Relative path to the health check endpoint of the instance [^4] | `/health` | +| `HealthCheckUrlPath` | Relative path to the health check endpoint of the instance [^ManagementRef] | `/health` | | `HealthCheckUrl` | Absolute URL for health checks of the instance (overrides `HealthCheckUrlPath`) | computed | | `SecureHealthCheckUrl` | Secure absolute URL for health checks of the instance (overrides `HealthCheckUrlPath`) | computed | | `AsgName` | AWS auto-scaling group name associated with the instance | | | `DataCenterInfo` | Data center the instance is deployed to (`Netflix`, `Amazon`, or `MyOwn`) | `MyOwn` | -[^1]: When both non-secure and secure ports are enabled, the secure port is preferred during service discovery. +[^PreferSecure]: When both non-secure and secure ports are enabled, the secure port is preferred during service discovery. -[^2]: Specify `direct` to use container-to-container networking on Cloud Foundry. Specify `hostname` to force using `HostName`. +[^RegistrationMethod]: Specify `direct` to use container-to-container networking on Cloud Foundry. Specify `hostname` to force using `HostName`. -[^3]: When set to `false`, call `EurekaApplicationInfoManager.UpdateInstance()` after initialization to mark the instance as `UP`. +[^EnabledOnInit]: When set to `false`, call `EurekaApplicationInfoManager.UpdateInstance()` after initialization to mark the instance as `UP`. -[^4]: Add a NuGet package reference to `Steeltoe.Management.Endpoint` to use its `health` and `info` actuator paths. +[^ManagementRef]: Add a NuGet package reference to `Steeltoe.Management.Endpoint` to use its `health` and `info` actuator paths. -[^5]: Has no effect when configured `Port` / `SecurePort` already apply (with the matching enabled flags). Set to `false` to disable listen-address probing. The default Cloud Foundry registration method (`route`) uses ports 80 and 443. - -When `UseAspNetCoreUrls` is `true` (the default), `Port`, `SecurePort`, and whether they are enabled follow ASP.NET listen addresses [^5]. -See [8 ways to set the URLs for an ASP.NET Core app](https://andrewlock.net/8-ways-to-set-the-urls-for-an-aspnetcore-app/) -for how to influence them using environment variables. +[^ASPNETUrls]: When `UseAspNetCoreUrls` is `true` (the default), Steeltoe sets `Port`, `SecurePort`, `NonSecurePortEnabled`, and `SecurePortEnabled` using the addresses ASP.NET Core is listening on (the host portion is not used). However, if `Port` or `SecurePort` is configured (and the matching `*PortEnabled` flag is set to `true`), ASP.NET Core addresses are not used. See [8 ways to set the URLs for an ASP.NET Core app](https://andrewlock.net/8-ways-to-set-the-urls-for-an-aspnetcore-app/) for how to influence ASP.NET Core listen addresses. On Cloud Foundry, the default registration method (`route`) uses ports 80 and 443. It is also possible to use dynamic port bindings (by setting the port number to `0` in ASP.NET). In that case, Steeltoe adds a random number (outside the valid port range) to the `InstanceId` to make it unique.