问题标签 [finagle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5210 浏览

java - 使用 Netty 在 Java 中实现 Finagle thrift 客户端服务器

刚刚浏览了 Finagle 主页“http://twitter.github.com/finagle/”。它说我们可以使用 Finagale 用 thrift 编写 netty 的 java 实现。我尝试搜索相同的示例,但找不到。所有示例都在 scala 中。有人可以为我提供其 Java 实现的指针吗?

谢谢

0 投票
3 回答
2964 浏览

soa - RPC系统和企业服务总线的区别

RPC 系统(如 Twitter 的 Finagle)和企业服务总线(如 Mule)之间有什么区别?他们各自擅长解决什么样的问题?

0 投票
5 回答
1877 浏览

scala - 带有 Scala 的 HTTP 消息传递网关

我正在开发一个网关,它将位于移动 Web 应用程序和后端系统上的 Web 服务之间。此网关的目的是保护 Web 应用程序免受后端 Web 服务 api 的更改、引入并发、转换消息、缓冲等。

我提出的架构如下:

  • 使用 PhoneGap 的平台独立移动 Web 应用程序(完成)
  • Gateway 是一个使用 Scala 进行业务逻辑和 ZeroMQ 进行消息传递的 Web 服务(新)
  • 后端是现有的 Web 服务(现有)

网关纯粹负责消息的传递、翻译、聚合等,此时不需要保持状态或进行用户身份验证——它只负责作​​为一个单一的接口,一方面知道如何与移动应用程序通信以及另一侧的一项或多项服务。

我强烈考虑使用 Scala 作为开发语言,因为它似乎非常适合这种类型的应用程序,但是对于这样的 Scala 服务,正确的架构是什么?我查看了诸如 Lift 和 Play 之类的框架,还考虑过做一个简单的基于“java”的 Web 服务,并且只使用 Scala 来实现我的业务逻辑。我坚信让事情尽可能简单。我对可能永远不会使用的框架中的复杂设置和数千行死代码保持警惕。另一方面,将自己限制在“扮演自己的角色”的解决方案中并创建大量工作并且必须维护可能已成为现有解决方案一部分的代码也不理想。

需要考虑的一些事项:我是架构师和开发人员,但我对 Scala 的了解仅限于“Scala 编程,第二版”的前半部分。另外,我的时间非常有限。不过,我想在第一时间把这件事做好。

我希望一些聪明的绅士或淑女能给我提供这种类型的解决方案的见解,也许一两个链接可以快速开始。我真的需要快速前进,但希望其他专业人士的经验或见解可以帮助我避免一路走来的陷阱。对开发环境和工具的任何见解也会有所帮助。我必须在 Mac 上开发(公司规则),但将部署在 Ubuntu 服务器上。我目前在安装 Eclipse 或 Idea 作为 IDE 和用于构建的 scala 编译器或 sbt 之间进行权衡。

更新

感谢以下所有可能的答案。我查看了每一个建议,它们都有优点。现在的问题是押在正确的马上。Spray 可能是解决问题的最简单方法,但我也找到了 Finagle。它似乎是我问题的绝佳解决方案。我有点担心它是建立在 Netty 而不是 Akka 之上的。有没有人看到任何问题。我希望让我的解决方案尽可能纯粹地使用 Scala,但 Finagle 似乎是其中最成熟的。有任何想法吗?

0 投票
2 回答
6315 浏览

scala - Scala 中间件选择之间有什么区别?

注意: 不幸的是,这个问题已关闭,但我正在努力维护它,以防其他人提出同样的问题。

我一直在寻找一个很好的解决方案来在 Scala 中开发一种介于移动设备和现有 Web 服务之间的服务。

当前可行的选项列表是:

那里可能有更多选择。一个人如何决定使用哪一个?一个好的 Scala 中间件选择的特点是什么(请原谅双关语;-)。一方面,我想选择 Akka,因为它是 TypeSafe Scala 堆栈的一部分,但另一方面,像 Finagle 这样的东西具有丰富的库集,并且使管道变得如此简单。喷雾看起来不错且易于使用。

任何建议、见解或经验将不胜感激。我敢肯定,外面的人一定对其中一些有一些经验,他们不会介意分享。

更新:

我希望重新提出这个问题。对这个问题的一个好的回答将帮助新的 Scalateers 避免相关的陷阱。

更新 2:

这些是我提出这个问题后的亲身经历:

Finagle - 我在一个项目中使用了 Finagle,它坚如磐石。

Spray - 在我的最新项目中,我正在使用 Spray,我非常高兴。最新版本是基于 Akka 2 构建的,您可以直接使用 Spray-can 库运行它,从而无需 Web 服务器。Spray 是一组库,而不是一个框架,并且非常模块化。Learn about Spray: REST on Akka 视频提供了一个很好的概述,Cakesolutions 上的这个博客展示了一个非常好的开发方法和架构。

更新 3:

生活节奏很快。如果你不时不时停下来看看周围,你可能会错过它。-费里斯·布勒

这些天来,选择变得更简单了。在我看来,Spray 赢得了这场战斗。它正在被集成到 Akka中,成为下一个 Akka HTTP。我现在已经在多个项目中使用 Spray,老实说,它是我遇到过的最棒且支持最好的软件。

这并不能回答最初的问题,但至少可以说明为什么在大多数情况下 Spray 似乎是最佳选择。它非常灵活、无阻塞且非常稳定。它有客户端和服务器端的库和一个很棒的测试工具包。此外,查看这些统计数据以了解性能:Web 框架基准

0 投票
1 回答
1692 浏览

email - 使用 Heroku 和 Ubuntu 服务器从 Scala 发送电子邮件和短信

我正在创建一个简单的 HTTP 代理,它将位于移动应用程序和后端 SOAP 服务器之间。代理服务器将被包裹在一个过滤器中,当发现某些类型的消息时发送电子邮件和短信通知。我决定使用 Scala、Finagle 和 Heroku。然而,我的客户坚持认为,如果他们决定托管在自己的 Ubuntu 服务器上,则系统不能绑定到 Heroku。因此,他们对使用 Heroku 插件持怀疑态度,因为这会使以后在 Ubuntu 上设置相同的服务变得困难。

如果有人可以就解决这个问题分享一些想法,我将不胜感激。尤其是:

  • 在 Ubuntu 上运行 Finagle 需要什么特别的东西吗?我可以使用 SBT 来“神奇地”获得一切吗?
  • 是否有任何好的解决方案、库或服务,允许以简单且安全的方式发送邮件或 SMS,并且可以在 Heroku 和 Ubuntu 上运行良好?
  • 从 Java 发送邮件通常使用系统属性。如何为像 Heroku 这样的远程服务器进行设置?
0 投票
2 回答
2560 浏览

scala - 如何在 IntelliJ IDEA 中设置使用 git 库的 scala 项目

我想尝试一下 IntelliJ IDEA,但我不知道如何开始。

我只是想创建一个使用托管在 github 上的Finagle Echo Server作为起点的新项目。

假设我从 Mac 上的全新安装开始。我安装了 IDEA 并添加了 Scala 和 SBT 插件。我应该采取哪些步骤来创建一个使用 Finagle 并运行 http 服务器示例中的代码的项目?

请帮忙。我意识到我的问题听起来像是一个愚蠢的问题,但是从 SBT 命令行、Scala-IDE、Idea 等使用 Scala 项目有很多不同的方法,我根本不知道如何获得一个舒适的开发环境.

0 投票
1 回答
970 浏览

jquery - jQuery Ajax 调用 Twitter Finagle 服务器

我正在努力获取从网页发送到我的服务器的 JSON 字符串。

在网页中,我执行以下操作:

在服务器端,我的 Scala 代码如下所示:

由于某种原因,请求内容为空。

如果我将 ajax 调用更改为:

然后我可以将数据作为参数。

如何在服务器上获取 JSON 字符串?我是发错了,还是收错了?

0 投票
1 回答
5716 浏览

scala - 将 Finagle 用于简单的 Scala SOAP 客户端

我正在努力使用 Twitter 的 Finagle 库来实现对 SOAP 服务器的 HTTP 请求。

下面的代码成功执行了第一个测试(使用 java.net.URL),但我在第二个测试(使用 Finagle 客户端)时遇到了困难。我究竟做错了什么?

此外,我一直被拖入命令式的写作风格。如果您能帮助我使 Finagle 更像“scala”,我将不胜感激。

开始:

0 投票
1 回答
1471 浏览

scala - 如何在Scala中将字节数组放入XML

我正在与 .Net Web 服务交互。根据服务描述,服务器需要一个 base64Binary 类型。

这就是我尝试构建 SOAP 数据包的方式:

在上面的代码片段中,request.getContent().array()我从 PhoneGap 开发的移动应用程序中收到了一个 HTTP 请求。

服务器响应 FileContents 无效。有任何想法吗?

0 投票
1 回答
628 浏览

scala - 将 Netty 中的 DynamicChannelBuffer 更改为 String 并返回 ChannelBuffer

我的 Web 服务器是使用 Twitter 的 Finagle 库用 Scala 编写的,而后者又依赖于 Netty。因此,请求内容作为 DynamicChannelBuffer 返回。如果我从终端使用 curl 将图像上传到服务器,如下所示:

然后我可以读取图像,并使用如下所示的 SOAP 数据包将图像转发到后端网络服务器:

在上面的示例中,代码:(Base64.encode(request.getContent())).toString(UTF_8)将请求内容转换为 base 64 编码字符串。

问题是我需要从 PhoneGap 移动应用程序发送的 Multipart Http 请求中读取图像内容。PhoneGap 没有给我选项,只发送图像,并坚持将文件上传作为多部分请求。

为了将多部分请求分开,我使用 toString(UTF_8) 将 request.getContent() 结果更改为字符串,然后通过将 http 多部分消息拆分为单独的块来获取图像数据部分:

这很糟糕,我知道(我稍后会改进),但现在就可以了。imageBody 现在将图像内容作为字符串。

现在,如果我将 imageBody 放回 SOAP 数据包中,我必须使用以下命令再次对其进行编码:

此时图像只是乱码。它的大小看起来不错,但我在字符串转换或编码方面搞砸了。对于第一个示例,我使用的是 Netty 的编码器,但对于第二个示例,我使用的是标准的 java 编码器。原因是 Netty 的编码器只能对 ChannelBuffer 类型的对象进行编码。

我不想说得太大声,但我已经为此苦苦挣扎了一天多。非常感谢这里的任何帮助。