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

是否可以将不同的url参数传递给骆驼组播EIP中的各个endpoint?

寇鸿
2023-03-14

这是我正在尝试解决的用例——这是我之前的线程Apache camel的扩展,用于聚合多个REST服务响应

我使用了具有自定义聚合策略的多播组件将传入请求分叉为子请求并聚合它们的响应。在这之前一切都很好。

现在,对于其中一个用例,我希望传入的URL参数有选择地传递给一些子服务。前任:

传入请求-http://[host]/my service/scan?foo=a

我的多播组件如下所示-

<multicast strategyRef="myAggregationStrategy" parallelProcessing="true">
     <to REST_service_1"/>
     <to REST_service_2"/>
</multicast>

我想只传递foo=a到service_1endpoint和bar=b

现在,通过多播,同一组请求查询参数被传递到服务_1和服务_2。i、 e.服务_1和服务_2都将收到foo=a

我正在考虑的选项(在高级别上)
-为了打破传入的url参数,并将它们作为标题粘贴,然后我可以有选择地使用这些标题为每个“to service_call”html" target="_blank">构建CamelHttpQuery标题

-但最终,Exchange将在所有多播endpoint之间共享,那么这种方法是否有效?

或者我应该退后一步,为这个特定的用例考虑不同的EIP?

-或者我在往错误的方向想:)

感谢输入!谢谢!

共有1个答案

张星洲
2023-03-14

您可以使用收件人列表EIP,然后您可以为REST服务调用两个不同的URI,但发送与多播相同的消息。

收件人列表还支持并行和聚合。

http://camel.apache.org/recipient-list.html

要计算rest服务的2个URI,可以使用JavaBean并执行方法调用EXPRESSON,只需返回一个字符串,其中两个endpoint用逗号分隔(或字符串[],或列表等)

<recipientList strategyRef="myAggregationStrategy" parallelProcessing="true">
     <method ref="myBean" method="whereToSend"/>
</recipientList>
 类似资料:
  • 问题内容: 与在或中使用的方式类似: 问题答案: 是。 如果你不理会关键字参数,这很简单并且可以工作: 如你所见,Python将为你提供一个包含所有参数的元组。 对于关键字参数,你需要将其作为单独的实际参数接受,如的所示。

  • 问题内容: 我想做这样的事情: 但是我得到这个错误 对成员’init()’的不明确引用 我知道我可以写 但是我想知道是否还有另一种方式。 问题答案: 问题在于不存在 仅 具有参数的初始化程序。 __ 目前只存在: 尽管该参数具有默认值,但是编译器仅在初始化程序的调用位置为您“填充”该默认值。 获取对函数本身的引用时,不会部分应用默认参数值,编译器也不会为默认参数值的所有可能组合生成额外的重载。后者

  • 问题内容: 使用新的JPA 2.1 存储过程调用,是否可以通过任何方法传递null参数? 这是一个示例用法: 此工程时,所有的参数,但是,当是它会失败,并从(PostgreSQL的)JDBC驱动程序错误。 我也考虑过使用自己的类来传递参数,例如: 失败的原因是: 我猜是因为它需要一种可以映射到SQL类型的类型。 有没有办法传递空参数? 问题答案: 是的,使用JPA StoredProcedureQ

  • 问题内容: 我有一个带有一些componentDidMount逻辑的React组件: 是否可以通过props传递此组件,以便componentDidMount()中的所有内容都被执行,以某种方式伪造以便截取屏幕截图?遵循以下原则: 我知道我可以使用,但是我有一些复杂的登录逻辑,我想使用这样的快捷方式来避免,而是将所有需要的道具直接传递给组件? 问题答案: 在这里回答了这个问题。让我们在这里尝试相同

  • 我正在将CSV文件输入集成到一个更大的系统中,我想对其进行设置,以便将CSV中未正确解析的各行(由)发送到医院队列,并将所有其他工作行转换为一个对象并聚合到一个列表中。但是,我很难将

  • 正如标题所说:是否可以在路由(-builder)的流程功能中启动一个驼峰endpoint?我刚接触apache camel,但已经做了一些项目。 情况如下:我正在使用apache camel和西门子Teamcenter RAC执行一个SavedQuery。结果是一个ModelObject[]和找到的元素。 对于这些元素中的每一个,我现在需要启动另一个endpoint,执行第二个搜索查询。我想到了这