Function service
If you need to run some long-running service in your app and Roadster doesn't provide built-in support for the
specific service you need, you can implement
AppService
directly. This gives you the
most control over the service, especially if you implement
AppServiceBuilder
as well.
If you don't want to implement AppService
yourself, you can simply run the service in an async
function and pass
that function to a
FunctionService
.
fn build_app() -> RoadsterApp<AppContext> {
RoadsterApp::builder()
// Use the default `AppContext` for this example
.state_provider(|context| Ok(context))
// Register the example function-based service
.add_service(
FunctionService::builder()
.name("example-service")
.function(example_service)
.build(),
)
.build()
}
async fn example_service(
_state: AppContext,
_cancel_token: CancellationToken,
) -> RoadsterResult<()> {
info!("Running example function-based service");
Ok(())
}