Akka PersistentChannel在确认后不会从日记中删除消息



我正在编写一段代码,该代码使用persistentChannel将消息发送给执行IO的演员。完成后,它确认可确认的消息。该文件说,一旦确认,该消息应在持久通道中删除。但是就我而言,我的文件停留在日记中,没有被删除。我的要求是,一旦我获得了IO的成功结果,或者截止日期超出了持续的信息,则应从期刊中删除。

class IOWorker(config: Config, ref: ActorRef) 
    extends Actor with ActorLogging {
  import IOWorker._
  val channel = context.actorOf(PersistentChannel.props(
      PersistentChannelSettings(redeliverInterval = 1.minute, 
           pendingConfirmationsMax = 1,pendingConfirmationsMin = 0)))  
  val doIOActor = context.actorOf(DOIOActor(config))    
  def receive = {
      case payload @ (msg, deadline)=> 
        channel ! Deliver(Persistent(payload), doIOActor.path)
  }
}
object DOIOActor {  
  def apply(config: Config) = Props(classOf[DOIOActor], config)
}
class DOIOActor(config: Config) extends Actor 
    with ActorLogging {
  def receive = {
    case p @ ConfirmablePersistent(payload, sequenceNr, redeliveries) =>      
      payload match {
          case (msg, deadline: Deadline) => 
            deadline.hasTimeLeft match {
              case false => p.confirm()
              case true =>              
                sender ! SAVED(msg)
                Try{DOIO}
                match 
                {
                  case Success(v) =>
                    sender ! SUCCESS(msg)
                    p.confirm()
                  case Failure(doioException) => 
                    log.warning(s"Could not complete DOIO. $doioException")
                    throw doioException
                }
      }
  }
}
  def DOIO(ftpClient: FTPClient, destination: String, file: AISData) = {    
    SOMEIOTASK match {
      case true => log.info(s"Storing file to $destination.")
      case false => 
        throw new Exception(s"Could not DOIO to destination $destination")
    }
  }
}

删除是由大多数期刊实现不同步执行的,如邮件列表中所述。

最新更新