小编mdm*_*mdm的帖子

端到端的反应流RESTful服务(也称为HTTP上的背压)

我一直试图在网上澄清这个问题一段时间没有成功,所以我会试着在这里问一下.

我想找到一些资源或示例,它展示了我如何构建端到端完全反压的REST服务+客户端.我的意思是,我希望看到,给定一个实现Reactive Streams的REST客户端(无论是在Akka,JS还是其他),我将拥有(并能够"可视化")整个处理过程中的背压.构建REST服务器,例如使用Akka-Http.

为了清楚起见,我正在寻找类似下面的话题(但我找不到幻灯片或视频来确认):http://oredev.org/2014/sessions/reactive-streaming-restful-applications-with-akka -http

我对大多数示例的怀疑是关于这样一个事实:我可以找到很多案例,其中REST服务(服务器)使用Akka Http和Akka流作为后端,但我不确定背压是通过HTTP"通信"的和REST,如果客户端正在实现Reactive Streams.在这种情况下,我是否可以通过TCP/HTTP或仅仅2个独立的流桥接一个"流"?这是我的主要怀疑和困惑.

希望我足够清楚,有人能够对此事有所了解.
无论如何,谢谢!

rest scala akka reactive-streams akka-stream

4
推荐指数
1
解决办法
1784
查看次数

在Spray示例代码中暗示超出范围:这里发生了什么?

我已将Spray Client的示例代码复制到我自己的项目中,以便轻松使用它.我使用IntelliJ 13.

这是我的代码:

package mypackage

import scala.util.Success
import scala.concurrent.duration._
import akka.actor.ActorSystem
import akka.pattern.ask
import akka.event.Logging
import akka.io.IO
import spray.json.{JsonFormat, DefaultJsonProtocol}
import spray.can.Http
import spray.util._
import spray.client.pipelining._
import scala.util.Success
import scala.util.Failure

case class Elevation(location: Location, elevation: Double)
case class Location(lat: Double, lng: Double)
case class GoogleApiResult[T](status: String, results: List[T])

object ElevationJsonProtocol extends DefaultJsonProtocol {
  implicit val locationFormat = jsonFormat2(Location)
  implicit val elevationFormat = jsonFormat2(Elevation)
  implicit def googleApiResultFormat[T :JsonFormat] = jsonFormat2(GoogleApiResult.apply[T])
}

object SprayExample extends App {
  // we need an …
Run Code Online (Sandbox Code Playgroud)

scala intellij-idea spray

2
推荐指数
1
解决办法
1947
查看次数

KTable 应该发出的事件

我正在尝试测试一个拓扑,该拓扑作为最后一个节点,具有 KTable。我的测试使用成熟的 Kafka 集群(通过 confluence 的 Docker 镜像),所以我没有使用TopologyTestDriver.

我的拓扑具有键值类型的输入String -> CustomerString -> CustomerMapped. Serdes、模式以及与模式注册表的集成都按预期工作。

我正在使用 Scala、Kafka 2.2.0、Confluence Platform 5.2.1 和kafka-streams-scala. 我的拓扑尽可能简化,如下所示:

val otherBuilder = new StreamsBuilder()

otherBuilder
     .table[String,Customer](source)
     .mapValues(c => CustomerMapped(c.surname, c.age))
     .toStream.to(target)   
Run Code Online (Sandbox Code Playgroud)

(所有隐式 serdes、ProducedConsumed等都是默认的,并且可以正确找到)

我的测试包括同步且不间断地向主题发送一些记录 ( data) ,然后从主题读回,我将结果与:sourcetargetexpected

val data: Seq[(String, Customer)] = Vector(
   "key1" -> Customer(0, "Obsolete", "To be overridden", 0),
   "key1" -> Customer(0, "Obsolete2", "To be overridden2", 0),
   "key1" …
Run Code Online (Sandbox Code Playgroud)

scala apache-kafka apache-kafka-streams

2
推荐指数
1
解决办法
570
查看次数

JList修改后的JDialog重绘

我有一个由JFrame frm创建的JDialog dlg,它包含一个JList列表.当我修改列表(通过ListModel)时,列表本身被重新绘制,但不是JDialog.这意味着,如果我删除一行,列表将保留一个空行,而如果我添加一行,则不会显示此新行(因为对话框中没有空格),直到我手动强制重新绘制dlg(双击frm).

根据这篇文章中的建议: 如何在Swing中重新绘制JDialog?

并在这篇文章中:点击按钮强制重绘

我试图从我的控制器类(这是列表更新的位置)调用,如下所示:

SwingUtilities.getWindowAncestor(dlg).repaint();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我也尝试过:

dlg.repaint();
Run Code Online (Sandbox Code Playgroud)

没有运气......

任何线索?非常感谢你.

编辑:我的类的组织如下:一个控制器类,包含对主JFrame的引用,frm.我还将JDialog扩展为MyDialog,其中包含一个JList.当检测到双击frm时,我会显示MyDialog的实例(或创建,如果它是我第一次显示它),并且JList填充了传递给DefaultListModel的数据.绘制了MyDialog,使列表只有它所需的空间.现在,当控制器检测到特定事件时,我得到特定的MyDialog,从JList获取ListModel并更新它.这里JList确实更新了,但Dialog保持不变.我使用这样的代码:

MyDialog dlg = group.getDlg();
if(dlg != null){
    DefaultListModel listModel = ((DefaultListModel) dlg.getMyJList().getModel());
    listModel.addElement(idStock);
    SwingUtilities.getWindowAncestor(dlg).repaint();
}
Run Code Online (Sandbox Code Playgroud)

这不会重绘dlg.我也尝试过:

SwingUtilities.getWindowAncestor(dlg.getMyJList()).repaint();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我检查了调试器实际执行的行.

我没有更多的代码可以显示,真的......

java swing jdialog

1
推荐指数
1
解决办法
1669
查看次数