批量 0.7.0

Bulk 0.7.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2020年3月
SPM支持SPM

muukiimuukii维护。



Bulk 0.7.0

Bulk / BulkLogger

Version platforms

Bulk是一个用于缓冲对象的库。Pipeline(Sink)接收对象并发出缓冲的对象。

用途是什么?

在多个情况下打包大量元素将非常有用。例如,使用您自己的API发送产品的分析事件。

  • 收集许多事件
  • 将其打包成一个
  • 将这些事件作为一个事件集发送。

Bulk模块

创建一个sink

我们称接收对象的pipeline为Sink

Sink接收对象并将缓冲的对象发表到多个目标。

  1. 选择缓冲区。

要创建一个批量,我们可以选择几种类型的缓冲区。
目前,Bulk提供了以下2种。

  • MemoryBuffer
  • FileBuffer

在这个教程中,我们选择MemoryBuffer。

  1. 创建目标

目标从Sink接收缓冲的对象。

“Bulk”没有提供默认实现的“目标”。
现在,您需要创建它。

public protocol TargetType {

  associatedtype Element

  func write(items: [Element])
}
struct MyTarget<Element>: TargetType {

  func write(items: [Element]) {
    print(items)
  }
}

最后,创建“BulkSink”对象。

let sink = BulkSink<String>(
  buffer: MemoryBuffer.init(size: 10).asAny(),
  targets: [
    MyTarget<String>().asAny()
  ]
)

发送对象。

sink.send("A")
sink.send("B")
sink.send("C")

sink 当缓冲区接收到指定大小(示例中为10个元素)的对象时,发送聚合后的对象。

“BulkLogger”模块

“Logger”作为Bulk之上的库。

BulkLogger提供Logger对象,该对象将内部的Sink封装起来。

let logger = Logger(context: "", sinks: [
  BulkSink<LogData>(
    buffer: MemoryBuffer.init(size: 10).asAny(),
    targets: [

      TargetUmbrella.init(
        transform: LogBasicFormatter().format,
        targets: [
          LogConsoleTarget.init().asAny()
        ]
      ).asAny(),

      OSLogTarget(subsystem: "BulkDemo", category: "Demo").asAny()
    ]
  )
    .asAny()
])

Logger对象将日志数据发送到两个目标(LogConsoleTarget和OSLogTarget)。

logger.verbose("Hello")

许可证

Bulk框架是根据MIT许可证发布的。