Versions Compared

Key

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

...

더많은 라우터정보 참고: https://getakka.net/articles/actors/routers.html


응용편 - AKKA STREAM 

Akka와 아두이노의 기기를 연결하였으며, Akka에서 제공하는 Stream에의해 속도흐름제어를 할수 있습니다.

Image Added

참고 : https://petabridge.com/blog/why-akkadotnet-streams/


가변저항장치의 값에따라 속도가 변경되며, 흐름제어를 하는 ThrottleWork에게 숫자값을 전송하여 처리속도를 동적으로 변경할수 있습니다.

Code Block
themeEmacs
using System;
using Akka;
using Akka.Actor;
using Akka.Event;
using Akka.Streams;
using Akka.Streams.Dsl;
using AkkaDotModule.Models;

namespace UnoAkkaApp.Actors
{
    public class ThrottleWork : ReceiveActor
    {
        private readonly ILoggingAdapter logger = Context.GetLogger();

        private IActorRef consumer;

        private int countPerSec;

        public ThrottleWork(int element, int maxBust)
        {
            countPerSec = element;

            ReceiveAsync<SetTarget>(async target =>
            {
                consumer = target.Ref;
            });

            ReceiveAsync<int>(async count =>
            {
                countPerSec = count;

                logger.Info($"ThrottleWork Spped:{countPerSec}");
            });

            ReceiveAsync<BatchList>(async batchMessage =>
            {
                int Count = batchMessage.Obj.Count;
                Source<object, NotUsed> source = Source.From(batchMessage.Obj);

                using (var materializer = Context.Materializer())
                {
                    var factorials = source;
                    factorials
                         .Throttle(countPerSec, TimeSpan.FromSeconds(1), maxBust, ThrottleMode.Shaping)
                         .RunForeach(obj => {
                             var nowstr = DateTime.Now.ToString("mm:ss");
                             if (obj is BatchData batchData)
                             {
                                 if (consumer != null) consumer.Tell(batchData);
                             }
                         }, materializer)
                         .Wait();
                }
            });
        }
    }
}


작동영상 - 가변저항을 Stream에 연결하여 속도제어

View file
nameakkauni-stream.mp4
height250


단일기기에 배포하기

우노보드는 개발장비에 연결하여, 개발할때 유용하며(개발장비와 USB연결)

...