小编dev*_*123的帖子

用于获取指标的 Prometheus java/Spring API

我需要在我的应用程序中查询收集的指标,我发现这样做的唯一方法是通过 Prometheus rest api,如下所述:https : //prometheus.io/docs/prometheus/latest/querying/api/是否有任何 Spring 或是否存在用于从 Prometheus 获取指标的 java api,这样我就不必从头开始实现它?

spring prometheus prometheus-java

9
推荐指数
0
解决办法
1158
查看次数

带有刷新令牌的 Keycloak 客户端凭据授予类型

我在 keycloak (7.0.0) 中有一个具有给定配置的客户端 - 突出显示选项“启用对‘客户端凭据授予’的支持”:

Keycloak客户端配置

当我获取该客户端的令牌 (POST /auth/realms/{my-realm}/protocol/openid-connect/token) 时,我收到以下 json 响应:

{
  "access_token": "xxx",
  "expires_in": 600,
  "refresh_expires_in": 1800,
  "refresh_token": "xxx",
  "token_type": "bearer",
  "not-before-policy": 1572415518,
  "session_state": "xxx",
  "scope": "xxx xxx"
}
Run Code Online (Sandbox Code Playgroud)

我想将它与OAuth2FeignRequestInterceptor集成,默认情况下它会忽略刷新令牌并每秒创建一个新会话access_tokenexpires_in

if (accessToken == null || accessToken.isExpired()) {
            try {
                // no refresh token usage here
                accessToken = acquireAccessToken();
            }
            ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 为什么我会收到 的刷新令牌client_credentials,它是后端 -> 后端通信的授予类型?OAuth2 文档链接明确指出对于授权类型“不应包含刷新令牌” client_credentials
  2. 是否可以将 keycloak 配置为不向client_credentials授予类型的客户端发送刷新令牌?
  3. 如果对 2. 的回答是“否” - …

access-token oauth-2.0 openid-connect keycloak refresh-token

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

Spring Cache Caffeine 批量检索

是否可以将咖啡因CacheLoader::loadAll@Cacheable带有集合参数的带注释方法一起使用,例如

@Cacheable(cacheNames = "exampleCache", cacheManager="exampleCacheManager", keyGenerator = "complexKeyGenerator")
   List<String> getItems(List<String> keys, String commonForEveryKey) {
      return ...
}

@Component
class ComplexKeyGenerator implements KeyGenerator {

      @Override
      public Object generate(Object target, Method method, Object... params) {
         return ((List<String>)params[0]).stream()
                     .map(item -> new ComplexKey(item, (String) params[1]))
                     .collect(Collectors.toList());
      }
}

@Data
   @AllArgsConstructor
   class ComplexKey {
      String key;
      String commonGuy;
}

class CustomCacheLoader implements CacheLoader<ComplexKey, String> {

      @Override
      public @Nullable String load(@NonNull ComplexKey key) throws Exception {
         return loadAll(List.of(key)).get(key);
      }

      @Override
      public @NonNull …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot spring-cache caffeine-cache

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

无法到达设置 mongo 配置服务器的任何节点

我想通过 docker-compose 部署包含 1 个 mongo 分片(副本集)、1 个配置服务器(副本集)和 1 个路由器的 mongo 集群。我有一个问题,它是“无法到达主要的设置 mongoconfigserver”。我发现了一个关于它的问题: 无法启动 mongos,但在这种情况下,配置服务器没有副本集,而我--replSet mongoconfigserver在命令中需要“”选项。

这是我的 docker-compose.yml:

version: '3'
services:
  # Config servers for metadata
  mongoconfigserver-01:
    container_name: mongoconfigserver-01
    image: mongo
    command: mongod --configsvr --replSet mongoconfigserver --dbpath /data/db --port 27017
    volumes:
        - /etc/localtime:/etc/localtime:ro
        - /mongo_cluster/config1:/data/db
  mongoconfigserver-02:
    container_name: mongoconfigserver-02
    image: mongo
    command: mongod --configsvr --replSet mongoconfigserver --dbpath /data/db --port 27017
    volumes:
        - /etc/localtime:/etc/localtime:ro
        - /mongo_cluster/config2:/data/db
  mongoconfigserver-03:
    container_name: mongoconfigserver-03
    image: mongo
    command: mongod --configsvr --replSet mongoconfigserver --dbpath /data/db --port …
Run Code Online (Sandbox Code Playgroud)

sharding mongodb

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

Project Reactor 的 flatMap 中线程的混乱

我正在研究 Project Reactor 和反应式 MongoDB 存储库。我有以下代码:

@Builder
@FieldDefaults(level = AccessLevel.PRIVATE)
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Document
public class Person {
    @Id
    Integer id;
    String name;
}
Run Code Online (Sandbox Code Playgroud)
public interface ReactivePersonRepository extends ReactiveCrudRepository<Person, Integer> {
}
Run Code Online (Sandbox Code Playgroud)

和主@SpringBootApplication类:

@SpringBootApplication
@EnableReactiveMongoRepositories
@RequiredArgsConstructor
public class ReactiveDatabaseApplication {

    private final ReactivePersonRepository reactivePersonRepository;

    public static void main(String[] args) {
        SpringApplication.run(ReactiveDatabaseApplication.class, args);
    }

    @PostConstruct
    public void postConstruct() {
        Scheduler single = Schedulers.newSingle("single-scheduler");
        IntStream.range(0, 10).forEach(i ->
                Flux.just(Person.builder()
                        .id(i)
                        .name("PersonName")
                        .build())
                        .flatMap(personToSave -> {
                            System.out.println(String.format(
                                    "Saving person from …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot project-reactor spring-webflux

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

添加千分尺依赖会导致奇怪的 Spring 代理问题

我有一个带有私有 @Scheduled 方法的简单 Spring Boot 应用程序:

@SpringBootApplication
@EnableScheduling
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Scheduled(fixedRate = 1000)
    private void scheduledTask() {
        System.out.println("Scheduled task");
    }
}
Run Code Online (Sandbox Code Playgroud)

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <!--<dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-spring-legacy</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency> …
Run Code Online (Sandbox Code Playgroud)

java proxy spring aspectj micrometer

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

无法连接到 Dockerfile 中的 Wildfly

我正在创建一个带有官方 keycloak docker 图像扩展的自定义 Dockerfile。我想更改网络上下文并添加一些自定义提供程序。这是我的 Dockerfile:

FROM jboss/keycloak:7.0.0

COPY startup-config.cli /opt/jboss/tools/cli/startup-config.cli

RUN /opt/jboss/keycloak/bin/jboss-cli.sh --connect --controller=localhost:9990 --file="/opt/jboss/tools/cli/startup-config.cli"

ENV KEYCLOAK_USER=admin
ENV KEYCLOAK_PASSWORD=admin
Run Code Online (Sandbox Code Playgroud)

和 startup-config.cli 文件:

/subsystem=keycloak-server/:write-attribute(name=web-context,value="keycloak/auth")
/subsystem=keycloak-server/:add(name=providers,value="module:module:x.y.z.some-custom-provider")

Run Code Online (Sandbox Code Playgroud)

但不幸的是我收到这样的错误:

The controller is not available at localhost:9990: java.net.ConnectException: WFLYPRT0053: Could not connect to remote+http://localhost:9990. The connection failed: WFLYPRT0053: Could not connect to remote+http://localhost:9990. The connection failed: Connection refused
The command '/bin/sh -c /opt/jboss/keycloak/bin/jboss-cli.sh --connect --controller=localhost:9990 --file="/opt/jboss/tools/cli/startup-config.cli"' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)

这是无效的本地主机问题吗?我应该如何引用管理 API?

编辑:我也尝试使用ENTRYPOINT而不是RUN,但在容器初始化期间发生了同样的错误。

java jboss docker wildfly keycloak

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