如何使用 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 中查看更多示例。
我在使用 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 中查看更多示例。