Actix actor의 AsyncContext 활용하기 (2)

지난 글에 이어 Actix actor의 AsyncContext 함수를 사용하는 방법을 알아봅니다. add_stream, add_message_stream 1 2 3 4 5 6 7 8 9 10 fn add_stream<S>(&mut self, fut: S) -> SpawnHandle where S: Stream + 'static, A: StreamHandler<S::Item>; fn add_message_stream<S>(&mut self, fut: S) where S: Stream + 'static, S::Item: Message, A: Handler<S::Item>; Context에 stream을 등록하는 함수입니다. 두 함수는 거의 비슷하나 차이점은 add_message_stream은 stream error를 무시한다는 점입니다. 다음은 API Doc의 예제인데요. Stream을 만들고 message를 하나 보냅니다....

2022-08-27 · 3 min · 468 words · Huijeong Kim

Actix actor의 AsyncContext 활용하기 (1)

Actix에서 actor를 생성하면 해당 actor를 실행시키는 문맥(context)에 해당하는 Context가 생성 되고, Context는 다양한 actor의 동작을 정의합니다. 그 중 Context를 활용해서 actor가 future를 실행, 취소, 기다리는 방법을 알아봅니다. 아래 예제 코드들은 actix 0.13.0 버전을 사용했습니다. Actor Context 먼저, Actor의 Context의 정의, 생성 시기를 알아보겠습니다. 사용자가 정의한 struct를 actor로 만들기 위해서 최소로 필요한 것은 Actor trait을 구현(implement) 하고 Context를 정의하는 것 입니다. 1 2 3 4 5 struct MyActor; impl Actor for MyActor { type Context = Context<Self>; } 위 actor는 다음과 같이 생성되고 시작될 수 있습니다....

2022-08-21 · 8 min · 1541 words · Huijeong Kim

Actix actor를 사용하는 두 가지 방법

Actix에서 actor를 사용하는 방법은 두 가지로 나눌 수 있을 것 같습니다. 첫 번째는 특정 task를 실행시키는 용도로, client가 message를 보내면 이를 받아서 처리하는 actor를 만드는 것 이고, 두 번째는 주기적으로 task를 실행시키는 actor를 만드는 것 입니다. 두 경우 각각 actor를 사용하는 방법에 대해 알아봅니다. 1. Message를 처리하는 actor Actor를 시작하면 Addr가 리턴됩니다. Addr는 해당 actor에게 message를 전달할 수 있는 channel 입니다. Client module은 이 addr를 통해서 message를 전달할 수 있습니다....

2022-08-17 · 8 min · 1494 words · Huijeong Kim

Actix에서 gRPC Server 시작하기

Rust로 gRPC로 외부와 통신하는 Actix 기반 application을 작성하는 방법을 알아봅니다. gRPC Server는 Tonic을 사용해 구현합니다. Tonic과 Actix는 둘 다 tokio 기반 application으로, tokio Runtime 위에서 동작합니다. 같은 tokio Runtime에 gRPC Server와 Actor System을 실행시켜 보겠습니다. Tonic을 사용해 gRPC Server 시작하기 Tonic을 사용하면 다음과 같은 간단한 Server 실행 코드를 포함한 Async Block(Future)을 Tokio Runtime에서 실행하여 gRPC Server를 시작할 수 있습니다. 아래 코드는 Tonic repo 내 helloworld exmaple에서 tonic::main 매크로를 풀어 쓴 것입니다....

2022-08-14 · 4 min · 699 words · Huijeong Kim