下面是Camel in Action书中关于生产者和消费者的定义。
消费者可能正在接收来自外部服务的消息,轮询 对于某些系统上的消息,甚至创建消息本身。这条信息 然后流经处理组件,这可能是企业集成 模式 (EIP)、处理器、拦截器或其他一些自定义创建。讯息 最终发送到作为生产者角色的目标端点。一条路线可能 有许多修改消息或将其发送到另一个位置的处理组件, 或者它可能没有,在这种情况下它将是一个简单的管道。
我的疑问:
- 什么是外部服务?
- 消费者如何在生产者生成消息之前发挥作用。我的理解是,生产者生产并转换消息作为交换,以便消息与消费者的端点兼容。
- 为什么消费者必须做生产者的工作(即转换消息并将其再次发送给生产者?)反之亦然吗?
谢谢!
最佳答案
外部服务可以是外部 Web 服务、外部 REST 服务、EJB 等。
消费者可以从任何这些服务中消费,或者它可以监听在文件系统上的特定位置创建的一个(或多个)文件,它可以从消息队列 (JMS) 中消费,等等,等等 - 无限的可能性仅受可用组件和端点的限制。
基本上,您是在使用 apache camel 设计消息总线 (ESB),对吧?您可以这样想——“消费者”从外部世界获取东西并将其放在公共(public)汽车上。
然后,您的消息将通过各种途径(最有可能通过 EIP 在此过程中被翻译和修改),然后最终它必须到达现实世界中“外面”的其他地方 - 这就是生产者做的事情这是工作。
消费者在总线上消费/生产者在总线下生产。
通常,您不需要过多考虑端点是否作为消费者作为生产者运行 - 只需使用 .from
和 .to
作为您需要,一切都应该从那里正常工作。
另请阅读此答案:Apache Camel producers and consumers
希望对您有所帮助!
关于apache-camel - Apache Camel 生产者消费者术语困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21280274/