Signals are a fully asynchronous and durable mechanism for sending data into a running Workflow (as opposed to passing data as arguments when starting the Workflow or polling external data in Activities).
- Signals can receive data, but cannot return it.
- When a Signal is received for a running Workflow, Temporal persists the Signal event and payload in the Workflow history. The Workflow can then process the Signal at any time afterwards without the risk of losing the information.
- In the Go SDK, a Workflow can pause until it receives a Signal by blocking on a Signal channel.
- If you don't know if the Workflow is currently running, you can use
SignalWithStartand a new Workflow run will start up to receive the Signal if needed.
You can learn about how to implement Signals within the context of the language you are writing your application in: