Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用rest端点放大或缩小PCF应用程序_Java_Rabbitmq_Cloud Foundry_Spring Rabbit - Fatal编程技术网

Java 使用rest端点放大或缩小PCF应用程序

Java 使用rest端点放大或缩小PCF应用程序,java,rabbitmq,cloud-foundry,spring-rabbit,Java,Rabbitmq,Cloud Foundry,Spring Rabbit,场景:我有几个应用程序运行在PCF中,其中一个是SpringBootlistener应用程序 问题:我需要根据队列深度或消息数量放大或缩小侦听器应用程序的实例,该应用程序正在侦听一些外部MQ队列 如果我使用PCF RabbitMQ,这非常容易,我可以设置RabbitMQ队列,这将很好地工作。我已经在为其他应用程序做这些了 但我需要使用其他一些外部MQ(而不是RabbitMQ),其中外部系统正在发布消息。因此,我很好奇PCF平台是否为每个应用程序公开了某种端点,这些端点在PCF中破坏,可用于放大/

场景:我有几个应用程序运行在
PCF
中,其中一个是
SpringBoot
listener应用程序

问题:我需要根据队列深度或消息数量放大或缩小侦听器应用程序的实例,该应用程序正在侦听一些
外部MQ
队列

如果我使用
PCF RabbitMQ
,这非常容易,我可以设置RabbitMQ队列,这将很好地工作。我已经在为其他应用程序做这些了


但我需要使用其他一些外部MQ(而不是RabbitMQ),其中外部系统正在发布消息。因此,我很好奇PCF平台是否为每个应用程序公开了某种端点,这些端点在
PCF
中破坏,可用于放大/缩小单个应用程序。

您最好使用自定义指标。要做到这一点,您的应用程序需要监控队列长度,并发出指示队列长度的指标。您可以使用此处的说明发出自定义度量

然后,一旦发出度量,就可以使用自定义度量设置自动缩放规则。选择您发出的度量名称。然后,Autoscaler将使用您发出的度量来缩放您的应用程序。有关使用自定义度量的更多详细信息,请参阅此链接


希望有帮助

您最好使用自定义指标。要做到这一点,您的应用程序需要监控队列长度,并发出指示队列长度的指标。您可以使用此处的说明发出自定义度量

然后,一旦发出度量,就可以使用自定义度量设置自动缩放规则。选择您发出的度量名称。然后,Autoscaler将使用您发出的度量来缩放您的应用程序。有关使用自定义度量的更多详细信息,请参阅此链接


希望有帮助

另一个解决方案可能是创建一个应用程序,并使用PCF控制器根据传入的请求/指标上下扩展应用程序。我相信autoscaler很快就会重新发布(TM)@DarrenForsythe,简言之,这是Pivotal的autoscaler。如中所述,我尝试创建一个以整数值发射的端点,并基于该值在autoscaler中设置规则。这就是错误:Autoscaler在缩放窗口期间未收到任何
高延迟的度量。在这些指标可用之前,将推迟缩减。按照上面提到的所有步骤注册端点,我可以看到在注册度量之后,在PCF中有一个CUPS被添加到我的应用程序中。实例名称:
metrics-endpoint-high_latency
@DanielMikusa以下是示例代码:
@GetMapping(“/high_latency”)公共响应事件highLatency()抛出中断异常{int queueLength=0;Random Random=new Random();int number=Random.nextInt(50);System.out.println(“生成数为:“+number”);如果(数字%2==0){queueLength=99;}否则{queueLength=200;}返回新的响应属性(queueLength,null,HttpStatus.OK);}
Autoscaler规则:公制低-高-高延迟100 199安装一个cf cli插件:
https://github.com/cloudfoundry-community/firehose-plugin
https://github.com/cloudfoundry/log-cache-cli
并使用它确认您的度量值是否正确发出。如果您可以如果不经常使用这些插件中的一个或两个来查看度量,则Autoscaler也将无法看到它。另一个解决方案可能是创建一个应用程序,并使用PCF控制器根据传入的请求/度量来上下扩展应用程序。我相信Autoscaler很快就会重新发布(TM)@Darrenforsyth,简而言之,它是Pivotal的autoscaler。如中所述,我尝试创建一个以整数值形式发出的端点,并基于此值在autoscaler中设置规则。这是错误:autoscaler在缩放窗口期间未收到任何
高延迟
的度量。缩放将推迟到这些指标是可用的。按照上面提到的所有步骤注册端点,我可以看到在注册指标后,一个CUPS被添加到我的PCF应用程序中。实例名称:
metrics-endpoint-high_latency
@DanielMikusa以下是示例代码:
@GetMapping(/high_latency”)public ResponseEntity highLatency()抛出InterruptedException{int queueLength=0;Random Random=new Random();int number=Random.nextInt(50);System.out.println(“生成编号为:+number”);if(编号%2==0){queueLength=99;}else{queueLength=200;}返回新的响应长度(queueLength,null,HttpStatus.OK);}
Autoscaler规则:公制低-高-高延迟100 199安装一个cf cli插件:
https://github.com/cloudfoundry-community/firehose-plugin
https://github.com/cloudfoundry/log-cache-cli
并使用它确认您的度量值是否正确发出。如果您可以如果不经常使用这些插件中的一个或两个来查看指标,那么Autoscaler也将无法看到它。