如何使用 Apache Camel 使用分块 HTTP 流?

How to consume a Chunked HTTP Stream with Apache Camel?

我在使用 Camel 使用分块 HTTP RSVP 流时遇到问题。

流是here and you can find more information about it at the end of this page

我创建了一条简单的路线:

from("http4://stream.meetup.com/2/rsvps").log(org.apache.camel.LoggingLevel.INFO, "MeetupElasticSearch.Log", "JSON RSVP ${body}")

但是没有任何消息被消耗。我之前尝试添加一个骆驼计时器,因为我不确定您是否可以直接在 from 中使用 http4 组件,但结果是一样的。

你能帮帮我吗?

您不能在 from() 指令中使用 http4 组件。

但是,有几种方法可以调用 URL 并检索结果:

一个是创建一个计时器并从 to() 中调用 http4 组件,如下所示:

from("quartz2://HttpPoll/myTimer?trigger.repeatCount=0")
    .to("http4://stream.meetup.com/2/rsvps")
    .log("Body is: ${body}")
    .to(mockDestination);

另一种方法是使用 content enricher 模式,例如,如果您想将结果聚合到另一个结构中。

另请注意,如果您的 URL 是动态的,则必须使用 recipientList() 而不是 to()

更新:

从 Internet 使用流的另一种方法是使用 http4 之外的另一个组件:camel-stream

这个你可以在from()指令中声明它:

 // Read stream from the given URL... an publish in a queue
    from("stream:url?url=http://stream.meetup.com/2/rsvps&scanStream=true&retry=true").
      to("seda:processingQueue");

    // Read records from the processing queue
    // and do something with them.
    from("seda:processingQueue").to("log:out")

您可以在 this site 中查看更多示例。