Camel in Action
书中对 生产环境 者和消费者的定义对我来说有点混乱 . 我不是那样的 .
生产环境 者是Camel抽象,指的是能够创建消息并将消息发送到 endpoints 的实体 . 图1.10说明了 生产环境 者适应其他Camel概念的位置 . 当需要将消息发送到 endpoints 时, 生产环境 者将创建交换并使用与该特定 endpoints 兼容的数据填充它 . 例如,FileProducer会将消息正文写入文件 . 另一方面,JmsProducer会将Camel消息映射到javax.jms.Message,然后再将其发送到JMS目标 . 这是Camel的一个重要特性,因为它隐藏了与特定传输交互的复杂性 . 使用者是接收 生产环境 者生成的消息的服务,将它们包装在交换中,然后发送它们进行处理 . 消费者是在Camel中路由交换的来源 . 回顾图1.10,我们可以看到消费者在其他Camel概念中的位置 . 要创建新的交换,消费者将使用包装正在使用的有效负载的 endpoints . 然后使用处理器使用路由引擎启动Camel中的交换路由 .
谁在创建交易所?典型的沟通渠道的哪一方是 生产环境 者和消费者?从上面的文字中我无法确定谁对此负责 . 如果有人可以提供图片(书中的图片对我来说不清楚),那将是很好的,其中究竟是 生产环境 者和消费者,并解释他们如何以简单的方式工作 . 也许一些例子也很有用 .
好吧也许最好举一个例子,有人可以告诉我它是如何工作的 . 想象一下,我们想要从文件夹中获取文件并将它们放在JMS队列中,然后从那里发送它们以进行进一步处理,最终保存在磁盘上 .
根据我的照片, 生产环境 者,消费者到底在哪里?我意识到什么是组件和 endpoints .
2 回答
也许the javadoc for Exchange class将为您澄清所有权 . 以下是回答关于谁创建Exchange的问题的片段:
你或多或少对你的怀疑是正确的 . 举个简单的例子:
在这个例子中,我们使用
RouteBuilder
来创建Route
,一旦CamelContext
启动,它执行如下:创建两个
FileComponent
来表示两个位置 .通过查询以前的组件创建相应的
FileEndpoint
.创建
FileConsumer
以从data/inbox
读取 .创建
GenericFileProducer
以写入data/outbox
.手控制到
FileConsumer
以从其目录开始轮询文件,该文件指示其Endpoint
创建Exchange
(如图中所示) .GenericFileMessage
绑定到Exchange
.这
Exchange
被移交给FileProducer
.从该视图来看,
Consumer
不会创建任何交换 . 我想,在本书的这个阶段它还没有意义 . 这反映在文本中 . 但是,查看实现,当您查看代码时,两者都是等效的:Consumer
在发送消息时使用了一些Processor
,在这种情况下,由Consumer
表示,然后由Consumer
查询以生成Exchange
,Consumer
查询其Endpoint
,然后创建实际的Exchange
.