小编oia*_*kyi的帖子

在类的所有实例方法中隐式使用Groovy Category

我有简单的Groovy类类,它为String实例添加了方法:

final class SampleCategory {

    static String withBraces(String self) {
        "($self)"
    }

}
Run Code Online (Sandbox Code Playgroud)

我想在我的单元测试中使用这个类别(例如).它看起来像这样:

class MyTest {
    @Test
    void shouldDoThis() {
        use (SampleCategory) {
            assert 'this'.withBraces() == '(this)'
        }
    }

    @Test
    void shouldDoThat() {
        use (SampleCategory) {
            assert 'that'.withBraces() == '(that)'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想要实现的是能够指定SampleCategory在每个实例方法的范围内使用类别,MyTest因此我不必use(SampleCategory) { ... }在每个方法中指定.

可能吗?

groovy metaprogramming metaclass categories

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

使用Camel处理长期进程的方法

我正在为基于Camel的小型流程引擎开发PoC.要求是具有执行一组后果步骤的能力,并且每个后果步骤可能需要数小时才能执行.在这种情况下,异步通信风格是明显的选择,但我很难让"过程"部分正确.

向外部系统发送消息时,我需要等待完成.只要可能需要花费很多时间,我就会在发送消息之后停止处理具体步骤,然后在完成消息后开始新的"工作".因此,每个步骤的字面处理将作为从相同JMS队列开始的Camel路由处理,然后基于内容的路由器将根据消息的标题或其内容决定应该执行哪个具体逻辑.

然而,问题是如何避免消息丢失的可能性.例如,在具体步骤中,我正在发送消息并停止处理.外部系统由于某种原因没有处理消息,因此我的系统没有收到任何通知.这意味着进程被卡住,除非某些其他组件将生成消息以将其唤醒.

此外,只要系统可以在任何时间点关闭,我必须构建逻辑以在重新启动后继续处理消息(这意味着某种消息持久性,重新传递和事务管理策略).

所有这些问题加起来因此我想请求经验Camel冠军提供有关如何使用Camel设计此类逻辑的建议.我知道专用的BPM产品或ESB可能会更容易处理这个问题,但我不想让解决方案膨胀.

我们欢迎任何建议,特别是有助于简化解决方案的Camel功能.

messaging business-process-management apache-camel

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

将Camel路由作为Web容器下的REST服务进行曝光

我有Camel路由,我想作为REST Web服务公开.应用程序部署在Web容器(Jetty/Tomcat)上,Spring也用于DI和其他"基础结构"事物.

我看了两个camel-restletcamel-cxfrs组件,虽然它们都提供了作为REST服务公开路由的支持,但是我无法找到如何避免启动单独的服务器.我真正想要的是能够以类似于为Spring-WS入站端点定义路由的方式定义Camel路由,例如

from("restlet://application/user/{id}").to(...)
Run Code Online (Sandbox Code Playgroud)

Web应用程序的配置应该负责接受请求并将它们传输到适当的端点.

不得不承认我很惊讶我无法找到关于这个主题的足够信息,我不认为我的要求非常奇特.

rest spring restlet apache-camel cxfrs

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

用于在不影响REST中的子资源的情况下更新资源的正确HTTP方法

假设我有两个实体 - 项目团队和员工.每个员工都可以成为多个团队的一员,每个团队可以拥有多名员工作为团队成员.我需要提供REST API来操纵团队,员工和他们之间的关系.

我已经确定了3个资源 - 团队,员工和成员(团队和员工之间的关联),这是团队的子资源.我选择将成员作为子资源的原因完全基于此资源的生命周期.每当团队被移除时,成员都会被移除,并且他们在团队之外没有任何意义.

我公开了以下API(相关的):

  • POST /teams 使用姓名,部门ID等创建新的团队记录.
  • POST /teams/{name}/members 创建由名称和特定员工标识的团队之间的关联,因此输入数据包含员工ID

我还需要提供API以在一个请求中更新团队ID和团队的其他属性.看起来像PUT是自然的选择,但PUT的语义非常清楚 - 我必须替换整个资源,在这种情况下,也意味着替换所有成员子资源.

当我只想在保留成员关联的同时更新团队的属性时,我应该使用什么方法(或方法)?请记住,我也希望此请求是幂等的.

api rest web-services

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