Apache Camel生产者和消费者

Arn*_*ism 31 messaging apache-camel

我很难绕过这个概念.

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

我是否正确理解了生产者是负责发送消息到EndpointConsumer来自该终端接收呢?

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

在骨架实现上设置测试时,在端点和生产者对象上Camel调用.之后,它返回,与消费者或与之相关的处理器开始做任何事情.createProducer()process()

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

chr*_*leu 49

重要的是要记住,EndpointComponent(即终点工厂)创建的a 可以位于Camel的一端Route.如果将Component放在路径的开头,那么必须有ComponentConsumer一部分实现.这确实将特定的输入/请求(如HTTP请求)转换成通用的东西的工作-骆驼-可以旅行下来一个路线.如果您将Component放在路径的末尾,那么您必须具有a的实现.该制片人确实服用了工作交流从年底路线ExchangeProducer 并将其转换为特定的东西(如JMS消息).

我发现Fuse ESB文档比Apache Camel网站更好(一般).从Fuse ESB Component页面:

消费者端点消耗请求.它们总是出现在路径的开头,它们封装了负责接收传入请求和分派传出回复的代码.

生产者端点产生请求.它们总是出现在路由的末尾,它们封装了负责调度传出请求和接收传入回复的代码.


在此输入图像描述

  • 很明确的解释谢谢.这些术语通常是违反直觉的,因为骆驼的典型用户正在思考路线和消息交换,而不是创作新的骆驼组件.从messageExchange的角度来看,这些术语是错误的.Consumer生成一个messageExchange,而Producer生成一个messageExchange. (6认同)

Arn*_*ism 20

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

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

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

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

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


Cla*_*sen 6

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

查看Camel in Action一书中的免费第1章,其中介绍了Camel概念. http://www.manning.com/ibsen/

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