Methods for client interaction with Temporal
Methods for client interaction with Temporal
(>! {:keys [stub] :as workflow} signal-name params)
Sends 'params' as a signal 'signal-name' to 'workflow'
(>! workflow ::my-signal {:msg "Hi"})
Sends 'params' as a signal 'signal-name' to 'workflow' ```clojure (>! workflow ::my-signal {:msg "Hi"}) ```
(cancel {:keys [stub] :as workflow})
Gracefully cancels 'workflow'
(cancel workflow)
Gracefully cancels 'workflow' ```clojure (cancel workflow) ```
(create-client)
(create-client options)
(create-client options timeout)
Creates a new client instance suitable for implementing Temporal workers (See temporal.client.worker/start
) or
workflow clients (See create-workflow
).
Arguments:
options
: Client configuration option map (See below)timeout
: Connection timeout as a Duration (default: 5s)Value | Description | Type | Default |
---|---|---|---|
:target | Sets the connection host:port | String | "127.0.0.1:7233" |
:identity | Overrides the worker node identity (workers only) | String | |
:namespace | Sets the Temporal namespace context for this client | String | |
:data-converter | Overrides the data converter used to serialize arguments and results. | DataConverter | |
:interceptors | Collection of interceptors used to intercept workflow client calls. | WorkflowClientInterceptor | |
:channel | Sets gRPC channel to use. Exclusive with target and sslContext | ManagedChannel | |
:ssl-context | Sets gRPC SSL Context to use (See temporal.tls/new-ssl-context ) | SslContext | |
:enable-https | Sets option to enable SSL/TLS/HTTPS for gRPC | boolean | false |
:rpc-timeout | Sets the rpc timeout value for non query and non long poll calls | Duration | 10s |
:rpc-long-poll-timeout | Sets the rpc timeout value | Duration | 60s |
:rpc-query-timeout | Sets the rpc timeout for queries | Duration | 10s |
:backoff-reset-freq | Sets frequency at which gRPC connection backoff should be reset practically | Duration | 10s |
:grpc-reconnect-freq | Sets frequency at which gRPC channel will be moved into an idle state | Duration | 60s |
:headers | Set the headers | Metadata | |
:enable-keepalive | Set keep alive ping from client to the server | boolean | false |
:keepalive-time | Set the keep alive time | Duration | |
:keepalive-timeout | Set the keep alive timeout | Duration | |
:keepalive-without-stream | Set if client sends keepalive pings even with no active RPCs | boolean | false |
:metrics-scope | The scope to be used for metrics reporting | Scope |
Creates a new client instance suitable for implementing Temporal workers (See [[temporal.client.worker/start]]) or workflow clients (See [[create-workflow]]). Arguments: - `options`: Client configuration option map (See below) - `timeout`: Connection timeout as a [Duration](https://docs.oracle.com/javase/8/docs/api//java/time/Duration.html) (default: 5s) #### options map | Value | Description | Type | Default | | ------------------------- | --------------------------------------------------------------------------- | ------------ | ------- | | :target | Sets the connection host:port | String | "127.0.0.1:7233" | | :identity | Overrides the worker node identity (workers only) | String | | | :namespace | Sets the Temporal namespace context for this client | String | | | :data-converter | Overrides the data converter used to serialize arguments and results. | [DataConverter](https://www.javadoc.io/doc/io.temporal/temporal-sdk/latest/io/temporal/common/converter/DataConverter.html) | | | :interceptors | Collection of interceptors used to intercept workflow client calls. | [WorkflowClientInterceptor](https://javadoc.io/doc/io.temporal/temporal-sdk/latest/io/temporal/common/interceptors/WorkflowClientInterceptor.html) | | | :channel | Sets gRPC channel to use. Exclusive with target and sslContext | [ManagedChannel](https://grpc.github.io/grpc-java/javadoc/io/grpc/ManagedChannel.html) | | | :ssl-context | Sets gRPC SSL Context to use (See [[temporal.tls/new-ssl-context]]) | [SslContext](https://netty.io/4.0/api/io/netty/handler/ssl/SslContext.html) | | | :enable-https | Sets option to enable SSL/TLS/HTTPS for gRPC | boolean | false | | :rpc-timeout | Sets the rpc timeout value for non query and non long poll calls | [Duration](https://docs.oracle.com/javase/8/docs/api//java/time/Duration.html) | 10s | | :rpc-long-poll-timeout | Sets the rpc timeout value | [Duration](https://docs.oracle.com/javase/8/docs/api//java/time/Duration.html) | 60s | | :rpc-query-timeout | Sets the rpc timeout for queries | [Duration](https://docs.oracle.com/javase/8/docs/api//java/time/Duration.html) | 10s | | :backoff-reset-freq | Sets frequency at which gRPC connection backoff should be reset practically | [Duration](https://docs.oracle.com/javase/8/docs/api//java/time/Duration.html) | 10s | | :grpc-reconnect-freq | Sets frequency at which gRPC channel will be moved into an idle state | [Duration](https://docs.oracle.com/javase/8/docs/api//java/time/Duration.html) | 60s | | :headers | Set the headers | [Metadata](https://grpc.github.io/grpc-java/javadoc/io/grpc/Metadata.html) | | | :enable-keepalive | Set keep alive ping from client to the server | boolean | false | | :keepalive-time | Set the keep alive time | [Duration](https://docs.oracle.com/javase/8/docs/api//java/time/Duration.html) | | | :keepalive-timeout | Set the keep alive timeout | [Duration](https://docs.oracle.com/javase/8/docs/api//java/time/Duration.html) | | | :keepalive-without-stream | Set if client sends keepalive pings even with no active RPCs | boolean | false | | :metrics-scope | The scope to be used for metrics reporting | [Scope](https://github.com/uber-java/tally/blob/master/core/src/main/java/com/uber/m3/tally/Scope.java) | |
(create-workflow client workflow-id)
(create-workflow client workflow options)
Create a new workflow-stub instance, suitable for managing and interacting with a workflow through it's lifecycle.
N.B.: The workflow will remain in an uninitialized and idle state until explicitly started with either (start
) or
(signal-with-start
).
(defworkflow my-workflow
[ctx args]
...)
(let [w (create client my-workflow {:task-queue ::my-task-queue})]
;; do something with the instance 'w')
Create a new workflow-stub instance, suitable for managing and interacting with a workflow through it's lifecycle. *N.B.: The workflow will remain in an uninitialized and idle state until explicitly started with either ([[start]]) or ([[signal-with-start]]).* ```clojure (defworkflow my-workflow [ctx args] ...) (let [w (create client my-workflow {:task-queue ::my-task-queue})] ;; do something with the instance 'w') ```
(get-result {:keys [stub] :as workflow})
Retrieves the final result of 'workflow'. Returns a promise that when derefed will resolve to the evaluation of the defworkflow once the workflow concludes.
(defworkflow my-workflow
[ctx args]
...)
(let [w (create ...)]
(start w ...)
@(get-result w))
Retrieves the final result of 'workflow'. Returns a promise that when derefed will resolve to the evaluation of the defworkflow once the workflow concludes. ```clojure (defworkflow my-workflow [ctx args] ...) (let [w (create ...)] (start w ...) @(get-result w)) ```
(query {:keys [stub] :as workflow} query-type args)
Sends query with 'query-type' and 'args' to 'workflow', returns a value.
The query result is computed by a query-handler, registered inside the workflow definition
using temporal.workflow/register-query-handler!
.
Arguments:
query-type
: keyword (or coerceable into a keyword)args
: serializable query params(query workflow ::my-query {:foo "bar"})
Sends query with 'query-type' and 'args' to 'workflow', returns a value. The query result is computed by a query-handler, registered inside the workflow definition using [[temporal.workflow/register-query-handler!]]. Arguments: - `query-type`: keyword (or coerceable into a keyword) - `args`: serializable query params ```clojure (query workflow ::my-query {:foo "bar"}) ```
(signal-with-start {:keys [stub] :as workflow}
signal-name
signal-params
wf-params)
Signals 'workflow' with 'signal-params' on signal 'signal-name', starting it if not already running. 'wf-params' are used as workflow start arguments if the workflow needs to be started
Signals 'workflow' with 'signal-params' on signal 'signal-name', starting it if not already running. 'wf-params' are used as workflow start arguments if the workflow needs to be started
(start {:keys [stub] :as workflow} params)
Starts 'worklow' with 'params'
Starts 'worklow' with 'params'
(terminate {:keys [stub] :as workflow} reason params)
Forcefully terminates 'workflow'
(terminate workflow "unresponsive", {})
Forcefully terminates 'workflow' ```clojure (terminate workflow "unresponsive", {}) ```
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close