如何使用Camel

时间:2018-06-07 17:55:37

标签: json apache-camel integration enterprise-integration

目前,我正在开发一个集成场景,我必须使用3个服务来返回我需要关联的相同数量的单个响应,然后从这个关联中生成一个新的json。

第一个服务返回一个json,如下所示:

Attendants:
[
  {
    "id": 10,
    "section": "A"
  },
  {
    "id": 11,
    "section": "B"
  }
]

第二个回应是:

Seats:
[
  {
    "id": 10,
    "seat": 122,
    "type": "VIP"
  },
  {
    "id": 10,
    "seat": 123,
    "type": "VIP"
  },
  {
    "id": 10,
    "seat": 124,
    "type": "VIP"
  },
  {
    "id": 11,
    "seat": 200,
    "type": "Standard"
  }
]

最后,这是第三个回复:

Games:
[
  {
    "id": 10,
    "game": 1,
    "type": "Regular"
  },
  {
    "id": 10,
    "game": 2,
    "type": "Regular"
  },
  {
    "id": 11,
    "game": 1,
    "type": "Playoff"
  },
  {
    "id": 11,
    "game": 2,
    "type": "Playoff"
  }
]

我期望的结果是:

[
  {
    "id": 10,
    "section": "A",
    "seats": [
      {
        "seat": 122,
        "type": "VIP" 
      },
      {
        "seat": 123,
        "type": "VIP"
      },
      {
        "seat": 124,
        "type": "VIP"
      }
    ],
    "games": [
      {
        "game": 1,
        "type": "Regular"
      },
      {
        "game": 2,
        "type": "Regular"
      }
    ]
  },
  {
    "id": 11,
    "section": "B",
    "seats": [
      {
        "seat": 200,
        "type": "Standard"
      }
    ],
    "games": [
      {
        "game": 1,
        "type": "Playoff"
      },
      {
        "game": 2,
        "type": "Playoff"
      }
    ]
  }
]

到目前为止,我有3条单独的路线来使用这些服务而且我已经获得了没有问题的回复,问题是:

1)一旦我分裂了第一个响应,这是从其他两个响应中丰富每个元素的最佳方法吗?我理解如果将一个unmarshal()添加到POJO列表中,我可以遍历列表并以编程方式关联元素,但是,使用Camel的EIP实现有更好的方法吗?

我一直在阅读关于骆驼的分裂,丰富和聚合的内容,但我不清楚如何结合这些EIP来实现我的json目标。

非常感谢!

0 个答案:

没有答案