【问题标题】:Receive message either from ServerHealthKafka or ServerHealthSap type从 ServerHealthKafka 或 ServerHealthSap 类型接收消息
【发布时间】:2019-07-13 19:00:54
【问题描述】:

我有以下类型定义:

object ServerMonitoring {

  sealed trait ServerHealthKafka

  case object KafkaInactiveConfirmed extends ServerHealthKafka

  case object KafkaActiveConfirmed extends ServerHealthKafka

  sealed trait ServerHealthSap

  case object SapInactiveConfirmed extends ServerHealthSap

  case object SapActiveConfirmed extends ServerHealthSap

}

我想创建一个接受ServerHealthKafkaServerHealthSap 的演员。

我已经开始创作但不知道如何继续:

object DetectorStateMachine {

  case class State(kafka: ServerHealthKafka, sap: ServerHealthSap)

  def create(informant: ActorRef[InformantEvent]): Behavior[ServerHealthEvent] =
    Behaviors.setup { context =>

      context.log.info(s"=============> Start DetectorStateMachine <=============")

      def loop(state: State): Behavior[ServerHealthEvent] = {

        Behaviors.receiveMessage {
          case KafkaActiveConfirmed =>
          case KafkaInactiveConfirmed =>
          case SapActiveConfirmed
          case SapInactiveConfirmed =>
        }

      }

      loop(State(KafkaInactiveConfirmed, SapInactiveConfirmed))


    }

}

我必须在这里使用消息适配器吗?

【问题讨论】:

    标签: scala akka akka-typed


    【解决方案1】:

    Behavior 采用单一消息类型,因此您需要为所有消息定义一个通用的trait

    sealed trait ServerHealthEvent
    sealed trait ServerHealthKafka extends ServerHealthEvent
    sealed trait ServerHealthSap extends ServerHealthEvent
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 2013-10-15
      • 1970-01-01
      相关资源
      最近更新 更多