部署在PCF上的springboot应用如何从Websphere MQ读取消息
How can a springboot application deployed on PCF read messages from Websphere MQ
我正在开发一个 spring 启动应用程序,它将部署在关键的云铸造厂中,它需要 read/listen 到来自 Websphere MQ 的消息。有办法吗?
I'm developing a spring boot application that will be deployed in pivotal cloud foundry and it needs to read/listen to messages from Websphere MQ. Is there a way to do that?
是的,应该可以。您需要首先验证的是您具有从 CF 基础上的流量到 IBM MQ 的网络连接(DNS 解析、流量可路由且没有防火墙阻止访问)。
如果其中任何一个不起作用,您需要与您的网络或 MQ 管理员联系以获得允许的流量。
您可以通过 运行 cf ssh
验证以在您的 CF 基础上输入一个容器,然后使用 nc -v <IP> <port>
将尝试与您的 MQ 建立 TCP 连接 IP/port.如果您看到 netcat 指示已建立连接,那么您已经准备就绪。
除此之外,您只需开发 Spring 启动应用程序,就像您在其他任何地方部署 Spring 启动应用程序一样(即,您无需执行任何特定操作)。您可以将您的凭据放入 application.properties
或使用环境变量将凭据传递给您的应用程序。
如果你想更高级一些,你可以看看java-cfenv,它可以用来执行动态服务绑定,但你不必这样做。
通过服务绑定,您可以创建用户提供的服务 (cf cups
) 并使用它来存储您的 IBM MQ 连接 info/creds。然后你 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。剩下的只是 spring JMS。例如,如果您希望 Spring 执行对象编组/解组,请确保添加一个 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/
我正在开发一个 spring 启动应用程序,它将部署在关键的云铸造厂中,它需要 read/listen 到来自 Websphere MQ 的消息。有办法吗?
I'm developing a spring boot application that will be deployed in pivotal cloud foundry and it needs to read/listen to messages from Websphere MQ. Is there a way to do that?
是的,应该可以。您需要首先验证的是您具有从 CF 基础上的流量到 IBM MQ 的网络连接(DNS 解析、流量可路由且没有防火墙阻止访问)。
如果其中任何一个不起作用,您需要与您的网络或 MQ 管理员联系以获得允许的流量。
您可以通过 运行 cf ssh
验证以在您的 CF 基础上输入一个容器,然后使用 nc -v <IP> <port>
将尝试与您的 MQ 建立 TCP 连接 IP/port.如果您看到 netcat 指示已建立连接,那么您已经准备就绪。
除此之外,您只需开发 Spring 启动应用程序,就像您在其他任何地方部署 Spring 启动应用程序一样(即,您无需执行任何特定操作)。您可以将您的凭据放入 application.properties
或使用环境变量将凭据传递给您的应用程序。
如果你想更高级一些,你可以看看java-cfenv,它可以用来执行动态服务绑定,但你不必这样做。
通过服务绑定,您可以创建用户提供的服务 (cf cups
) 并使用它来存储您的 IBM MQ 连接 info/creds。然后你 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。剩下的只是 spring JMS。例如,如果您希望 Spring 执行对象编组/解组,请确保添加一个 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/