---
# System prepended metadata

title: 第10章 メッセージチャネル
tags: [Akka本読書会]

---

# 第10章 メッセージチャネル

* [Discord](https://discord.com/channels/432531367427964929/766981892968808498/868404394851434536)

#### 疑問

#### 感想

## 10.1 チャネルの種類

#### 疑問

#### 感想
- パブリッシュ・サブスクライブチャネル
    - つまるところ、GoFのObserverパターンだよね的な印象
        - Observerが直接Observableを監視するのではなく、途中でEventStreamを経由する = ObserverとObservableの関係が間接的になる点が、違いかも
        - 間接的関係(≒疎結合)になったことで、恐らく柔軟性と拡張性はより強力に、一般に開かれた状態になった一方で、両者の関係性は暗黙的になった側面もある(間接的な関係になったのだから、当然と言えば当然)
    - Akkaの場合、EventStreamという仕組みを使ってObserverパターンが実現できる or Observerパターンと同等のことが実現できるよ的なイメージ（Observerパターンに言及していないということは、そっちへの視点はそれほど無いのかもだけど）

- > p.259 Event バスにパブリッシュするイベントすべてを表す型。EventStreamでは、AnyRef型を イベント型として使用しており、参照型はすべてイベントとして使用可能
    - Akka Typed では、AnyRefでなくどういう扱い方をするようになったのかしら。
    - それに伴うEventBus周りの変化はどれくらい?

- カスタムイベントバス
    - > GiftModule内でフィルタリングを行うこともできますが、これには許容できないリソースを消費すると仮定しましょう
        - シレッと仮定が書いてあり、かつその仮定を前提とした說明を以降でしている
        - ではその仮定が崩れた(存在できなかった、成立しなかった)場合はどうなるかについては、特に書いてない
    - カスタムイベントバスを作るかどうかの判断軸は、リソース消費の観点よりは、そのフィルタリングルールがどのぐらい厳格に守られるべきかという観点から詰める方針の方が一般性高そうな気がする
        - 個別のサブスクライバで勝手に判断して良いならサブスクライバでフィルタリングするし、いかなるサブスクライバも厳守しなくてはならない（ユースケースによって変化してはならない）ならカスタムイベントバス、的な。要はドメイン基準。

## 10.2 特殊チャネル

#### 疑問

#### 感想

- 保証配信チャネル
    - > この項では、Akkaが保証配信チャネルを持たない代わりに保証のレベルを用意していることを説明しました（P.272）
    - えっ！？
    - そういうチャンネルがあるのかと思って読んでいた
    - 実際は要件に応じた「保証」のレベルを考慮する必要があるので、手段はサポートするが、具体的な実装は要件次第だよ、というわりかし当たり前のことが書いてあった印象（2度見した）

## 10.3 まとめ

#### 疑問

#### 感想

###### tags: `Akka本読書会`

## 次回の副読本
- [Behaviors as finite state machines](https://doc.akka.io/docs/akka/current/typed/fsm.html#behaviors-as-finite-state-machines)
    - https://discord.com/channels/432531367427964929/766981892968808498/868472194202763334
