com.twitter.finagle.thrift.exp.partitioning
MethodBuilderCustomStrategy
Companion object MethodBuilderCustomStrategy
final class MethodBuilderCustomStrategy[Req <: ThriftStructIface, Rep] extends CustomPartitioningStrategy
An API to set a custom partitioning strategy for a client MethodBuilder.
- Alphabetic
- By Inheritance
- MethodBuilderCustomStrategy
- CustomPartitioningStrategy
- PartitioningStrategy
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new MethodBuilderCustomStrategy(getPartitionIdAndRequest: ToPartitionedMap[Req], responseMerger: Option[ResponseMerger[Rep]])
- new MethodBuilderCustomStrategy(getPartitionIdAndRequest: ToPartitionedMap[Req])
- new MethodBuilderCustomStrategy(getPartitionIdAndRequest: ToPartitionedMap[Req], getLogicalPartitionId: (Int) => Seq[Int])
- new MethodBuilderCustomStrategy(getPartitionIdAndRequest: ToPartitionedMap[Req], getLogicalPartitionId: (Int) => Seq[Int], responseMerger: Option[ResponseMerger[Rep]])
- getPartitionIdAndRequest
A function for the partitioning logic. MethodBuilder is customized per-method so that this method only takes one Thrift request type.
- getLogicalPartitionId
Gets the logical partition identifiers from a host identifier, host identifiers are derived from ZkMetadata shardId. Indicates which logical partitions a physical host belongs to, multiple hosts can belong to the same partition, and one host can belong to multiple partitions, for example:
val getLogicalPartition: Int => Seq[Int] = { case a if Range(0, 10).contains(a) => Seq(0, 1) case b if Range(10, 20).contains(b) => Seq(1) case c if Range(20, 30).contains(c) => Seq(2) case _ => throw ... }
If not provided, the default is that each instance is its own partition.
- responseMerger
Supplies a ResponseMerger for messaging fan-out. Non-fan-out case the default is None.
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- val getPartitionIdAndRequest: ToPartitionedMap[Req]
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def newNodeManager[U, T](underlying: Stack[ServiceFactory[U, T]], params: Params): PartitionNodeManager[U, T, _, ToPartitionedMap]
- Definition Classes
- MethodBuilderCustomStrategy → CustomPartitioningStrategy
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- val responseMerger: Option[ResponseMerger[Rep]]
- val responseMergerRegistry: ResponseMergerRegistry
A ResponseMergerRegistry implemented by client to supply ResponseMergers for message fan-out cases.
A ResponseMergerRegistry implemented by client to supply ResponseMergers for message fan-out cases.
- Definition Classes
- CustomPartitioningStrategy
- See also
ResponseMerger
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()