首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Spring Cloud Stream聚合器处理器的aggregator.aggregation选项上使用SpEL表达式?

如何在Spring Cloud Stream聚合器处理器的aggregator.aggregation选项上使用SpEL表达式?
EN

Stack Overflow用户
提问于 2017-06-11 12:00:44
回答 1查看 597关注 0票数 0

我有三个独立的消息有效负载:

代码语言:javascript
运行
AI代码解释
复制
"id": "1234"

"type": "space-crite"

"attributes": {
  "ferocity": 10,
  "appetite": 10,
  "cuddliness": 0
}

我想使用Spring Cloud Stream aggregator-app-starter处理器将这三个消息有效负载合并为一个:

代码语言:javascript
运行
AI代码解释
复制
"id": "1234",
"type": "space-crite",
"attributes": {
  "ferocity": 10,
  "appetite": 10,
  "cuddliness": 0
}

通过使用聚合器处理器的aggregator.aggregation选项。文档指出,此属性的有效值是聚合策略的SpEL表达式,并且默认情况下它会生成有效负载的集合。aggregator processor的集成测试之一使用以下表达式:

代码语言:javascript
运行
AI代码解释
复制
#this.?[payload == 'foo'].![payload]

从"foo“和"bar”的单独有效负载生成"foo“的聚合消息。虽然这些测试非常有帮助,但文档中并没有提供很多关于如何在Spring Cloud Stream Starter Apps上下文中使用SpEL表达式的示例,这很遗憾,因为我知道我错过了一个非常强大的功能。

使用如下所示的表达式:

代码语言:javascript
运行
AI代码解释
复制
 #this

因为aggregator.aggregation属性的值创建了一个有效负载,它是GenericMessage对象的集合,每个对象都有自己的有效负载和标头属性。我希望创建一个大小为1的GenericMessage,它有一个包含3个传入消息的有效负载属性。

有没有人能给我举一些例子,告诉我如何在这个处理器选项中使用SpEL表达式?我正在尝试的事情是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2017-06-11 14:15:49

假设有效载荷是字符串...

试试get(0).payload + get(1).payload + get(2).payload

如果需要有效负载之间的换行符,请使用

代码语言:javascript
运行
AI代码解释
复制
T(String).format(get(0).payload + '%n' + get(1).payload + '%n' + get(2).payload)

编辑

不幸的是,聚合的#root对象是一个Collection<Message<?>>而不是一个List<Message<?>>,所以上面的方法不起作用。

您可以用new java.util.ArrayList(#root).get(0).payload等替换每个元素,但这相当难看(而且效率很低,因为您创建了一个新列表来获取每个元素)。我看看能不能想出一个更好的解决方案。

EDIT2

也许这会接近你想要的.

代码语言:javascript
运行
AI代码解释
复制
#root.![payload].toString()

测试:

代码语言:javascript
运行
AI代码解释
复制
MessageGroup g = new SimpleMessageGroup("foo");
g.add(new GenericMessage<>("foo"));
g.add(new GenericMessage<>("bar"));
Collection<Message<?>> messages = g.getMessages();
Expression e = new SpelExpressionParser().parseExpression(
        "#root.![payload].toString()");
System.out.println(e.getValue(messages));

产生

代码语言:javascript
运行
AI代码解释
复制
[foo, bar]

要删除大括号,请执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
#root.![payload].toString().replaceAll('[\[\]]', '')

(只要您的JSON中没有[],示例中就是这种情况)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44483618

复制
相关文章
颜色直方图
算法:颜色直方图是在许多图像检索系统中被广泛采用的颜色特征。它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。颜色直方图特别适于描述那些难以进行自动分割的图像。
裴来凡
2022/05/28
1.5K0
颜色直方图
HSV颜色直方图
package com.imageretrieval.features; import java.awt.Color; import com.imageretrieval.utils.HSV; import com.imageretrieval.utils.Pixel; /** * 该颜色直方图更接近于人类对图片的识别程度 * @author VenyoWang * */ public class HSVColorHistogram { public static void main(St
Venyo
2018/03/15
1.2K0
RBG颜色直方图
package com.imageretrieval.features; import java.awt.Color; import com.imageretrieval.utils.Pixel; public class RGBColorHistogram { public static void main(String[] args) { Pixel[][] matrix = getImagePixel("", 200, 200); Pixel[][] matrix1 = getIma
Venyo
2018/03/15
5650
颜色直方图均衡化
算法:颜色直方图均衡化是在许多图像检索系统中被广泛采用的颜色特征,会出现色彩失真。
裴来凡
2022/05/28
4450
颜色直方图均衡化
OpenCV—python 颜色直方图与直方图均衡化[通俗易懂]
cv2.calcHist(image,channels,mask,histSize,ranges) -> list
全栈程序员站长
2022/09/27
3.4K0
Echarts折线图的x和y轴坐标颜色修改
继续对Echarts的属性进行探索,关于如何修改Echarts的x和y轴坐标颜色的问题,继续看,主要修改代码的地方:
王小婷
2019/08/20
6.9K0
环形颜色分布直方图
package com.imageretrieval.features; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.imageretrieval.utils.Coordinate; import com.imageretrieval.utils.ImageUtil; import com.imageretrieval.utils
Venyo
2018/03/15
9700
【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )
颜色模式 : 将 某种颜色 表现为 数字形式 的模型 , 即记录图像颜色的方式 ; 下面是 所有的 颜色模式 :
韩曙亮
2023/03/27
1.4K0
【MATLAB】进阶绘图 ( colormap 颜色图矩阵分析 | 自定义 colormap 颜色图 | 生成 64 x 3 的 colormap 颜色图矩阵 )
imagesc 函数参考文档 : https://ww2.mathworks.cn/help/matlab/ref/imagesc.html
韩曙亮
2023/03/29
3.3K0
【MATLAB】进阶绘图 ( colormap 颜色图矩阵分析 | 自定义 colormap 颜色图 | 生成 64 x 3 的 colormap 颜色图矩阵 )
50种常见Matplotlib科研论文绘图合集!赶紧收藏~~
内容来源:和鲸社区 有效图表的重要特征: 在不歪曲事实的情况下传达正确和必要的信息。 设计简单,您不必太费力就能理解它。 从审美角度支持信息而不是掩盖信息。 信息没有超负荷。 01 关联 (Correlation) 关联图表用于可视化2个或更多变量之间的关系。也就是说,一个变量如何相对于另一个变化。 1、散点图(Scatter plot) 散点图是用于研究两个变量之间关系的经典的和基本的图表。如果数据中有多个组,则可能需要以不同颜色可视化每个组。在 matplotlib 中,您可以使用 plt.scatte
张俊红
2022/06/07
4.3K0
50种常见Matplotlib科研论文绘图合集!赶紧收藏~~
PCL中3D特征描述子Shot详解
上周点云公众号开始分享群友们的反馈分享,由博主分配任务,半个月甚至一个月参与学习小伙伴的反馈给群主,并在微信交流群中进行学术交流,加强大家的阅读文献能力,并提高公众号的分享效果。已经有一些开始陆续反馈中,在此期待之前参与任务的小伙伴赶紧将你们的分享发送给群主吧,同时也希望更多的同学能参与进来,参与我们下一轮学习!
点云PCL博主
2019/07/30
5K1
PCL中3D特征描述子Shot详解
[python opencv 计算机视觉零基础到实战] 十三 直方图颜色提鲜
图像直方图均衡化主要是对图像中的少数灰度进行压缩,扩展该值的范围,以致于让这个图的对比度调高,使当前图像变得更加清晰。在一张图片中,若整体偏亮,直方图的值应该是在偏右侧,就可能会产生过渡曝光;若一张图像的直方图整体偏暗就会导致直方图呈现数值整体偏左,可能会造成过暗不清晰,所以一张图是否看起来舒服应该在直方图中的布局显示会相对于均衡。
1_bit
2022/01/06
5380
[python opencv 计算机视觉零基础到实战] 十三 直方图颜色提鲜
Dygraphs 中调整 x 轴 label 展示
在前不久发表的文章 Dygraphs 中 x 轴等间距实现 中,我们介绍了如何在 x 轴等间距地实现图表划线。
Jimmy_is_jimmy
2022/09/26
8600
Dygraphs 中调整 x 轴 label 展示
Dygraphs 中 x 轴等间距实现
本文,我们来探讨下,如何在 Dygraphs 中的 X 轴上等间距的展示每一条竖线,间隔是 1s,如上图。
Jimmy_is_jimmy
2022/09/21
7670
Dygraphs 中 x 轴等间距实现
x轴换行
//格式化图表横坐标文字 let textFormatter = function(e) { let arr = e.split(",");/// 将字符串转数组 let str = arr[0] + "\n" + arr[1]; return str; };
用户4344670
2020/06/19
1.9K0
x轴换行
使用直方图处理进行颜色校正
像往常一样,我们导入库,如numpy和matplotlib。此外,我们还从skimage 和scipy.stats库中导入特定函数。
小白学视觉
2022/02/12
5510
使用直方图处理进行颜色校正
as3中颜色矩阵滤镜ColorMatrixFilter的使用
上面的例子,也是游戏开发中比较常用的功能,与“怪物”战斗后,将其“灰”掉。这其中最重要的还是对AS3颜色矩阵滤镜(ColorMatrixFilter)的使用。
meteoric
2018/11/16
1.4K0
50 个数据可视化图表
本文总结了在数据分析和可视化中最有用的 50 个 Matplotlib 图表。这些图表列表允许您使用 python 的 matplotlib 和 seaborn 库选择要显示的可视化对象。
二哥聊运营工具
2021/12/17
4K0
50 个数据可视化图表
总结了50个最有价值的数据可视化图表
本文总结了在数据分析和可视化中最有用的 50 个 Matplotlib 图表。这些图表列表可以使用 python 的 matplotlib 和 seaborn 库选择要显示的可视化对象。
数据STUDIO
2022/02/18
3.3K0
总结了50个最有价值的数据可视化图表
50个最有价值的数据可视化图表(推荐收藏)
本文总结了在数据分析和可视化中最有用的 50 个 Matplotlib 图表。这些图表列表允许您使用 python 的 matplotlib 和 seaborn 库选择要显示的可视化对象。
Python数据科学
2019/07/19
4.6K0
50个最有价值的数据可视化图表(推荐收藏)

相似问题

矩阵库中直方图的X轴无序

10

全息直方图上x轴的变化

27

R直方图变化X轴增量值

10

基于X轴标题的图中条形颜色的变化

10

直方图矩阵库中颜色的含义

11
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文