首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >骆驼生产者消费者困惑

骆驼生产者消费者困惑
EN

Stack Overflow用户
提问于 2014-12-21 21:26:28
回答 2查看 5.1K关注 0票数 12

Camel in Action书中生产者和消费者的定义让我有点困惑。对于类似的问题,我已经读过另外两个答案,但我仍然觉得不是这样的。

生产者是骆驼抽象,它指的是能够创建并向端点发送消息的实体。图1.10说明了生产者与其他骆驼概念的契合程度。当需要将消息发送到端点时,生产者将创建一个exchange,并使用与该特定端点兼容的数据填充它。例如,FileProducer会将消息体写入文件。另一方面,JmsProducer将把Camel消息映射到javax.jms.Message,然后将其发送到JMS目的地。这是骆驼的一个重要特征,因为它隐藏了与特定运输交互的复杂性。 --使用者是一种服务,它接收生产者产生的消息,将它们包装在一个交换中,并将它们发送给处理。消费者是骆驼交易的来源。回顾图1.10,我们可以看到消费者与其他Camel概念的契合之处。若要创建新的交换,使用者将使用包装正在使用的有效负载的端点。然后使用处理器来启动使用路由引擎在骆驼中的交换的路由。

到底是谁在创造交易?典型的香奈儿沟通的哪一方是生产者和消费者?从上面的文字中,我不能说是谁对此负责。如果有人能提供一张图片(书中的图片我不清楚),生产者和消费者到底在哪里,并解释他们是如何以一种简单的方式工作的,那就太好了。也许一些例子也是有用的。

好的,也许举个例子比较好,有人可以告诉我它是如何工作的。假设我们希望从文件夹中获取文件,并将它们放到JMS队列中,然后将它们发送给进一步处理,最终保存在磁盘上。

根据我的照片,生产者、消费者到底在哪里?我意识到什么是组件和端点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-09 13:18:29

你对自己的怀疑或多或少是对的。给出一个简单的例子:

代码语言:javascript
复制
CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new RouteBuilder() {
  @Override
  public void configure() {
    from("file:data/inbox?noop=true") // consumer
      .to("file:data/outbox");        // producer
  }
});
camelContext.start();
Thread.sleep(2000);
camelContext.stop();

在本例中,我们使用一个RouteBuilder创建了一个Route,一旦CamelContext启动,该Route就会执行如下:

  1. 创建两个FileComponent来表示两个位置。
  2. 通过查询前一个组件创建相应的FileEndpoint
  3. 创建一个从FileConsumer读取的data/inbox
  4. 创建要写入GenericFileProducerdata/outbox
  5. 将控件交给FileConsumer,以便从其目录中启动轮询文件,该目录指示其Endpoint创建Exchange (如图中所示)。GenericFileMessage被绑定到这个Exchange
  6. 这个Exchange被移交给FileProducer

从这个角度来看,Consumer没有创建任何交换。我想,在这本书的这个阶段,它还没有意义。这一点反映在文本中。但是,在查看实现时,当您查看代码时,两者都是等价的:

Consumer在发送消息时使用一些Processor,在本例中,该消息由一个Consumer表示,然后Consumer查询该消息以生成一个ExchangeConsumer查询该ExchangeEndpoint,然后为该Exchange创建实际的Exchange

票数 9
EN

Stack Overflow用户

发布于 2014-12-21 21:43:20

也许Exchange类的javadoc会为您澄清所有权。这里有一个片段可以回答您关于谁创建Exchange的问题:

当使用者收到请求时,将创建Exchange。创建一个新消息,将请求设置为消息的正文,并根据使用者的其他端点和协议相关信息作为消息头添加。然后创建一个Exchange,并将新创建的消息设置为Exchange上的in。因此,Exchange从消费者开始其生命。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27594006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档