Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Actor메시지는 일반적으로 보낸순서에의한 순서가 보장이 되지만 MailBox의 경우 동시에 보낸 메시지중

우선으로 처리해야할 메시지에대해 정의가 가능합니다.

덜바쁜 녀석에게 작업을 분배한다던지, 메시지 자체에 우선순위를 높일수 있습니다.

Image Added

우선순위 정의 코드

...


Code Block
languagec#
themeEmacs
titleIssue라는 메시지에 IsSecurityFlaw 참인 조건을 우선처리
linenumberstrue
using Akka.Actor;
using Akka.Event;
using Akka.Dispatch;    

//namespace ServiceA.STUDY
	public class Issue
    {
        public bool IsSecurityFlaw;
        public bool IsBug;
        public string Message;

        public Issue(string message, bool isBug)
        {
            Message = message;
            IsBug = isBug;
            IsSecurityFlaw = !isBug;
        }

    }

    public class IssueTrackerMailbox : UnboundedPriorityMailbox
    {        
        public IssueTrackerMailbox(Settings setting , Akka.Configuration.Config config) : base(setting, config)
        {            
        }
        

        protected override int PriorityGenerator(object message)
        {
            var issue = message as Issue;

            if (issue != null)
            {
                if (issue.IsSecurityFlaw)
                    return 0;

                if (issue.IsBug)
                    return 1;
            }

            return 2;
        }
    }

...