Class: Temporalio::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/temporalio/connection.rb,
lib/temporalio/connection/service.rb,
lib/temporalio/connection/tls_options.rb,
lib/temporalio/connection/retry_config.rb,
lib/temporalio/connection/test_service.rb,
lib/temporalio/connection/workflow_service.rb

Overview

A connection to the Temporal server. It provides gRPC level communication to a Temporal server.

Connections are usually used through either a Client or a Worker. It may also be used to perform gRPC requests to the server (see #workflow_service).

Defined Under Namespace

Classes: RetryConfig, Service, TestService, TlsOptions, WorkflowService

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(address = nil, tls: nil, metadata: nil, retry_config: nil) ⇒ Connection

Returns a new instance of Connection.

Parameters:

  • address (String | nil) (defaults to: nil)

    host` for the Temporal server. Defaults to `localhost:7233`.

  • tls (Temporalio::Connection::TlsOptions | nil) (defaults to: nil)

    TLS/mTLS options for the connection. By default, TLS is disabled.

  • metadata (Hash | nil) (defaults to: nil)

    gRPC metadata (ie. HTTP headers) to send with each request to the server. Optional.

  • retry_config (Temporalio::Connection::RetryConfig | nil) (defaults to: nil)

    gRPC retry configuration to use by default on this connection.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/temporalio/connection.rb', line 26

def initialize(
  address = nil,
  tls: nil,
  metadata: nil,
  retry_config: nil
)
  host, port = parse_url(address)

  runtime = Temporalio::Runtime.instance

  @core_connection = Temporalio::Bridge::Connection.connect(
    runtime.core_runtime,
    Temporalio::Bridge::ConnectOptions.new(
      url: tls ? "https://#{host}:#{port}" : "http://#{host}:#{port}",
      tls: tls && Temporalio::Bridge::TlsOptions.new(
        server_root_ca_cert: tls.server_root_ca_cert,
        client_cert: tls.client_cert,
        client_private_key: tls.client_private_key,
        server_name_override: tls.server_name_override,
      ),
      metadata: ,
      retry_config: retry_config && Temporalio::Bridge::RetryConfig.new(
        initial_interval_millis: retry_config.initial_interval_millis,
        randomization_factor: retry_config.randomization_factor,
        multiplier: retry_config.multiplier,
        max_interval_millis: retry_config.max_interval_millis,
        max_elapsed_time_millis: retry_config.max_elapsed_time_millis,
        max_retries: retry_config.max_retries,
      ),
      client_version: Temporalio::VERSION,
    ),
  )
end

Instance Attribute Details

#core_connectionObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



18
19
20
# File 'lib/temporalio/connection.rb', line 18

def core_connection
  @core_connection
end

Instance Method Details

#test_serviceTemporalio::Connection::TestService

Get an object for making TestService RPCs.



70
71
72
# File 'lib/temporalio/connection.rb', line 70

def test_service
  @test_service ||= Temporalio::Connection::TestService.new(core_connection)
end

#workflow_serviceTemporalio::Connection::WorkflowService

Get an object for making WorkflowService RPCs.



63
64
65
# File 'lib/temporalio/connection.rb', line 63

def workflow_service
  @workflow_service ||= Temporalio::Connection::WorkflowService.new(core_connection)
end