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

使用Camel http4向数量不断变化的endpoint发送消息

陈野
2023-03-14

我已经创建了下面这段代码,我想使用骆驼HTTP4将相同的JSON主体发送到多个endpoint,而不仅仅是一个endpoint。endpoint的数量可能会随着时间的推移而变化。

                    .choice()
                        .when(simple("${body} != null"))
                              .setHeader(Exchange.HTTP_METHOD, constant("POST"))
                              .setHeader(Exchange.HTTP_URI, simple(url))
                              .setProperty("ObjectBody", body())
                              .to("http4://someEndpoint?throwExceptionOnFailure=true&httpClient.socketTimeout=300000")
                        .otherwise()
                            .log(LoggingLevel.ERROR, "Incoming request has empty body")
                        .endChoice()
                    .end()

我试图找出在这种情况下配置和使用多个endpoint的最佳方法。

我已经查看了多播EIP,但看起来我必须事先知道endpoint的数量。

非常感谢您的任何想法!

共有1个答案

楮星鹏
2023-03-14

你看了RouteBox吗?

对驼峰路由盒endpoint的需求路由盒组件旨在简化复杂环境中的集成,该环境需要大量路由,涉及大量需要以不同方式集成的endpoint技术

在这样的环境中,通常需要通过在驼峰路线之间创建一种分层感来设计集成解决方案,从而有效地将它们组织到

粗粒度或更高级别的路由——作为Routeboxendpoint公开的内部或较低级别路由的聚合集合,代表一个集成焦点区域。例如

https://camel.apache.org/components/2.x/routebox-component.html

其用法:

from ("direct:sendToMapBasedRoutebox")
    .setHeader("ROUTE_DISPATCH_KEY", constant("addToCatalog"))
    .to("routebox:multipleRoutes?innerRegistry=#registry&routeBuilders=#routes&dispatchMap=#map")
    .to("log:Routes operation performed?showAll=true");

然后理论上,这应该将请求分散到RouteBox封装的所有(路由)上。

 类似资料:
  • 我试图使用Azure IoT中心和REST api(不使用Azure IoT中心python SDK)从云向我的设备发送消息。 我可以通过uri

  • null 谁能给我一个向RabbitMQ发送消息的标准程序的例子。我正在使用Spring Boot,也可以使用它的特性。

  • 我有一个关于Spring WebFlux的问题。我想创建一个使用内容类型text/event-stream的反应endpoint。不是生产而是消费。我们的一个服务需要向另一个服务发送大量的小对象,我们认为这样流式传输可能是一个很好的解决方案。 流量是每1秒产生一个值的流。我遇到的问题是,WebClient完全读取发布服务器,然后将数据作为一个整体发送,而不是一个接一个地流式传输。我能用这个客户机或

  • 我正在将xml从seda队列发送到JMS队列。我在exchange的标头中有一些metadeta,我想将其传递给JMS队列。 我是否必须从exchange对象的标头显式获取元数据,然后将其设置为xml?或者,如果Camel可以在开箱即用的情况下完成这项工作,那么还有其他方法吗?

  • 我正在尝试设置谷歌的push PubSub到我的服务器来接收Gmail推送通知。 我正在获取以下作用域: 它可以创建一个主题,订阅该主题,授予访问该主题的Gmail API的权限,但当我试图查看收件箱时,它失败了。我遵循了以下指南:https://developers.google.com/gmail/api/guides/push,这是我用来执行上述步骤的代码:

  • 我想使用firebase云消息将通知从我的应用程序发送到另一个应用程序。所以我使用这个方法retrieveFCMToken(forSenderID:senderid)来处理这个过程。我将以下代码添加到我的应用程序委托中: 这是我的应用程序代理: 我遵循这个场景:我有两个应用程序,分别是“A”和“B”。我想将通知从应用程序“A”发送到应用程序“B”。因此,我将应用程序A的发件人id放入应用程序B代理