Apache camel 如何让camel mqtt端点在openshift/fuse上定位(解析)我的ActiveMQ

Apache camel 如何让camel mqtt端点在openshift/fuse上定位(解析)我的ActiveMQ,apache-camel,openshift,jbossfuse,fabric8,Apache Camel,Openshift,Jbossfuse,Fabric8,我对这有点陌生,所以我可能错过了显而易见的事情 我有一个带jboss保险丝的openshift档。我已经用mqtt连接器启动了一个ActiveMQ代理,并创建了一个驼峰路由(使用OSGi蓝图),该路由使用同一openshift齿轮上的ActiveMQ mqtt连接器。当我使用mqtt连接器的ip-address:port时,一切都能正常工作,但这不是我想要做的。我希望有一些其他的解决方案(解析器),它不需要我指出mqtt端点中的特定ip地址,这样我就可以在不重新配置驼峰路由的情况下绕过驼峰路由

我对这有点陌生,所以我可能错过了显而易见的事情

我有一个带jboss保险丝的openshift档。我已经用mqtt连接器启动了一个ActiveMQ代理,并创建了一个驼峰路由(使用OSGi蓝图),该路由使用同一openshift齿轮上的ActiveMQ mqtt连接器。当我使用mqtt连接器的ip-address:port时,一切都能正常工作,但这不是我想要做的。我希望有一些其他的解决方案(解析器),它不需要我指出mqtt端点中的特定ip地址,这样我就可以在不重新配置驼峰路由的情况下绕过驼峰路由

ActiveMQ连接器配置:

   <transportConnectors>
        <transportConnector name="openwire" publishedAddressPolicy="#addressPolicy" uri="tcp://${OPENSHIFT_FUSE_IP}:${OPENSHIFT_FUSE_AMQ_PORT}"/>
        <transportConnector name="mqtt"     publishedAddressPolicy="#addressPolicy" uri="mqtt://${OPENSHIFT_FUSE_IP}:1883"/>
    </transportConnectors>

工作时的驼峰路线:

<camelContext trace="false" id="blueprintContext" xmlns="http://camel.apache.org/schema/blueprint">
  <route id="mqttToLog">
    <from uri="mqtt:iot?host=tcp://127.4.22.139:1883&amp;subscribeTopicName=mytesttopic&amp;userName=admin&amp;password=xxxxxxx" id="iot_endpoint">
      <description>The MQTT endpoint for consuming data sent from the devices.</description>
    </from>
    <log message="The message contains ${body}" loggingLevel="INFO" id="iot_log">
      <description>Logs all the incoming MQTT messages. This is just for verification purpouses.</description>
    </log>
    <to uri="mock:result" id="iot_mock">
      <description>Final sink for the MQTT message flow. Kept for verification.</description>
    </to>
  </route>
</camelContext>

用于使用从设备发送的数据的MQTT端点。
记录所有传入的MQTT消息。这只是为了验证目的。
MQTT消息流的最终接收器。保存以供核实。
我的驼峰路由配置文件以驼峰为父级,并以驼峰和驼峰mqtt为特征

那么,我如何避免实际上必须在端点中指定主机,例如使用mq组或其他一些注册表(结构)或类似工具

谢谢


Tomas

如果您正在运行结构,那么ActiveMQ集群功能的工作原理如下:代理是所谓的“代理组”的一部分。默认代理是组“default”的一部分,这意味着有一个名为
mq client default
的配置文件。此配置文件将在OSGi服务注册表中注册预配置的ActiveMQ ConnectionFactory。其配置为连接到您的代理所在的任何位置,并将自动故障切换到同一组中的其他代理

要利用保险丝6.1中的上述功能,请执行以下操作:

  • 创建新的子容器
  • 将mq客户机默认配置文件添加到其中
  • 将功能“mq fabric camel”添加到mq客户端默认配置文件中。这将安装一个名为“amq”的camel组件,该组件自动使用mq客户机默认配置文件中的connectionFactory
  • 像下面这样部署一条驼峰路线,看看JBoss Fuse的惊人之处:)

从Camel路由到ActiveMQ的Hello

由该路由生成的消息将在代理上结束,无论代理在哪里,或者骆驼路由在哪里

祝你好运

另外,amq组件使用openwire与代理进行通信,但任何其他客户端都可以使用您启用的任何协议来消费或向队列生成消息