Apache camel 如何向现有应用程序添加Camel支持

Apache camel 如何向现有应用程序添加Camel支持,apache-camel,Apache Camel,我想用Camel“打开”一个基于应用程序的产品到企业的集成。也就是说,我希望购买我的应用程序的客户能够通过Camel向应用程序提供信息,而无需在我的应用程序上创建完整的公共API 我已经阅读了大量的camel文档、示例,甚至是这本书,但我在概念上还是有困难。 首先,我可以让Camel运行:我的应用程序支持Spring,我只是不知道如何“部署”它 让我对用例进行一个巨大的过度简化: 比如说,我希望我的应用程序偶尔弹出一个对话框,其中包含一条消息。“我的web应用程序”控制对话框何时弹出 我希望消

我想用Camel“打开”一个基于应用程序的产品到企业的集成。也就是说,我希望购买我的应用程序的客户能够通过Camel向应用程序提供信息,而无需在我的应用程序上创建完整的公共API

我已经阅读了大量的camel文档、示例,甚至是这本书,但我在概念上还是有困难。 首先,我可以让Camel运行:我的应用程序支持Spring,我只是不知道如何“部署”它

让我对用例进行一个巨大的过度简化:

  • 比如说,我希望我的应用程序偶尔弹出一个对话框,其中包含一条消息。“我的web应用程序”控制对话框何时弹出
  • 我希望消息来自客户拥有的其他软件系统,我希望通过Camel。(可能是ActiveMQ,可能是电子邮件,可能是存放在某处的文件,所有Camel支持的东西)
  • 客户已在我的应用程序中的某个较早点配置了此消息,并使用要获取的消息密钥。所以这是一种输入输出交换(用骆驼的术语)。换言之:
    • 在配置时,客户说:“我有‘foo’消息需要在对话框弹出时显示”
    • 在运行时,我的应用程序会说:“嘿,骆驼,我要显示一个对话框,你有一个‘foo’消息让我在其中显示吗?”
就这样。非常简单,根据我所读的内容,我应该能够很容易地解决这个问题,但我不能完全掌握我的案例在示例和教程中的具体位置。我认为脱节之处在于,大多数都是在特定的解决方案中解决特定的集成问题。然而,我正在将我的应用程序开放给一种通用的集成——我没有任何关于客户方面的细节

因此,要回答具体问题:

  • 我假设我的应用程序需要是一个驼峰端点,对吗?例如,客户在我的应用程序中设置到该弹出对话框功能的路径

  • 在这种情况下,谁应该实际运行camel,客户、我的应用程序,或者两者兼而有之? (我认为“运行”camel意味着启动CamelContext,对吗?我可以在我的应用程序中这样做,没问题,但这就是我想要的吗?)

  • 具体内容是什么:我是创建消费者还是生产者

  • 从客户的角度来看,它是什么样子的?他们如何向该端点发送消息?他们是如何得到请求的?客户是否需要访问我的API,还是只需要骆驼?他们是否也需要开始一段时间


  • Q1。我假设我的应用程序需要是一个驼峰端点,对吗?例如,客户在我的应用程序中设置到该弹出对话框功能的路径。

    A1。这是一个选项,用驼峰术语来说,您的应用程序将是驼峰组件。然而,我认为这将是一个糟糕的决定。然后,您将应用程序绑定为依赖于camel

    您应该做的是在应用程序中有一些接口,可以是web服务,也可以是活动mq,等等。这是camel与应用程序通信的地方

    Q2。在这种情况下,谁应该实际运行camel,客户、我的应用程序,或者两者兼而有之?(我认为“run”camel意味着启动CamelContext,对吗?我可以在我的应用程序中这样做,没问题,但这就是我想要的吗?

    A1。您应该单独为应用程序开发camel服务。它是一个集成框架。它们之间应该完全解耦。它可以作为应用程序的独立服务启动,监听不同的端点(电子邮件、a-mq、文件放置),并将此信息路由到应用程序公开的接口中

    Q3。具体内容是什么:我是创建消费者还是生产者?

    您将创建使用者以使用从客户发送到应用程序的请求(电子邮件、a-mq、文件放置)。生产者将用于将这些消息发送到您的应用程序接口

    Q4。从客户的角度来看,它是什么样子的?他们如何向该端点发送消息?他们是如何得到请求的?客户是否需要访问我的API,还是只需要骆驼?他们是否也需要启动一个新的上下文?

    Camel有很多不同的消费者,客户可以使用,它可以监听电子邮件,公开web服务,等待文件删除。客户需要访问这些端点,以便能够与您的系统通信。他们不需要启动camel上下文,camel位于您公开的接口后面,并将消息路由到您定义的端点


    但是,您真的需要所有这些端点吗?在应用程序中加入一个用户可以使用的界面不是更明智吗?

    Hmm谢谢,但我不确定这正是我想要的。在我的产品中创建camel依赖项没有问题。在向客户提供公共接口(或任何API)方面,我有一个更大的问题。我希望这项功能可以将我的对话框中的消息指定为我的应用程序的一项功能。如果客户必须学会如何做,这不是问题。我的问题是如何实现这一点。我看过自定义组件,但这似乎是一个非常简单的工作。它只是一个对话框,你能解释更多关于你的用例吗?它甚至不是一个对话框,但这是描述用例的最简单的方式。我希望我的客户能够根据自己的密钥配置任意数量的对话框,为对话框消息提供自己的信息。假设他们为foo和bar创建了一个。该应用程序现在有两个按钮,分别称为“foo”和“bar”。每当用户单击“foo”时,就会弹出一个对话框,我的应用程序将使用camel调用,并说“给我‘foo’对话框中的字符串”。看起来很简单。Camel将提供一个公共接口,但您不能公开“Camel端点”,它将是一个http端点JMS Endpo