Op-rabbit + Acked Stream

最近在學習(三分之三)

口中常說:我用緊scala。

但個人感覺,自己學得不到位,scala community 其實有很多工具未好好使用,每天都像是為了完成某些功能,忘記了好好去學習自己不懂的東西。

很難得在多了空閒時間,所以也在慢慢摸索自己對 scala 的認識。

這次是 rabbit mq + akka stream 。

朋友一句:

Unleash the power of Rx. It’s not just a multithreading tool. Treat your data as an infinite stream. You will realize how simple your app could be.

我便總是在想,可不可以將 rabbit queue message 變成一條 infinite stream,然後可以寫成 Rx 的樣子?

稍微 Google 了一下,先是找到了lightbend 分享的例子。當中使用rabbit 的例子不錯,是很簡單的listen一條 queue messages,如果message當中有字 terror,將它放進另一條queue,沒有,便將它放進 okqueue。

發現當中使用了舊有 akka stream experimental 的 signature。稍稍修改後,變成了最新的 Akka stream interface 的樣子

本來高興了一陣子,直到發現了,本來一直有用的 op-rabbit,竟然有 akka stream support? 結果,我嘗試使用oprabbit + acked stream,實作了我心目中的 Rx 寫法

很感動的說,前後嘗試了小小時間,學懂了幾樣東西。

  1. 大神的Code真的很漂亮
  2. 大神的例子鮮明實用,在scala community 不常見
  3. Acked Stream 將 akka stream 補上 Acked 的功效,有點兒像朋友寫的 ErrorT:將XorT 加上 Error Handling 的特質;functional 真的很有趣
  4. Life is too short for sbt,用上了這個 coursier 後,下載 depenency jar 真的快了很多倍
  5. 可以為自己實驗用的東西,都寫了一個 bootstrap 的工具給自己玩。有齊 docker,test工具和 coursier,不用每次都要由頭 setup ,感覺很爽哈哈