我有配置服务器,应用程序从该服务器获取配置。我想设置抓取的重试机制。如果配置服务器不可用,应用程序应发送 10 分钟的请求。
在 spring 文档中我找到了下一个配置
spring.cloud.config.uri=http://localhost:9090
spring.cloud.config.fail-fast=true
spring.cloud.config.retry.max-interval=10000
spring.cloud.config.retry.max-attempts=2000
Run Code Online (Sandbox Code Playgroud)
但他们什么也改变不了。我的应用程序不执行重试请求,它只是失败了
Caused by: java.net.ConnectException: Connection refused: connect
Run Code Online (Sandbox Code Playgroud)
(配置服务器此时已关闭)
我究竟做错了什么?有办法解决我的问题吗?
我需要使用 spring data 通过 hibernate 接收和保存大量数据。我们的服务器分配的 RAM 不足以同时保存所有实体。我们肯定会得到 OutOfMemory 错误。
所以我们需要批量保存数据,这是显而易见的。此外,我们还需要使用 @Transactional 来确保所有数据都保留或不保留,即使发生单个错误。
那么,问题是: @Transactional 方法期间的 spring 数据是否继续将实体存储在 RAM 中,或者垃圾收集器可以访问刷新的实体?
那么,使用 Spring Data 处理大量数据的最佳方法是什么?也许 Spring Data 不是解决此类问题的正确方法。
我写了数据类
data class FileHeader(
val relativePath: String,
val orderNumber: Long,
val bodySize: Int
) : Serializable {
@Transient
var headerSize: Int = 0
get() = relativePath.length + 8
}
Run Code Online (Sandbox Code Playgroud)
它按我的预期工作。
但为什么我不能将 @Transient 与 val 字段一起使用?
错误是:
此注释不适用于没有支持字段或委托的目标成员属性
这样做有什么原因吗?
我有数据类
data class User(
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
val userId: Long = 0,
@Column(nullable = false, unique = true)
val email: String = "",
@Column(nullable = false)
val firstName: String = "",
)
Run Code Online (Sandbox Code Playgroud)
我讨厌使用 "" 进行初始化。我想使用类似的东西
@Column(nullable = false)
val firstName: String = String.EMPTY
Run Code Online (Sandbox Code Playgroud)
我知道扩展属性或函数,但它们看起来也不太好
val firstName: String = "".empty()
val firstName: String = "".EMPTY
Run Code Online (Sandbox Code Playgroud)
你如何编写实体类?有没有更优雅的方式?
春天我有几个微小的细胞.其中一个是配置服务器.我尝试用docker-compose完全启动服务.但是有问题.微服务在初始化之前尝试从配置服务器获取配置.我想为microservice的启动编写脚本以防止错误启动.我现在必须如何确定配置服务器准备就绪的时刻.端口监听不起作用.Docker隐藏了有关他的网络的信息.我相信有比标准输出解析更好的方法.
有人知道如何确定春季启动应用程序启动的时间吗?
我有实用程序文件Utility.kt
在这里,我定义了一些常量,例如
val DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd")
const val UTC_TIMEZONE = "UTC"
Run Code Online (Sandbox Code Playgroud)
现在我需要用 2 个元素定义列表。我找不到以静态方式编写它的方法。我需要类似的东西
val DEFAULT_LIST = ArrayList<MyObj>()
val one = MyObj("one")
val two = MyObj("two")
DEFAULT_LIST.addAll(one,two)
Run Code Online (Sandbox Code Playgroud)
即只创建一次列表和对象。我可以使用伴侣对象。但现在我只使用没有类的文件。
是否可以?
kotlin ×4
spring ×4
java ×3
spring-boot ×2
arraylist ×1
data-class ×1
docker ×1
hibernate ×1
nhibernate ×1
spring-cloud ×1
spring-data ×1