SpringBoot:在PCF中使用RabbitMQ Pub/Sub发送消息
在本文中,我将演示如何使用SpringBootStartPack创建一个简单的RabbitMQ发布/子消息传递模型,以及如何在PCF中部署应用程序。
在下面的示例中,我将创建一个简单的消息生成器,它将向exchange发送一条消息,而交换将根据路由**将消息路由到适当的队列。一旦消息被发送到适当的队列,我们将使用相同的消息并将其打印在控制台中。为了简单起见,我使用的是直接交换。如果您想尝试其他类型的交换,如主题、默认或扇出,则必须相应地创建和注入bean。
build.gradle
那个spring-boot-starter-cloud-connectors将向项目添加下列依赖项。
· 弹簧-云铸造-连接器
· 弹簧.云连接器.芯
· 弹簧云-Heroku连接器
· 弹簧-云-弹簧-服务-连接器
· 弹簧云-localconfig-连接器
在本地环境中,SpringBoot将自动配置ConnectionFactorybean具有本地RabbitMQ实例的默认主机URL(Localhost)和默认主机端口(5672),并将其注入Spring容器。但是,当涉及到云环境时,我们需要自动配置ConnectionFactorybean具有界的RabbitMQ实例的URL和端口,并注入相同的URL和端口。这正是SpringCloud连接器所要做的。
MessageProducer.java
MessageConsumer.java
BasicConfiguration.java
出于测试目的,我还公开了一个API将消息放入队列。
BaseController.java
注意:您还可以直接使用RabbitMQ管理控制台进行测试。
一旦上述代码到位,我们就可以编译代码并构建JAR,我们将其推入PCF(默认情况下,JAR将在Build/libs中创建)。
一旦登录到PCForg/space,我们就可以使用以下命令将应用程序推入PCF。由于应用程序尚未绑定到RabbitMQ实例,应用程序将在启动时失败。这就是为什么我们要用--no-start.
创建一个新的实例。rabbit-mq,稍后将绑定到示例应用程序。
接下来,我们需要将应用程序绑定到新创建的rabbit-mq举个例子。
在此之后,您将重新启动更改的生效申请。
如果要修改应用程序并将其部署到PCF中,则应将SPRING_PROFILES_ACTIVE 去云。如果不设置env值,则在尝试启动应用程序时,将在日志中得到一个拒绝连接的错误。
测试
当您调用端点时/testRabbitTopic,您将在容器控制台中看到以下日志。
看到这里,你想不想踩在过来人的肩膀上,轻松实现专业技能的提升呢?不妨扫码加入java技术交流分享群,体验精彩公开课,还能免费领取更多学习资料。
加入「java技术交流分享群」,开启你的技能提升之旅吧~
长按左边二维码
○
关注Java高级部落
点击原文,加入Java技术交流分享群~