小编Ahm*_*hal的帖子

构建模块化Akka系统

我们正在构建一个基于Akka集群的多组件系统.每个组件都是单独播放!项目和开始它加入Akka集群和组件开始查找演员工作.

问题

这个设置有两个问题:

  1. 编写测试代码非常困难(我们还没有弄清楚),特别是在编写依赖于来自不同组件的多个actor的测试时.我们如何解决依赖关系并在测试代码中创建一个合适的集群(在两个播放应用程序之间!)

  2. 在开发过程中,每个开发人员都必须启动多个Sbt实例来启动系统(不同的播放项目),这会占用整个系统内存,开发变得非常缓慢.

我正在寻找什么

我正在考虑使用集群"roles"属性来进行选择性启动,这意味着只有一个Play项目和组件(模块)和播放项目的启动我将扫描当前的"角色"此实例的属性,并基于此我启动或停止某些组件/ actor.

这将使测试变得更容易但我不确切知道如何在Play中执行此操作,特别是某些组件实际上提供RESTful API(播放控制器)并且我不知道如何在启动时启用/禁用路由和控制器玩.

是否有任何文档或某些内容显示构建模块化分布式系统或任何线索的正确方法?(还有哪些与SBT应如何设置有关?

编辑1:项目位于单个存储库中,并具有单个sbt构建(多个项目)

scala akka playframework playframework-2.0 akka-cluster

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

为什么直接传递函数时会出现“类型不匹配”错误,但它可以与等效的闭包一起使用?

为了让我的代码更简洁,我尝试通过名称直接将闭包传递map()&[&str]. map 需要迭代&&str这是可以理解的,但我的闭包只需要&str.

代码示例:

fn capitalize_first(word: &str) -> String {
    word.chars().next().unwrap().to_uppercase().to_string()
}
fn main() {
    let cap_cap = |word: &&str| -> String {
        word.chars().next().unwrap().to_uppercase().to_string()
        };
    let a = ["we", "are", "testing"];

    let b = &a; // this is where this becomes interesting.
    
    b.iter().map(|&x| capitalize_first(x)); // Works
    b.iter().map(|x| capitalize_first(x));  // Works
    
    b.iter().map(cap_cap); // That's what the compiler expects.
    
    b.iter().map(capitalize_first); // fails to compile!
}
Run Code Online (Sandbox Code Playgroud)

编译器错误:

error[E0631]: type mismatch in function arguments
  --> src/main.rs:17:18 …
Run Code Online (Sandbox Code Playgroud)

rust

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

在settings.py测试问题中的mongoengine connect()

我希望能够根据我在测试模式下启动django来做条件连接().

在我的settings.py中我使用mongoengine connect()方法连接到我的数据库,但问题是如果我运行manage.py test我不想这样做

有没有什么方法可以检查settings.py是否正在从测试中导入,有些标志可能.

如果不是IN_TESTS:connect()

django unit-testing mongoengine

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

使用python或ruby中的scrooge和客户端在scala中编写一个thrift服务器

我想在Scala中编写一个thrift服务实现(使用Scrooge)但不使用Finagle,因为我无法为Finagle服务器编写ruby/python客户端.问题是,使用scrooge服务似乎没有实现"处理器"类.

假设我有这样的节俭定义:

service TestService {
   void testFunction(1: string message);
}
Run Code Online (Sandbox Code Playgroud)

我使用scrooge生成scala文件,当我尝试使用thrift的标准实现来scala运行服务器:

val st = new TServerSocket(9999)
val processor = new TestService.Processor(new TestServiceImpl)
val arg = new TThreadPoolServer.Args(st)
arg.processor(processor) 
val server = new TThreadPoolServer(arg)
server.serve()
Run Code Online (Sandbox Code Playgroud)

生成的TestService对象似乎没有Processor内部类.不知道如何在没有Finagle的情况下做到这一点?或者作为另一种解决方案,如何将一个python或ruby客户端写入finagle thrift服务器?

scala thrift finagle scrooge

4
推荐指数
2
解决办法
4119
查看次数