पर एक संदेश भेजें, क्या Actor
किसी भी संदेश को प्राप्त करने के लिए एक्स राशि की प्रतीक्षा करना संभव है, और यदि कोई संदेश प्राप्त होता है, तो इसे सामान्य रूप से संसाधित करें, अन्यथा किसी अन्य Actor
(निर्माता में पूर्व निर्धारित) को एक संदेश भेजें?अक्का अभिनेता - किसी संदेश की अपेक्षा करने के लिए कुछ समय प्रतीक्षा करें, अन्यथा
उत्तर
हाँ, यदि आप के लिए प्रतीक्षा करने के लिए किसी भी संदेश चाहते हैं, तो आप बस सेट एक receiveTimeout: http://doc.akka.io/docs/akka/current/scala/actors.html#receive-timeout
(डॉक्स है
import akka._
import actor._
import util._
import duration._
import Impatient._
object Impatient {
sealed trait State
case object WaitingForMessage extends State
case object MessageReceived extends State
case object TimeoutExpired extends State
sealed trait Data
case object Unitialized extends Data
// In
case object Message
}
class Impatient(receiver: ActorRef) extends Actor with FSM[State, Data] {
startWith(WaitingForMessage, Unitialized)
when(WaitingForMessage, stateTimeout = 3 seconds) {
case Event(StateTimeout, data) => goto(TimeoutExpired) using data // data is usually modified here
case Event(Message, data) => goto(MessageReceived) using data // data is usually modified here
}
onTransition {
case WaitingForMessage -> MessageReceived => stateData match {
case data => log.info("Received message: " + data)
}
case WaitingForMessage -> TimeoutExpired => receiver ! TimeoutExpired
}
when(MessageReceived) {
case _ => stay
}
when(TimeoutExpired) {
case _ => stay
}
initialize
}
यहाँ यह कार्रवाई में है यहां थोड़ा भ्रामक, आप प्रत्येक संदेश के बाद प्राप्त टाइमआउट भी सेट कर सकते हैं)
यह संभव है, Akka Actor "ask" and "Await" with TimeoutException पर एक नज़र डालें। लेकिन ध्यान रखें कि एक अभिनेता के अंदर अवरुद्ध करना एक बहुत बुरा विचार है क्योंकि उस समय अभिनेता किसी अन्य संदेश को संभाल नहीं सकता है। इसके अलावा यह एक अक्का प्रसंस्करण धागा को अवरुद्ध करता है।
एक बेहतर तरीका एक संदेश भेजने के लिए है (आग और भूलें) और Akka scheduler का उपयोग करके कुछ टाइमआउट ईवेंट शेड्यूल करें। जब प्रतिक्रिया आती है, तो उस ईवेंट को रद्द करें या कुछ झंडा सेट करें ताकि उत्तर वास्तव में समय पर आने पर यह ट्रिगर नहीं होगा।
एक ओवरकिल हो सकता है, लेकिन आप Finite State Machine (FSM) विशेषता देख सकते हैं।
object Main extends App {
import akka._
import actor._
import Impatient._
val system = ActorSystem("System")
val receiver = system.actorOf(Props(new Actor with ActorLogging {
def receive = {
case TimeoutExpired => log.warning("Timeout expired")
}
}))
val impatient = system.actorOf(Props(new Impatient(receiver)), name = "Impatient")
impatient ! Message
val impatient2 = system.actorOf(Props(new Impatient(receiver)), name = "Impatient2")
Thread.sleep(4000)
impatient2 ! Message
system.shutdown()
}
- 1. हैंडल अक्का अभिनेता बाध्य मेलबॉक्स संदेश QueueAppendFailedException
- 2. अक्का अभिनेता फॉर बनाम एक अभिनेता आरफ
- 3. बाहर निकलने के लिए एक अभिनेता की प्रतीक्षा करें()
- 4. अक्का अभिनेता से संदेश कतार का आकार कैसे प्राप्त करें?
- 5. अक्का अभिनेता: कुछ मूलभूत बातें समझने के लिए एक उदाहरण की आवश्यकता है
- 6. अक्का स्काला अभिनेता
- 7. मांग अभिनेता को प्राप्त करें या अन्यथा
- 8. अक्का अभिनेता, वायदा, और बंद
- 9. अक्का रिमोट अभिनेता सर्वर डिस्कवरी
- 10. अक्का संदेश संस्करणों को कैसे संभालता है?
- 11. चेकिंग अगर रिमोट अक्का अभिनेता उपलब्ध है
- 12. "कृपया प्रतीक्षा करें" संदेश?
- 13. 2.0 के बाद से अक्का अभिनेता कैसे शुरू करें?
- 14. अक्का - एक अभिनेता के कितने उदाहरण आपको बनाना चाहिए?
- 15. सिमुलेशन के लिए अक्का
- 16. क्लस्टर में अक्का अभिनेताओं की खोज
- 17. अक्का पुस्तकालय और अभिनेता-आधारित समरूपता मॉडल
- 18. अक्का
- 19. कैसे अक्का में अनुरोध प्रासंगिक डेटा की रक्षा करने के
- 20. अक्का अभिनेता "पूछना" और "का इंतजार" TimeoutException
- 21. एक निश्चित समय के लिए इनपुट की प्रतीक्षा करें
- 22. अक्का में, क्या मैं एक अलग अभिनेता से एक संदेश खराब कर सकता हूं?
- 23. अक्का
- 24. प्रतीक्षा आईडी की जांच करते समय प्रतीक्षा करें
- 25. अभिनेता
- 26. अभिनेता मॉडल
- 27. क्या अभिनेता को ऐसा कुछ संदेश देने का बुरा व्यवहार है जो अभिनेता नहीं है?
- 28. jquery का उपयोग कर पूरी तरह लोड करने के लिए किसी विशेष छवि की प्रतीक्षा करें?
- 29. स्कैला के अभिनेता मॉडल
- 30. किसी ईवेंट के लिए अवरुद्ध और प्रतीक्षा
शेड्यूल के लिए +1 आर समाधान। – paradigmatic