构build通用的Camel / Docker映像,并在容器启动时应用不同的Camel路由

我有一个要求,使用Apache骆驼创build一些骗子/存根/reflection(select自己的术语…)。 这些存根需要:

  • 听一堆IBM MQ队列
  • 对于每个队列:
  • 当消息出现时从消息队列中抓取消息
  • 通过简单的XPath或正则expression式提取消息中的信息,并通过模板构build响应
  • 等待一段预定的时间
  • 将响应发送回另一个队列

我不是骆驼专家,但我可以研究如何做到这一点…

然而,考虑到将会有很多这些存根,我想在不同情况下使用这些存根的不同子集,所以我想构build一个通用的 Camel Docker镜像,并在启动Docker容器时对其应用不同的存根集。

如果它有助于进一步澄清事情,我希望能够将存根定义作为未编译的代码(例如XML,Simple,无论)存储在git repos中 – 与Docker镜像分离 – 并通过Docker / Camel容器加载这些存根定义卷挂载/ s或环境variables。 一旦容器启动,这些存根图像将一直存在,直到容器被杀掉 – 除了容器启动时,我不需要操作存根。

关键是Camel / Docker映像必须是通用的,而不是预先构build一组特定的存根定义。

我可以处理Docker方面的事情 – 我不能解决的是如何在Camel启动时(即,创buildDocker容器时)让Camel加载存根定义,而不是在编译时加载存根(例如WAR)时间。

感谢您的任何帮助或build议

使用以下方法可以很容易地实现:

  • 骆驼/泊坞窗图像有主cmd运行骆驼路线从springxml(你可以使用任何你想要的逻辑像骆驼独立或春季开机等)
  • Spring的XML文件是从某个位置读取的,例如在Docker镜像中硬编码(比如/app/config.xml)
  • 您将启动docker容器并将所需的spring XML文件映射到/app/config.xml

如果不能将XML文件映射到正在运行的容器,那么您可以实现自己的小引导部分,它将在启动时从某个envvariables中读取XML内容,将其存储到临时文件中并使用文件上下文运行相同的启动spring的逻辑。 在这种情况下,您可以运行docker容器并将spring XML作为env。 variables。

Interesting Posts