Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring integration 组超时是如何工作的?_Spring Integration - Fatal编程技术网

Spring integration 组超时是如何工作的?

Spring integration 组超时是如何工作的?,spring-integration,Spring Integration,聚合器是一个被动组件,只有在新消息到达时才会触发释放逻辑。那么组超时是如何工作的呢 它是否是一个类似于收割者的计划任务,持续监视聚合器的状态。这是否也意味着它会重复计算组超时表达式以确定组超时的值,还是在开始时计算一次?我假设,因为有一些基于负载大小的示例,这意味着它必须重复计算组超时表达式,但如果是这种情况,那么这种情况发生的频率是多少?评估频率是否可以控制/修改。同样,如果聚合器是POJO,那么这个组超时功能是否已经足够灵活,能够从POJO方法指定超时 我注意到的另一件有趣的事情是,对于我的

聚合器是一个被动组件,只有在新消息到达时才会触发释放逻辑。那么组超时是如何工作的呢

它是否是一个类似于收割者的计划任务,持续监视聚合器的状态。这是否也意味着它会重复计算组超时表达式以确定组超时的值,还是在开始时计算一次?我假设,因为有一些基于负载大小的示例,这意味着它必须重复计算组超时表达式,但如果是这种情况,那么这种情况发生的频率是多少?评估频率是否可以控制/修改。同样,如果聚合器是POJO,那么这个组超时功能是否已经足够灵活,能够从POJO方法指定超时

我注意到的另一件有趣的事情是,对于我的组超时表达式,我尝试了一个拼写表达式,并传递了负载或头,但这些显然在上下文中不可用。此组超时表达式中的上下文似乎指向没有有效负载或标头属性的
SimpleMessageGroup
。那么,如何访问组超时表达式的spel表达式中的有效负载或头呢

事实上,在我的例子中,我想要实际的消息(有效负载的包装器),因为我的方法签名期望传递给它的是实际的SI消息,而不是有效负载

  • 在SpringIntegration4.0之前,聚合器是一个被动组件,您必须配置一个
    MessageGroupStoreReaper
    使组过期

  • 在4.0中添加了
    组超时*
    属性;当新消息到达时,将安排任务超时组。如果下一条消息在超时之前到达,则任务将被取消,新消息将添加到组中,如果未发布,则计划新任务。每次重新计算表达式时(默认值)

  • 是,表达式计算的根对象是消息组

    您需要哪些“有效负载和标题”?组中可能有多封邮件。使用
    one.payload
    one.headers['foo']
    (这些表达式使用查看组中第一条消息的
    group.getOne()
    )可以轻松访问组中的第一条消息


    如果需要访问不同的消息,则需要编写一些代码来迭代组中的消息。我们目前没有,但可以将新到达的消息作为变量
    #newMessage
    或类似变量提供;请随意打开一个“改进”。

    我指的有效负载是
    message。好吧,在发布组之前,我们不会创建有效负载集合。组超时只能访问传入消息组。