我需要在我的应用程序中查询收集的指标,我发现这样做的唯一方法是通过 Prometheus rest api,如下所述:https : //prometheus.io/docs/prometheus/latest/querying/api/是否有任何 Spring 或是否存在用于从 Prometheus 获取指标的 java api,这样我就不必从头开始实现它?
我在 keycloak (7.0.0) 中有一个具有给定配置的客户端 - 突出显示选项“启用对‘客户端凭据授予’的支持”:
当我获取该客户端的令牌 (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_token
expires_in
if (accessToken == null || accessToken.isExpired()) {
try {
// no refresh token usage here
accessToken = acquireAccessToken();
}
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
client_credentials
,它是后端 -> 后端通信的授予类型?OAuth2 文档链接明确指出对于授权类型“不应包含刷新令牌” client_credentials
。client_credentials
授予类型的客户端发送刷新令牌?access-token oauth-2.0 openid-connect keycloak refresh-token
是否可以将咖啡因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) 我想通过 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) 我正在研究 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) 我有一个带有私有 @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) 我正在创建一个带有官方 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
,但在容器初始化期间发生了同样的错误。
spring ×4
java ×3
keycloak ×2
spring-boot ×2
access-token ×1
aspectj ×1
docker ×1
jboss ×1
micrometer ×1
mongodb ×1
oauth-2.0 ×1
prometheus ×1
proxy ×1
sharding ×1
spring-cache ×1
wildfly ×1