> For the complete documentation index, see [llms.txt](https://docs.rumi.systems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rumi.systems/rumi-core/guides/developing-applications/authoring-user-code/message-injection.md).

# Message Injection

This section covers how to programmatically inject messages into your microservice for processing, including scheduled and one-time injection.

## Overview

Message injection allows you to create and process messages programmatically without receiving them from external sources. This is useful for:

* **Timers and Periodic Tasks** - Execute business logic on a schedule
* **State Initialization** - Bootstrap your store with initial data
* **Workflow Orchestration** - Trigger multi-step processes

Injected messages are processed exactly like externally-received messages: they're dispatched to handlers and execute within transactions with full consensus guarantees.

## Injection Patterns

* **One-Time Injection** - Inject a single message for immediate processing
* **Scheduled Injection** - Schedule messages to execute at specific times or intervals
* **Initialization Messages** - Special handling for first/initial messages during startup

## Topics

* [**Injecting Messages**](/rumi-core/guides/developing-applications/authoring-user-code/message-injection/injecting-messages.md) - Programmatically create and inject messages for processing
* [**Scheduling Messages**](/rumi-core/guides/developing-applications/authoring-user-code/message-injection/scheduling-messages.md) - Schedule messages for future or periodic execution

## Related Topics

* [Initializing the Microservice](/rumi-core/guides/developing-applications/authoring-user-code/lifecycle/initializing-the-microservice.md) - Use first/initial messages for initialization
* [Message Processing](/rumi-core/guides/developing-applications/authoring-user-code/message-processing.md) - How injected messages are processed
