在Camel路由中,我需要用HTTPGET请求连接到一个服务,并保持连接打开以接收事件。Camel连接从不接收来自服务的事件。
我可以使用Postman成功执行此操作:successful Postman connection,所以我知道服务正在按预期运行。
My Camel Route以GET方式调用服务端点,并在此调用的头部使用Postman中使用的相同参数:
.setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http.HttpMethods.GET))
.setHeader("Connection", simple("keep-alive"))
.setHeader("Accept", simple("text/event-stream"))
.setHeader("Accept-Encoding", simple("gzip, deflate, br"))
.setHeader("Postman-Token", simple("6ec7dfb3-6a4e-46ad-9f29-329a854f2649"))
.to("http://localhost:5000/events")
我知道服务接收到这个调用并创建事件消息发送回去,但是Camel路由从来没有接收到这些消息。此外,与Camel连接同时建立的Postman连接也会接收事件消息。
Q)如何正确配置Camel路由接收服务事件?
1条答案
按热度按时间l7wslrjt1#
OkHttpClient可与RealEventSource和自定义EventSourceClient配合使用,接收服务端事件。
步骤:
1.创建一个自定义的 * EventSource * 类,它扩展了 * EventSource *,并具有处理来自 RealEventSource 的事件的方法。
1.创建一个示例化您的 * Client* 类
1.为访问您的 Service 所需的值创建 * Token * 类
1.在camel Route类中示例化 Client
.process(new Processor(){ public void process(Exchange exchange)throws Exception { myClient.Connect();})的情况
参考:OkHttpClientrealeventsource