モジュール: Mongo::Cluster::Triggers

次による拡張機能。
トポロジー
次のドキュメントに含まれます。
トポロジー
定義:
build/ruby-Driver-v 2.19 /lib/mongo/cluster/toになります。rb
build/ruby-Driver-v 2.19 /lib/mongo/cluster/toになります。rb、
build/ruby-Driver-v 2.19 /lib/mongo/cluster/to logical/base.rb,
build/ruby-Driver-v 2.19 /lib/mongo/cluster/toquality/long.rb,
build/ruby-Driver-v 2 . 19 /lib/mongo/cluster/topquality/sharded.rb、
build/ruby-Driver-v 2 . 19 /lib/mongo/cluster/topquality/unknown.rb、
build/ruby-Driver-v 2 . 19 /lib/mongo/cluster/topquality/load_ balance.rb、
build/ruby-Driver-v 2 . 19 /lib/mongo/cluster/topquality/no_replica_set_options.rb、
build/ruby-Driver-v 2 . 19 /lib/mongo/cluster/topquality/replica_set_no_primary.rb、
build/ruby-Driver-v 2 . 19 /lib/mongo/cluster/topquality/replica_set_with_primary.rb

Overview

サーバーを取得するための動作を定義します。

トポロジーはクラスターに関連付けられています。たとえば、ReplicaSet トポロジーにはレプリカセット名が含まれます。 したがって、トポロジー オブジェクトは複数のクラスター オブジェクトでは使用できません。

同時に、トポロジー オブジェクトは、コンストラクターが提案するであっても、クラスター内の特定のサーバーについては何も認識していません。 つまり、特にレプリカセット内でサーバーの変更を追跡する場合は、トポロジー変更イベントによりアプリケーションが独自にクラスター参照を維持する必要があります。

以来

  • 2.0.0

名前空間で定義済み

Modules: NoReplicaSetOptions クラス: ベースLoadBalancedReplicaSetNoPrimaryReplicaSetWithPrimaryシャーディング単一不明

定数の概要の削減

OPTIONS =

この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。

サーバー選択のためのさまざまなトポロジー。

以来

  • 2.0.0

{
  直接: Single,
  load_ Triggers: LoadBalanced,
  レプリカ_セット: ReplicaSetNoPrimary,
  シャーディングされた場合: シャード,
}.freeze

インスタンス メソッドの概要を折りたたむ

インスタンス メソッドの詳細

#Initial (クラスター、モニタリング、オプション) =ReplicaSet 、...

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

指定されたオプションの初期クラスター トポロジーを取得します。

例:

初期クラスター トポロジーを取得します。

Topology.initial(topology: :replica_set)

パラメーター:

  • クラスター クラスター

    クラスター。

  • モニタリング 監視

    の監視。

  • options ハッシュ

    クラスターのオプション。

オプション ハッシュ( options ):

  • :direct_ connection true | false

    トポロジー検出をバイパスして、指定されたシードに直接接続するかどうか。 シードは 1 つだけ提供する必要があります。

  • :connect 記号

    非推奨 - このオプションの代わりに :direct_ connection オプションを使用してください。 使用する接続方法。 これにより、クラスターは自動検出ではなく、指定された方法で動作するように強制されます。 : direct、 :replica_set、 :sharded、 :load_ balance のいずれか 1 つ。 :connect が :load_ Triggers に設定されている場合、ロード バランサーに接続されていない場合でも、ドライバーはサーバーがロード バランサーであるかのように動作します。

  • :load_ ユーザー分散 true | false

    ロード バランサーへの接続を要求するかどうか。

  • :replica_set 記号

    接続するレプリカセットの名前。 このレプリカセットに含まれないサーバーは無視されます。

次の値を返します。

以来

  • 2.0.0



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/cluster/topLOGy.rb', 行90

デフォルト 初期(クラスター, モニタリング, options)
  接続 = options[:connect]&.to_sym
  cls = 場合 options[:direct_ connection]
    場合 接続 & & 接続 != :direct
      発生 ArgumentError, " 競合するトポロジー オプション: direct_ connection=true と connect= #{ connect }
    end
    場合 options[:load_ ユーザー分散]
      発生 ArgumentError, "競合するトポロジー オプション: direct_ connection=true と load_ balance=true "
    end
    Single
  elsif options[:direct_ connection] == false & & 接続 & & 接続 == :direct
    発生 ArgumentError, "競合するトポロジー オプション: direct_ connection=false と connect= #{ connect } "
  elsif 接続 & & 接続 != :load_ ユーザー分散
    場合 options[:load_ ユーザー分散]
      発生 ArgumentError, " 競合するトポロジー オプション: connect= #{ オプション [ :connect ] } と load_ balanced=true を 検査し ます 。
    end
    オプション.fetch(options[:connect].to_sym)
  elsif options.key?(:replica_set) || options.key?(:replica_set_name)
    場合 options[:load_ ユーザー分散]
      発生 ArgumentError, "競合するトポロジー オプション: レプリカ_セット/replica_set_name と load_standard=true "
    end
    ReplicaSetNoPrimary
  elsif options[:load_ ユーザー分散] || 接続 == :load_ ユーザー分散
    LoadBalanced
  else
    不明
  end
  # ここでのオプションは、クライアント/クラスター/サーバー オプションです。
  #特にレプリカセット名のキーは
  # topology.
  # replica_set_name が指定されている場合(ドライバーによって内部的に指定される場合など)、
  # そのキーを使用します。
  番号それ以外の場合(例: クライアントから渡されたオプション)、
  # レプリカセットを replica_set_name に移動
  場合 (cls <= ReplicaSetNoPrimary || cls == Single) & & !options[:replica_set_name]
    options = options.dup
    options[:replica_set_name] = options.削除(:replica_set)
  end
  cls.新着情報(options, モニタリング, クラスター)
end