【发布时间】:2014-03-10 11:50:31
【问题描述】:
我想“打开”基于应用程序的产品,以便与 Camel 进行企业集成。也就是说,我希望购买我的应用的客户能够通过 Camel 向应用提供信息,而无需在我的应用上创建完整的公共 API。
我已经阅读了 很多 骆驼文档、示例,甚至书籍,但我仍然无法从概念上开始。 首先,我可以让 Camel 运行:我的应用支持 Spring,我只是不知道如何“部署”它。
让我对用例进行过度简化:
- 假设我希望我的应用程序偶尔弹出一个对话框,其中包含一条消息。我的网络应用控制何时弹出对话框。
- 我希望消息来自客户拥有的其他软件系统 - 我希望通过 Camel 发送消息。 (可能是 ActiveMQ,可能是电子邮件,可能是存放在某个地方的文件,Camel 支持的所有东西)
- 客户早先在我的应用程序中配置了此消息,并带有要获取消息的密钥。所以这是一个 InOut 交换(用骆驼术语)。换句话说:
- 在配置时,客户说:“我有 'foo' 消息需要在对话框弹出时显示”。
- 在运行时,我的应用程序说:“嘿骆驼,我要显示一个对话框,你有一个 'foo' 消息让我在其中显示吗?”
就是这样。很简单,我应该能够根据我所阅读的内容轻松解决它,但我不能完全掌握我的案例在示例和教程中的确切位置。我认为这种脱节在于,其中大多数都在解决特定解决方案中的特定集成问题。而我正在将我的应用程序开放为一种通用集成 - 我没有关于骆驼客户方面的任何细节。
所以要回答具体问题:
我假设我的应用程序需要是骆驼端点,这是正确的吗?例如。客户在我的应用中设置了通往此对话框弹出功能的路线。
在这种情况下,谁应该真正运行骆驼,客户、我的应用程序,还是两者兼而有之? (我认为“运行”骆驼意味着启动 CamelContext 对吗?我可以在我的应用程序中执行此操作,没问题,但这就是我想要的吗?)
具体内容是什么:我是创建消费者还是生产者?
从客户的角度来看,它是什么样的?他们如何向此端点发送消息?他们如何获得请求?客户是否需要访问我的 API,或者他们只需要 Camel?他们还需要启动 CamelContext 吗?
【问题讨论】:
-
松耦合意味着您应该创建一种不太具体的方式来与应用程序集成。
-
你是什么意思?如何打开我的应用程序来请求和获取骆驼消息紧耦合?
-
您要求打电话给您的人使用 Camel,而不是例如他们使用 HTTP。如果添加 REST 或 Web 服务 API,任何技术都可以访问它。包括骆驼。
标签: apache-camel