小编spe*_*ibb的帖子

在需要时动态启动新的 Docker 容器?

是否存在任何组件可以监视服务器、资源或其他 Docker 实例的使用情况,并在需要更多资源时启动新的 Docker 容器?

Docker 容器可能会也可能不会部署在同一台服务器上。

例如 :

1)当消息队列增长太快时,侦听该队列的其他 Docker 容器将启动以帮助消费消息。

监听队列的动态 docker 容器

2)当通过负载均衡器向服务器发出太多请求时,会运行其他docker实例。

负载均衡器后面自动启动的 Docker

docker

6
推荐指数
1
解决办法
3588
查看次数

如何使用ActiveMQ设置Spring Cloud Bus?

我想在项目中使用Spring Cloud Bus动态更新配置。我们的环境中已经有Apache ActiveMQ。有可能使用ActiveMQ代替RabbitMQ作为代理吗?它们都是AMQP服务器的一种。

我在pom.xml中这样设置依赖项:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

它看起来像一个标准的AMQP启动器,不限于RabbitMQ。但是,以下错误日志会在配置服务器启动时提示:

org.springframework.amqp.AmqpIOException: java.io.IOException
    at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:65)
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:218)
    at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:476)
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$1.createConnection(ConnectionFactoryUtils.java:80)
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:130)
    at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:67)
    at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:439)
    at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1083)
    at java.lang.Thread.run(Thread.java:745)

Caused by: java.io.IOException: null
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
    at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:350)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:648)
    at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:205)
    ... 7 common frames omitted
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
    at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
    at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37)
    at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367)
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293)
    ... 9 common frames omitted
Caused by: com.rabbitmq.client.MalformedFrameException: AMQP protocol version mismatch; we are version 0-9-1, server sent …
Run Code Online (Sandbox Code Playgroud)

java spring-cloud

5
推荐指数
1
解决办法
2443
查看次数

如何在具有初始键值对数据的Docker上运行Consul?

我正在尝试在docker容器上旋转Consul服务器,并将其用作我的SpringBoot云应用程序的配置服务器。为此,我想在Consul中有一些预配置的数据(键值对)。

我当前在docker-compose.yml中的配置是:

  consul:
    image: "progrium/consul:latest"
    container_name: "consul"
    ports:
      - '9330:8300'
      - '9400:8400'
      - '9500:8500'
      - '9600:53'
    command: "-server -bootstrap -ui-dir /ui"
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以预填充键值对?

docker consul docker-compose

5
推荐指数
1
解决办法
1964
查看次数

在springboot应用程序中如何删除日志中的自动配置报告

在我的 springboot 应用程序中,我在使用 Orbitz consul 客户端和 spring-consul 时生成了以下日志。该日志是在执行使用 Orbitz 的 consul 客户端的周期任务(每 2 分钟一次)时生成的。我想关闭以下日志,因为它们不必要地填充日志文件。

AutoConfigurationReportLoggingInitializer [pool-45-thread-1] [DEBUG] [] 


=========================
AUTO-CONFIGURATION REPORT
=========================


Positive matches:
-----------------

    ConfigurationPropertiesRebinderAutoConfiguration matched
    ConfigurationPropertiesRebinderAutoConfiguration#configurationPropertiesBeans matched
    ConfigurationPropertiesRebinderAutoConfiguration#configurationPropertiesBeans matched

Negative matches:
-----------------

   ConsulAutoConfiguration.RetryConfiguration did not match
   EncryptionBootstrapConfiguration.RsaEncryptionConfiguration did not match
      - required @ConditionalOnClass classes not found: org.springframework.security.rsa.crypto.RsaSecretEncryptor (OnClassCondition)

   EncryptionBootstrapConfiguration.VanillaEncryptionConfiguration did not match
      - @ConditionalOnMissing classes not found: org.springframework.security.rsa.crypto.RsaSecretEncryptor (OnClassCondition)
      - Keystore nor key found in Environment (EncryptionBootstrapConfiguration.KeyCondition)


Exclusions:
-----------

    None


Unconditional classes:
----------------------

    None
Run Code Online (Sandbox Code Playgroud)

logging spring-boot

4
推荐指数
1
解决办法
3975
查看次数

Spring Boot 应用程序可以处理大量请求

我正在使用 Spring-boot 或 Spring-Cloud Framework 来开发 Web 应用程序。系统主要处理来自客户端的HTTP Restful请求,然后将其保存到MySQL数据库中。

但我计划让它更具可扩展性。它应该能够启动每个服务的更多实例,并使系统可以处理更多传入请求。

但我不确定我这样做是否正确,有谁能来帮我检查一下我目前的做法是否合理,或者提出我的做法是否存在潜在的风险。

我正在做的是:

  1. 服务A在其控制器中接收请求,然后将其异步写入RocketMQ。RocketMQ用于削峰。

  2. 然后服务B订阅服务A写入的RocketMQ主题,并将消息以列表的形式缓存到Redis中。

  3. 服务 C 启动一个守护线程检查 Redis 中的消息编号。如果缓存列表大小达到一定值,它将拉取所有消息并将它们保存到MySQL中,然后刷新Redis中的缓存。

performance spring spring-boot rocketmq

4
推荐指数
1
解决办法
8972
查看次数

更正应用程序的类路径,使其包含兼容版本

我正在尝试将一些服务从一个 Spring Boot 项目迁移到另一个项目,当然存在很多问题,但除了我陷入困境之外,所有问题都已解决

更正应用程序的类路径,使其包含类 org.springframework.boot.sql.init.dependency.AnnotationDependsOnDatabaseInitializationDetector 和 org.springframework.beans.factory.config.ConfigurableListableBeanFactory 的兼容版本

这是我的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
<!--    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.5</version>
        <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;
    </parent>-->
    <groupId>com.hpw</groupId>
    <artifactId>box</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>box</name>
    <description>Box</description>
    <properties>
        <java.version>17</java.version>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.6.4</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.6.5</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.13</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.6.4</version> …
Run Code Online (Sandbox Code Playgroud)

maven-plugin pom.xml maven-3 spring-boot

4
推荐指数
1
解决办法
1万
查看次数

我们真的需要微服务中的事件源和CQRS吗?

据我了解,当数据库事务跨越微服务时,我们可以通过发布事件来使用消息代理(kafka,RabbitMQ等)来解决此问题,以便订阅者微服务可以通过侦听这些事件来更新其数据库。

如果发生异常,我们可以发送失败事件,以便订阅服务器服务可以更新其状态。

这还不够吗?这种方法有什么问题?

为什么以及何时需要事件来源?

我们真的需要事件源吗?

cqrs event-sourcing microservices

3
推荐指数
3
解决办法
2611
查看次数

具有多个 JVM 的多个实例的应用程序中的 Spring Scheduler 代码

我有一个使用fixedDelay或配置的 spring 调度程序任务cron,并且该应用程序的多个实例在多个 JVM 上运行。

默认行为是所有实例都在执行调度程序任务。

有没有一种方法可以控制这种行为,以便只有一个实例会执行调度程序任务,而其他实例则不会。

如果您知道任何方法,请告诉我。

谢谢

spring scheduled-tasks spring-batch spring-boot

3
推荐指数
1
解决办法
2878
查看次数

SpringBoot 应用程序在 Brixton SR3 中向 Eureka 注册 UNKNOWN

我正在运行 Spring Cloud Brixton SR3 - Spring Netflix Eureka、Spring Cloud Config 和 Discovery Client 应用程序。当客户端应用程序配置为

eureka.client.healthcheck.enabled=truespring.cloud.config.discovery.enabled=true

该应用程序启动时在 Eureka 注册,状态为“UNKNOWN”,永远不会更改为“UP”。如果这些标志中的任何一个设置为 false,则应用程序启动时注册为“UP”。

当两个标志都启用/为真时,我会看到这一系列的日志记录:

2016-07-13 17:41:38.144  INFO 13180 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1468456898144, current=UP, previous=STARTING]
2016-07-13 17:41:38.144 DEBUG 13180 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : Executing on-demand update of local InstanceInfo
2016-07-13 17:41:38.144 DEBUG 13180 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : Canceling the latest scheduled update, it will be rescheduled at the end of on demand update
2016-07-13 …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot spring-cloud-netflix spring-cloud-config

2
推荐指数
1
解决办法
4107
查看次数

Spring Cloud Project中的Docker容器化

我正在尝试使用弹簧和弹簧靴创建弹簧云微服务.我开发了一个Spring云Eureka服务器作为一个独立的弹簧启动项目.并为Zuul服务器创建了用于网关代理和路由的Spring启动项目.

  • 现在我有3个春季启动项目,如上所述.在这里,我将docker容器带入我的项目.所以我通过使用Fabric工具探索了基于pom.xml的容器化.
  • 那么当我部署我的微服务时,需要通过容器化来部署所有项目吗?那么云平台是否将所有微服务都分解为单独的容器?
  • 通过在单独的容器中部署我的所有微服务,云中是否存在任何问题,因为它们可以相互通信/呼叫?

任何人都可以帮助我澄清我对容器化和云部署我的Spring云微服务的困惑吗?

docker

2
推荐指数
1
解决办法
88
查看次数