首页 文章

Apache Camel 生产环境 者和消费者

提问于
浏览
28

我很难绕过这个概念 .

我正在尝试实现一个 endpoints ,该 endpoints 在tcp端口上侦听专有格式的传入消息,然后转换消息并让camel接管转发和路由 .

我是否正确理解Producer负责将消息发送到 Endpoint 并且 Consumer 从该 endpoints 接收它们?

在研究接口时,我无法弄清楚这些对象之间的消息流,特别是在消费者部分 . Consumer 仅定义了 start()stop() 方法......

在骨架实现上设置测试时, Camel 在 endpoints 上调用 createProducer() ,在生成器对象上调用 process() . 之后它返回,与消费者或与之相关的处理器进行任何操作 .

有人能指出我正确的方向吗?

3 回答

  • 44

    重要的是要记住由 Component (即 endpoints 工厂)创建的 Endpoint 可以位于Camel Route 的任一端 . 如果将Component放在路径的开头,那么必须有Component的 Consumer 部分的实现 . 这样做的工作就是将特定的输入/请求(如HTTP请求)转换为可以沿着路径传播的通用 - 一个Camel Exchange . 如果您将Component放在路径的末尾,那么您必须具有 Producer 的实现 . 生产环境 者完成从路径末端获取Exchange并将其转换为特定内容(如JMS消息)的工作 .

    我发现Fuse ESB文档比Apache Camel website更好(一般) . 来自Fuse ESB Component page

    消费者 endpoints 消耗请求 . 它们总是出现在路由的开头,它们封装了负责接收传入请求和分派传出回复的代码 . 生产环境 者 endpoints 产生请求 . 它们总是出现在路径的末尾,它们封装了负责调度传出请求和接收传入回复的代码 .


    enter image description here

  • 18

    我终于通过查看Stream组件找到了它 .

    事实证明,我犯了一个错误,认为 endpoints 是一切中心,一切都必须去 .

    简单的答案是消费者从外部系统接收数据(在我的情况下监听服务器套接字), 生产环境 者将数据发送到外部系统 .

    由于我的 endpoints 是只读的(它不会被用作Camel路由进程的最终目的地),所以我真的不需要生成器(如果系统由于配置错误而仍然尝试执行它,它应该抛出RuntimeException) . 一个合适的例子是camel-atom endpoints - 你可以读取feed但是(从1.6.0开始)你不能发布一个 .

    同样,您只需要一个只写 endpoints 的 生产环境 者,该 endpoints 不接收来自外部系统的数据(例如日志记录) .

  • 6

    生产环境 者扩展了处理器,这意味着它也有一个处理方法 .

    查看Camel in Action一书中的免费第1章,该书讲述了一些Camel概念 . http://www.manning.com/ibsen/

    本教程也非常出色,因为它以稳定的步伐引入了这些概念http://camel.apache.org/tutorial-example-reportincident.html

相关问题