Kafka是事件驱动架构的常见默认值,但是将其适应于遗留环境会引入阻抗不匹配。在一些情况下,我们已经成功地使用以下方法来最小化遗留复杂性融合Kafka REST代理.代理允许开发者通过HTTP接口访问Kafka,这在使用本地Kafka协议比较困难的环境中非常有用。例如,我们只需让SAP团队通过预先配置的SAP远程函数调用HTTP POST命令,就可以使用通过SAP发出的事件,从而避免围绕SAP旋转Java抽象(以及团队来管理它)的需要。代理功能非常齐全,但是,与任何此类适配器工具一样,我们建议谨慎对待所涉及的权衡。我们认为,当代理允许遗留生产者发送事件时,它是有价值的,但当抽象变得更加复杂时,要小心通过代理创建事件消费者。代理并没有改变Kafka消费者是有状态的这一事实,这意味着通过REST API创建的消费者实例被绑定到一个特定的代理,并且需要通过HTTP调用来消费来自主题的消息,这改变了Kafka事件的标准语义。