繁体   English   中英

部署在PCF上的springboot应用如何从Websphere MQ读取消息

[英]How can a springboot application deployed on PCF read messages from Websphere MQ

我正在开发一个 spring 启动应用程序,它将部署在关键的云铸造厂中,它需要读取/收听来自 Websphere MQ 的消息。 有没有办法做到这一点?

我正在开发一个 spring 启动应用程序,它将部署在关键的云铸造厂中,它需要读取/收听来自 Websphere MQ 的消息。 有没有办法做到这一点?

是的,这应该是可能的。 您需要首先验证的是,您具有从 CF 基础上的流量到 IBM MQ 的网络连接(DNS 解析、流量可路由且没有防火墙阻止访问)。

如果其中任何一个不起作用,您需要与您的网络或 MQ 管理员联系以允许流量。

您可以通过运行cf ssh进入您的 CF 基础上的容器然后使用nc -v <IP> <port>来验证,这将尝试与您的 MQ IP/端口建立 TCP 连接。 如果您看到 .netcat 表明已建立连接,那么您就已经准备就绪。

除此之外,您只需开发 Spring Boot 应用程序,就像在其他任何地方部署 Spring Boot 应用程序一样(即,您无需执行任何特定操作)。 您可以将您的凭据放入application.properties或使用环境变量将凭据传递给您的应用程序。

如果您想更高级一些,可以查看可用于执行动态服务绑定的java-cfenv ,但您不必这样做。

通过服务绑定,您可以创建用户提供的服务 ( cf cups ) 并使用它来存储您的 IBM MQ 连接信息/信用。 然后你cf bind到你的应用程序,你的应用程序将通过读取VCAP_SERVICES环境变量来访问绑定的凭据, java-cfenv会自动为你执行此操作。

使用服务绑定而不是将您的凭据放入application.properties或 env 变量的好处是您可以非常轻松地cf unbind / cf bind和移动服务。 您需要做的就是重新启动您的应用程序,它就会开始使用新服务。

是的你可以! 按照本教程启动并运行 - https://developer.ibm.com/languages/spring/tutorials/mq-jms-application-development-with-spring-boot/

更改硬编码队列以从application.properties中获取队列名称,例如。

    @JmsListener(destination = "${queue.name}")
    public void receive(MyDataObject data) {
       ...
    }

其中application.properties将在所有其他必需的设置中,例如:

queue.name=DEV.QUEUE.2

有关您可以设置的属性列表,请参阅https://github.com/ibm-messaging/mq-jms-spring rest 就是 spring JMS。 例如,如果您希望 Spring 执行 object 编组/解组,请确保添加一个MessageConverter ,通常是一个MappingJackson2MessageConverter

有一些指南可以帮助您将 spring 应用程序部署到 Cloud Foundry:

从 CF 的角度来看 - https://docs.cloudfoundry.org/buildpacks/java/getting-started-deploying-apps/gsg-spring.html

从 Spring 的角度来看 - https://spring.io/guides/gs/sts-cloud-foundry-deployment/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM