我很难理解这个概念。
我正在尝试实现一个端点,该端点在tcp端口上侦听专有格式的传入消息,然后转换消息并让camel接管转发和路由。
我是否正确理解制作人负责将消息发送到Endpoint
并且Consumer
从该端点接收消息?
在研究接口时,我无法弄清楚这些对象之间的消息流,特别是在消费者部分。 Consumer
仅定义start()
和stop()
方法......
在骨架实现上设置测试时,Camel
在端点上调用createProducer()
,在生成器对象上调用process()
。之后它返回,与消费者或与之相关的处理器进行任何操作。
有人能指出我正确的方向吗?
答案 0 :(得分:45)
重要的是要记住,由Endpoint
(即终点工厂)创建的Component
可以位于Camel Route
的 端。如果将组件放在路径的开头,则必须实现组件的Consumer
部分。这样做的工作就是将特定的输入/请求(如HTTP请求)转换为通用的 - Camel Exchange
- 可以沿 Route 传输。如果您将组件放在路由的末尾,那么您必须具有Producer
的实现。 Producer 执行从路由结束处获取 Exchange 并将其转换为特定内容(如JMS消息)的工作。 / p>
我发现Fuse ESB文档(通常)比Apache Camel website更好。来自Fuse ESB Component page:
消费者终端消耗请求。它们总是出现在开头 一个路由,他们封装负责接收的代码 传入请求并发送传出回复。
生产者端点会产生请求。它们总是出现在最后 一条路线,它们封装了负责调度的代码 传出请求并接收传入的回复。
答案 1 :(得分:18)
我终于通过查看Stream组件找到了它。
事实证明,我错误地认为端点是一切必须要去的东西。
简单的答案是消费者从外部系统接收数据(在我的情况下监听服务器套接字),生产者将数据发送到外部系统。
由于我的端点是只读的(它不会被用作Camel路由进程的最终目的地),我真的不需要生成器(如果系统由于配置错误而仍然尝试执行它,它应该抛出RuntimeException )。一个合适的例子是camel-atom端点 - 你可以读取feed但是(从1.6.0开始)你不能发布一个。
同样,您只需要一个只写端点的生产者,该端点不接收来自外部系统的数据(例如日志记录)。
答案 2 :(得分:6)
生产者扩展处理器,这意味着它也有一个处理方法。
查看Camel in Action一书中的免费第1章,其中详细介绍了Camel概念。 http://www.manning.com/ibsen/
本教程也非常出色,因为它以稳定的步伐引入了这些概念 http://camel.apache.org/tutorial-example-reportincident.html