SystemFactory
您可以通过扩展接口并实现其三个抽象函数 、getConsumer
和getProducer
来编写自己的系统工厂类getAdmin
。在每个功能中,getConsumer
例如,您要创建一个系统客户,另一个自定义类的实例扩展SystemConsumer
和定义系统应该如何使用。通过这样做,您的 Samza 工作将知道如何admin/consumer/producer
在需要时获取系统的权限。
示例(在 Scala 中):
class YourSystemFactory extends SystemFactory {
override def getConsumer(systemName: String, config: Config, registry: MetricsRegistry): SystemConsumer = {
new YourSystemConsumer(
getAdmin(systemName, config).asInstanceOf[YourSystemAdmin],
config.get("someParam"))
}
override def getAdmin(systemName: String, config: Config): SystemAdmin = {
new YourSystemAdmin(
config.get("someParam"),
config.get("someOtherParam"))
)
}
override def getProducer(systemName: String, config: Config, registry: MetricsRegistry): SystemProducer = {
new YourSystemProducer(
getAdmin(systemName, config).asInstanceOf[YourSystemAdmin],
config.get("someParam"))
}
}
在您的配置中:
# Your system params
systems.your.samza.factory=your.package.YourSystemFactory
systems.your.consumer.param=value
systems.your.producer.param=value