Commit Graph

59 Commits

Author SHA1 Message Date
Dave Syer
f8c6070eaa Upgrade Spring Boot to latest 2025-01-06 11:23:52 +00:00
Chris Bono
b08e11ad39 Improve channel factory API
This commit improves the GrpcChannelFactory createChannel API by
introducing `ChannelBuilderOptions` that can be specified during
channel creation.

Additionally, concrete Netty channel factory implementations have
been added as well as adding type to the GrpcChannelBuilderCustomizer
which helps match customizers to channel factories.
2025-01-03 22:04:28 +00:00
Dave Syer
b3271be918 Add explicit support for running on separate port
If the user wants a second port for gRPC that should be possible
(and was the only way with the old ecosystem projects). This change
adds a webflux sample and support for
spring.grpc.server.{servlet,reactive}.enabled to be explicitly
"false" to disable the embedded services.

N.B. embedded services are not yet supported in webflux so the flag
has no effect, except to disable gRPC completely if it is "true".
2024-12-23 15:02:45 +00:00
Dave Syer
8b91ebd86a Tidy up README 2024-12-20 14:40:34 +00:00
Josh Long
780f8e61ea Add more detailed getting started to readme 2024-12-20 14:30:49 +00:00
Jonas Bjørge Andersen
4149ed552e Add autoconfiguration for client side observation interceptor
[resolves #51]

Signed-off-by: Jonas Bjørge Andersen <dev@jonasandersen.no>
2024-12-20 08:00:47 +00:00
Chris Bono
a21748aba2 Add autoconfiguration guard on GrpcServlet
This commit adds a guard on the Servlet gRPC server auto-configuration
to ensure that the `io.grpc:grpc-servlet-jakarta` lib is on the classpath.

Resolves #83

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-12-20 07:22:09 +00:00
Dave Syer
e63ed35edf Upgrade to Spring Boot 3.4.0 2024-12-16 11:20:53 +00:00
Chris Bono
9dbe763932 Fix config props defaults and descriptions
This commit simplifies the client properties by setting the default values
directly on the properties and removes markdown from the property javadocs.
This improves end user experience by adding default values and descriptions
to the generated config props docs.

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-12-05 06:51:19 +00:00
Dave Syer
acbe334b7e Refine config properties for default channel
Because of https://github.com/spring-projects/spring-boot/issues/43352
there's no point having a "default" entry in the channels map.
2024-12-04 09:56:39 +00:00
Chris Bono
5c0ca7056c Add client interceptors to channel factory
This commit adds support for global and channel-specific client
interceptors.

Resolves #52

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-12-01 21:01:08 +00:00
Chris Bono
62499c8be2 Rename client configurer to customizer
This commit renames the GrpcChannelConfigurer to GrpcChannelBuilderCustomizer
to more accurately represent its purpose and for consistency with the
server-side terminology.

Additionally, a new `What's new?` doc is added to list breaking changes between
versions.

See #52

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-12-01 17:57:41 +00:00
Dave Syer
7f4cac0381 Back to snapshots 2024-11-28 15:37:42 +00:00
Dave Syer
b273d8e83a Bump to 0.2.0 2024-11-28 14:30:09 +00:00
Chris Bono
e0199dd130 Add client side health feature
This commit adds health auto-configuration to the client.

See #66

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-28 10:53:03 +00:00
Chris Bono
9374bdf93f Add docs for health feature
This commit adds docs for the server-side portion of the health feature.

See #56

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-26 17:28:41 +00:00
Chris Bono
6e154d53eb Add actuator health check adapter
This commit adds the implementation to the previously added skeleton
ActuatorHealthAdapter. On a configurable schedule, the adapter takes
a configured list of Actuator health indicators and gets their current
status and maps it into the gRPC HealthStatusManager.

See #56

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-25 07:47:57 +00:00
Chris Bono
b7b43cb6a3 Add property guard on Actuator health adapter
This commit adds a ConditionalOnProperty on the Actuator health
adapter autoconfiguration to allow users to disable only that
part of the health system.

Also, unrelated, the generated configprops with their default values.

See #56

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-25 07:47:57 +00:00
Dave Syer
e33863992b Add some docs 2024-11-21 16:12:23 +00:00
Dave Syer
3feca42834 Move exception handling into autoconfiguration 2024-11-21 16:03:52 +00:00
Dave Syer
c239cfe970 Add sample and integration test 2024-11-21 15:24:44 +00:00
Chris Bono
ab55182304 Add autoconfiguration for server-side health
This commit autoconfigures the gRPC health service by providing
the following beans:

- gRPC HealthStatusManager
- gRPC HealthService
- Actuator health check adapter (skeleton impl)

See #56

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-21 08:19:22 +00:00
Dave Syer
796bcf560f Add inprocess factories and a test 2024-11-19 09:45:13 +00:00
Chris Bono
8eb623e82d Add server interceptor blending
This commit implements the `@GprcService(blendWithGlobalInterceptors)`
feature. This allows global and per-service server interceptors to be
combined into a single list and then finally sorted (i.e. blended).

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-18 06:55:49 +00:00
Chris Bono
3178518433 Use specific bean types in autoconfiguration
This commit uses the most specific bean type in the autoconfiguration to
improve AOT compatibility.

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-15 07:48:53 +00:00
Chris Bono
cd28b69756 Add support for service specific server interceptors
This commit introduces the `@GrpcService` annotation which can be used to
associate one or more `ServerInterceptor` beans with a `BindableService`.

See #5

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-14 15:04:19 +00:00
Chris Bono
3904948d3e Add description to additional metadata fields
This commit adds a description for the observations
and reflection enabled properties.

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-14 14:57:41 +00:00
Dave Syer
178bcf4774 Add brief docs on server o11y 2024-11-11 11:40:55 +00:00
CyberZujo
d61af1a1a2 Add autoconfig for reflection service and friends #26
Signed-off-by: CyberZujo <hara_zujo@hotmail.com>
2024-11-09 11:36:52 +00:00
Dave Syer
d630a41988 Tweak server docs on servlet customizations 2024-11-07 08:49:15 +00:00
Chris Bono
4daf41392a Add GlobalServerInterceptor to service discovery
This commit builds upon the previously added service discoverer
by adding support for finding all server interceptor beans that
are marked w/ the newly added `@GlobalServerInterceptor`
annotation.

Resolves #4

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-07 08:10:05 +00:00
Chris Bono
daf8e046c3 Adds checkstyles to project
This commit configures in the Puppycrawl checkstyle with the Spring JavaFormat.

To avoid the intrusive nature of such a change, the spring-grpc-core module is
the only one to have the checkstyles applied. I will handle the other modules as
time permits.

Signed-off-by: Chris Bono <chris.bono@gmail.com>
2024-11-07 08:07:48 +00:00
Dave Syer
33483bb500 Revert ServerServiceDefinition bean provider
In retrospect I think users should not have to create
ServerServiceDefinitions. It doesn't help anybody and
it seems like quite a deep internal detail.
2024-11-06 17:14:59 +00:00
Dave Syer
80e703448c FIx link in docs 2024-11-06 15:29:27 +00:00
Dave Syer
f0ec4b1bac Add support for registering service definition bean 2024-11-06 11:51:29 +00:00
Dave Syer
05e6240672 Support for mTLS in client
Fixes #10
2024-11-05 12:28:22 +00:00
Logan Kulinski
5ab408b626 chris.bono@gmail.com
Signed-off-by: Logan Kulinski <rashes_lineage02@icloud.com>
2024-10-27 12:10:51 -05:00
Dave Syer
8bab3cd081 Revert to snapshots 2024-10-25 12:35:52 +01:00
Dave Syer
2d2e0d8b8e Ready for 0.1.0 2024-10-25 12:20:47 +01:00
Dave Syer
42b54708aa Add sample with Shaded Netty 2024-10-25 12:10:57 +01:00
Dave Syer
6be591d544 Add some basic docs 2024-10-25 11:01:54 +01:00
Dave Syer
b5a623231a Add a test for autoconfig of servlet
Signed-off-by: Dave Syer <dsyer@vmware.com>
2024-10-24 08:38:12 +01:00
Dave Syer
24a797ee4b Reinstate flatten plugin
The problem with the flatten plugin is that it unconditionally
nukes the dependency management section, which we very much need
in our "dependencies" modules.

The key is to make the "dependencies" pom independent of the main
reactor (pattern copied form Spring Cloud). Then you can run
flatten in the main reactor build and not in the dependencies,
which then retain there useful properties and dependency
management.
2024-10-22 11:17:53 +01:00
Dave Syer
0b98da4c49 Install nodejs independently of antora 2024-10-22 10:07:02 +01:00
Dave Syer
4712ca5458 Add CONTRIBUTING.md 2024-10-22 09:50:08 +01:00
Dave Syer
951dd83e51 Add automation for README.md generation at top level
Fixes #35
2024-10-22 09:27:57 +01:00
Dave Syer
3025853b31 Autogenerate README 2024-10-21 16:37:47 +01:00
Dave Syer
fe2f266d87 Add PR notes to contributing docs 2024-10-21 16:32:58 +01:00
varunu28
434e26dcec Rename bom to dependencies 2024-10-21 09:41:42 +01:00
Chris Bono
213d1f9bd8 Add spring-grpc-spring-boot-starter module
This commit does the following:

* Adds a `spring-grpc-spring-boot-starter` module

* Adjusts the scope of the dependencies in the`spring-grpc-spring-boot-autoconfigure`
  module to optional
2024-10-21 08:30:54 +01:00