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



我正在开发一个 Spring 启动应用程序,它将部署在 Pivotal Cloud Foundry 中,它需要读取/侦听来自 Websphere MQ 的消息。有没有办法做到这一点?

是的,你可以!按照本教程启动并运行 - 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。剩下的只是春天的JMS。例如,如果您希望 Spring 执行对象脱壳/取消脱壳,请确保添加一个MessageConverter通常MappingJackson2MessageConverter

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

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

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

我正在开发一个 Spring 启动应用程序,它将部署在 Pivotal Cloud Foundry 中,它需要读取/侦听来自 Websphere MQ 的消息。有没有办法做到这一点?

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

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

您可以通过运行cf ssh在 CF 基础上输入容器,然后使用将尝试与 MQ IP/端口建立 TCP 连接的nc -v <IP> <port>进行验证。如果您看到 netcat 指示已建立连接,则一切就绪。

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

如果你想更高级一点,你可以看看java-cfenv,它可以用来执行动态服务绑定,但你不必这样做。

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

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

最新更新