当前位置: 首页 > 知识库问答 >
问题:

Spring集成使用Rest调用丰富/转换消息

严景焕
2023-03-14

在Spring Integration中,我有如下消息:

{
  "name":"House",
  "attributeIds": [1,3,5]
}

我需要使用一些Rest服务来丰富/转换这个消息,这将为我提供属性值。

例如http://restservice.com/attributes?id=1,3,5会回答我

{"attributes": [
  {"id": 1, "value":"Waterproof"},
  {"id": 3, "value":"SoundProof"},
  {"id": 5, "value":"Concrete"}
]}

最后一个对象应如下所示:

{
  "name":"House",
  "attributes": [
    {"id": 1, "value":"Waterproof"},
    {"id": 3, "value":"SoundProof"},
    {"id": 5, "value":"Concrete"}
  ]
}

如何实现这一点?

应该是这样吗?https://www.youtube.com/watch?time_continue=273

入站适配器-

共有1个答案

贝阳泽
2023-03-14

这确实是Content Enrich的典型任务。

因此,您需要将传入的JSON反序列化为一个普通的映射。使用<code>请求有效载荷表达式=“payload.attributeIds”作为子流请求的有效载荷。

< code>request-channel上的订阅者可以只是简单的Spring Integration HTTP出站网关来调用REST服务并获得< code>attributes消息。该网关可以不带< code >输出通道通过< code>replyChannel头将其结果返回到< code >内容丰富器中。

当回复消息到达< code >内容丰富器时,一个简单的< code >

之后,您可以从该映射中删除属性 Ids 键,并在需要时将其序列化回 JSON

更新

下面是一个使用Java DSL和Spring Boot的例子:https://github . com/artembilan/sandbox/tree/master/spring-integration-enricher

 类似资料:
  • 我有一个JMS侦听器,它正在从另一个应用程序接收字节消息。当前应用程序正在使用Spring JMS。我想在这里介绍spring集成。因此,我添加了以下示例代码来侦听消息。 然后我得到如下类强制转换异常: 我得到了一个ByteMessage,但我没有找到一个关于如何提取带有字节数组有效负载的ByteMessage的好例子。我是Spring集成世界的新手。

  • 我正在构建一个将订单路由到订单管理系统的示例实现。路由的入站是具有两个标识符的交换,一个用于客户 ID,另一个用于目录项 ID。然后,我将入站交换的主体转换为我的订单域对象。然后,我的目标是调用内容丰富器模式,一次用于聚合来自客户的数据,一次用于聚合来自目录项的数据。 我的路线是: 我得到的例外是: 注意我使用的是最新的camel,2.17.1。我的问题是,如果我得到一个主体是JSON格式的交换,

  • 如果其他人已经解决了这个问题,那就只是寻找一些信息。我想同时使用Spring集成和Spring批处理。这两个都是SpringBoot应用程序,理想情况下,我希望将它们和各自的配置分开,这样它们都是自己的可执行jar。我在自己的进程空间中执行它们时遇到问题,我相信我希望,除非有人能说服我,否则,每个程序都能像自己的Spring Boot应用程序一样运行,并用自己的配置文件和属性初始化自己。不过,我遇

  • 要表现色彩里的浓烈、富足感可藉由组合一个有力的色彩和它暗下来的补色。例如,深白兰地酒红色就是在红色中加了黑色,就像产自法国葡萄园里陈年纯美的葡萄酒,象征财富。白兰地酒红色和深森林绿如果和金色一起使用可表现富裕。这些深色、华丽的色彩用在各式各样的织料上,如皮革和波纹皱丝等等,可创造出戏剧性、难以忘怀的效果。这些色彩会给人一种财富和地位的感觉。 补色色彩组合 原色色彩组合 单色色彩组合 49 3 49

  • 我将下面的数据发布到kafka并通过Spring集成通道接收并转换为Log对象,我如何使用Spring集成转换器将下面的数据转换为Log对象?感谢这里的任何帮助 '日志(客户端键=字符串,有效负载=字符串)” 这是通道适配器代码 当我尝试使用下面的方法在服务激活器中进行转换时 它的失败 com.fasterxml.jackson.core.JsonParseException: 无法识别的令牌“日

  • 当RabbitMq消息到达队列时,我目前正在使用IntegrationFlow来触发作业执行。IntegrationFlow的AmqpInFronChannelAdapter和作业的第一步的ItemReader都配置为从同一队列中读取消息。 我遇到的问题是IntegrationFlow的AmqpInboundChannelAdapter读取RabbitMQ消息,然后ItemReader再也找不到该