ComponentsResolving Components
Resolve Collections
Resolve all components assignable to an interface or type.
Use component.ResolveAll when a feature is extension-based and should run
every registered implementation.
type Task interface {
Run(context.Context) error
}
func RunTasks(ctx context.Context, container component.Container) error {
tasks, err := component.ResolveAll[Task](ctx, container)
if err != nil {
return err
}
for _, task := range tasks {
if err := task.Run(ctx); err != nil {
return err
}
}
return nil
}Collections are useful for plugin-like application behavior:
- command line runners
- startup tasks
- route contributors
- configuration customizers
- framework extensions
Keep collection items small and independent. A failing item should return an error that makes the failing component easy to identify.
