我有一些应用事件。
我希望这些事件被传递到几个地方:一个定期轮换的文件(在我的情况下是专有的 TSV 格式)、一个消息总线(在我的情况下是 Kafka)、用于在网络资源中存档(在我的情况下是 Amazon Glacier)。
我有我所想应该但这是一个非常基本的问题。我希望我的应用程序只发送它们想要发送的字节到几个接收器,并有另一个进程负责确保:
- 消息到达目的地
- 如果目的地无法到达,它们会在内存中缓冲一段时间
- 如果内存已满,它们会在磁盘上缓冲一段时间
- 如果我们遇到困难,消息就会开始丢失,但是当整个网络没有瘫痪时,我们就能注意到我们开始丢失消息了。
我希望能够使用一些简单的参数来配置上述行为,例如分配多少内存,特定消息到达目的地的重要性(可能是重试次数等)。
对我来说,这听起来像是一个相当“基本”的一般问题(毫无疑问是一个难题,但我会想象它存在某种东西)。我想从我的应用程序将字节写入 Unix 套接字或类似的东西,并让代理负责缓冲并重试将它们传送到我的目的地。
有这样的事吗?这就是人们使用 (r)syslog 或 journald 的目的吗?