当前位置: 首页 > 工具软件 > Scalaz > 使用案例 >

scalaz使用_Scalaz-Camel:充分利用“ Scala和Scalaz为功能编程提供的功能”。

江阳冰
2023-12-01

scalaz使用

Scalaz-Camel是一个新项目,它提供了Camel现有Java DSL和Scala DSL的替代DSL,但是Scalaz-Camel与现有DSL相比有什么优势? JAXenter与Talend软件架构师和Scalaz-Camel所有者Martin Krasser进行了交谈。

JAXenter:什么是scalaz-camel项目?

Martin Krasser: scalaz-camel项目是尝试将企业集成模式 (EIP)与功能编程(FP)结合在一起:集成解决方案由EIP与基于Scala编程语言的功能域特定语言(DSL)组成和Scalaz功能编程库。 为了通过不同的协议和API提供与其他系统的连接,scalaz-camel使用Apache Camel集成组件

scalaz-camel DSL是一组组合器和组合运算符,用于组合消息处理器和消息传递端点以完成消息处理路由。 消息处理路由的组成部分可以是普通的Scala函数,现有的Camel消息处理器和端点以及其他路由或路由片段。 组成灵活性,DSL的可扩展性以及Scala和Scalaz的惯用用法已成为scalaz-camel DSL设计的重要方面。

其他主要功能是对非阻塞路由和异步消息处理器的支持。 这是通过连续传递样式(CPS)API实现的。 CPS主要在内部使用,DSL支持直接式编程。 Scalaz-camel还使用并发策略来抽象化如何同时路由消息。 应用程序可以从许多预定义的并发策略中进行选择,也可以根据需要实施高度专业的自定义策略。 可配置的并发策略和对非阻塞路由的支持是构建高度可扩展的并发集成解决方案的重要前提。

此外,消息是scalaz-camel中的不可变对象,因此并发消息处理器可以轻松共享它们。 该项目还为Camel中的可变对等方提供了桥梁,该桥允许在scalaz-camel应用程序中重用所有现有的Camel消息处理器和组件/端点。

项目的Wiki中提供了有关scalaz-camel功能的更详细的概述,

JAXenter: scalaz-camel DSL与Camel的现有Java DSL和Scala DSL有何不同?

Martin Krasser: Camel的Java和Scala DSL是基于构建器模式的流畅API。 在我看来,Camel DSL在某种程度上试图模仿功能性编程风格,而无法为应用程序开发人员提供功能性编程语言的全部功能。 这就是scalaz-camel DSL出现的地方。它充分利用了Scala和Scalaz提供的功能编程:消息处理器和终结点生成器是(或可以转换为)一元函数,可以通过一元或应用方式构成。 使用> =>运算符的Monadic合成是针对彼此依赖的处理器(例如管道中的消息处理器)完成的,而应用性合成是针对可彼此独立运行的消息处理器(例如收件人列表中的目标)完成的,例如。 对于实用的组合,scalaz-camel提供了特殊的组合器(多播,分散,…)。

使用scalaz-camel DSL不需要成为FP专家。 基本的Scala知识对于入门而言已经足够。 这相当于使用Scala的List或Option,而无需知道它们是monad。

另一个重要的区别是,scalaz-camel DSL是可扩展的。 添加新的集成模式就像定义一个新功能并导入该功能一样简单。 例如,这允许其他库轻松地从子域(例如eHealth-Integration)提供DSL扩展,而无需修改scalaz-camel本身。 这与采用单片方法的Camel DSL相反。 DSL的任何扩展都必须在Apache Camel的核心中进行,这是对其他基于Apache Camel的DSL演进的限制。

JAXenter:您能举一个Scalaz-Camel用例的例子吗?

Martin Krasser: scalaz-camel和Apache Camel均可用于实现相同的目标:通过将EIP和其他消息处理器组合到更大的消息处理应用程序来构建集成解决方案。 他们只是在编程范例和习惯用法上有所不同,其中scalaz-camel遵循功能编程范例。

这意味着Apache Camel的所有用法示例也是scalaz-camel的有效用法示例。 在项目的Wiki中给出了一个来自订单处理域的简单scalaz-camel 用法示例 。 这是有关scalaz-camel入门的教程。 项目的测试规范中提供了更多的用法示例。

JAXenter:您在该项目的“待办事项”列表上有什么内容?

Martin Krasser:对于即将发布的0.3版本,我要重点关注以下内容。

–支持进一步的企业集成模式
–支持交易和重新交付
– Akka整合
–更多示例
–性能分析
–文档扩展
–使用HawtDispatch

此清单是初步的。 任何对改进的反馈,想法和建议都非常受欢迎,可以将其添加到项目的问题跟踪器中。


翻译自: https://jaxenter.com/scalaz-camel-fully-leveraging-what-scala-and-scalaz-offers-for-functional-programming-102885.html

scalaz使用

 类似资料: