从IDEA运行Gradle任务时:
控制台输出如下:
可以看出,bootRun任务失败了.但我找不到失败的原因.
从Gradle窗口启动任务时,是否有办法使Intedle输出显示在Intellij控制台中?
有一个实体:
@Entity
class A {
...
@Version
int version;
}
Run Code Online (Sandbox Code Playgroud)
A 实例更新以乐观的方式实现:
@Transactional(rollbackFor = {StaleStateException.class})
@Retryable(value = {StaleStateException.class})
public void updateA() {
A a = findA();
B b = new B();
// Update "a" somehow
a.update();
// "b" is saved on each retry!
save(b);
}
Run Code Online (Sandbox Code Playgroud)
如注释中所述,似乎事务在StaleStateException发生时不会回滚,因此B每次重试时都会保存实例.
是否可以在重试时回滚事务?
所需的行为b仅在成功a更新时保存.
我必须为分层实体设计一个接口:
interface HierarchicalEntity<T extends HierarchicalEntity<T>> {
T getParent();
Stream<T> getAncestors();
}
Run Code Online (Sandbox Code Playgroud)
以前者将返回所有祖先的方式实现默认 getAncestors()方法非常容易.getParent()Stream
实施示例:
default Stream<T> getAncestors() {
Stream.Builder<T> parentsBuilder = Stream.builder();
T parent = getParent();
while (parent != null) {
parentsBuilder.add(parent);
parent = parent.getParent();
}
return parentsBuilder.build();
}
Run Code Online (Sandbox Code Playgroud)
但是我还需要包含this在流中,这里出现问题.以下行不正确,因为this它是类型HierarchicalEntity,而不是T:
parentsBuilder.add(this); // type mismatch!
Run Code Online (Sandbox Code Playgroud)
如何重新设计界面以使getAncestors()包含this到结果中?
有没有办法找出HDFS中消耗了多少空间?我用了
hdfs dfs -df
Run Code Online (Sandbox Code Playgroud)
但这与删除大量数据后似乎无关
hdfs dfs -rm -r -skipTrash
Run Code Online (Sandbox Code Playgroud)
以前的命令不是立即显示更改,而是在几分钟后显示更改(我需要最新的磁盘使用信息)。
我正在使用spring-integration-kafka.
使用了此示例中的代码。
我试图实现的是,当抛出异常时,不应将确认发送回 Kafka(即不应执行偏移提交),因此下一个fromKafka.receive(10000)方法调用将返回与前一个方法相同的消息。
但是我遇到了一个问题:即使确认没有发送到 Kafka,消费者也知道下一条消息的偏移量并继续读取新消息,尽管偏移主题中的偏移值保持不变。
如果出现某些故障,如何让消费者重读消息?
我使用Spring Kafka API实现Kafka使用者手动偏移管理:
@KafkaListener(topics = "some_topic")
public void onMessage(@Payload Message message, Acknowledgment acknowledgment) {
if (someCondition) {
acknowledgment.acknowledge();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我希望消费者只有在someCondition持有时才提交偏移量.否则,消费者应该睡一段时间并再次阅读相同的消息.
卡夫卡配置:
@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(new DefaultKafkaConsumerFactory<>(consumerConfig());
factory.getContainerProperties().setAckMode(MANUAL);
return factory;
}
private Map<String, Object> consumerConfig() {
Map<String, Object> props = new HashMap<>();
...
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false");
...
return props;
}
Run Code Online (Sandbox Code Playgroud)
使用当前配置,如果someCondition == false,consumer不提交偏移量,但仍然读取下一条消息.如果acknowledgement没有执行Kafka,有没有办法让消费者重读一条消息?
我正在使用CDH 5.4.2,并尝试创建具有以下代码段的Hbase表:
Configuration conf = HBaseConfiguration.create(new Configuration());
HBaseAdmin hba = new <strike>HBaseAdmin</strike>(conf);
if(!hba.tableExists(args[0])){
HTableDescriptor ht = new <strike>HTableDescriptor</strike> (args[0]);
ht.addFamily(new HColumnDescriptor("sample"));
Run Code Online (Sandbox Code Playgroud)
发生Deprecated错误。
在我的 Java 应用程序中,Logback 用作日志记录框架。使用以下模式配置的附加程序(简化):
[CORR=%X{CORR}] [MSG=%msg]%n
Run Code Online (Sandbox Code Playgroud)
正如人们所见,CORR值取自MDC。日志条目示例:
[CORR=12342314] [MSG=Some message]
Run Code Online (Sandbox Code Playgroud)
在某些情况下,属性未存储在 中MDC,因此日志条目如下所示:
[CORR=] [MSG=Some message]
Run Code Online (Sandbox Code Playgroud)
但应该是:
[MSG=Some message]
Run Code Online (Sandbox Code Playgroud)
[CORR=]如果在MDC不创建自定义LayoutBase实现的情况下不存在相应的值,有没有办法完全摆脱模式的这一部分?我正在尝试配置评估器:
<evaluator name="DISPLAY_CORR_EVAL">
<expression>((String) mdc.get("CORR")) != null</expression>
</evaluator>
Run Code Online (Sandbox Code Playgroud)
但不知道如何在我的情况下使用它。
java ×4
apache-kafka ×2
hadoop ×2
bigdata ×1
diskspace ×1
gradle ×1
hbase ×1
hdfs ×1
hibernate ×1
hierarchical ×1
interface ×1
java-8 ×1
logback ×1
spring ×1
spring-boot ×1
spring-data ×1
spring-kafka ×1