小编Ali*_*der的帖子

在Intellij IDEA 2016.1.1中的控制台中显示Gradle输出

从IDEA运行Gradle任务时:

IDEA Gradle窗口

控制台输出如下:

在此输入图像描述

可以看出,bootRun任务失败了.但我找不到失败的原因.

从Gradle窗口启动任务时,是否有办法使Intedle输出显示在Intellij控制台中?

intellij-idea gradle

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

Spring Data:重试时回滚事务

有一个实体:

@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更新时保存.

java hibernate optimistic-locking spring-data spring-boot

9
推荐指数
1
解决办法
1272
查看次数

为分层实体设计接口

我必须为分层实体设计一个接口:

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到结果中?

java interface hierarchical java-8 default-method

7
推荐指数
1
解决办法
166
查看次数

找出HDFS中的实际磁盘使用情况

有没有办法找出HDFS中消耗了多少空间?我用了

hdfs dfs -df
Run Code Online (Sandbox Code Playgroud)

但这与删除大量数据后似乎无关

hdfs dfs -rm -r -skipTrash
Run Code Online (Sandbox Code Playgroud)

以前的命令不是立即显示更改,而是在几分钟后显示更改(我需要最新的磁盘使用信息)。

hadoop diskspace bigdata hdfs

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

通过拒绝确认重读来自 Kafka 主题的消息

我正在使用spring-integration-kafka.

使用了此示例中的代码。

我试图实现的是,当抛出异常时,不应将确认发送回 Kafka(即不应执行偏移提交),因此下一个fromKafka.receive(10000)方法调用将返回与前一个方法相同的消息。

但是我遇到了一个问题:即使确认没有发送到 Kafka,消费者也知道下一条消息的偏移量并继续读取新消息,尽管偏移主题中的偏移值保持不变。

如果出现某些故障,如何让消费者重读消息?

spring-integration apache-kafka

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

从卡夫卡多次读同一条消息

我使用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,有没有办法让消费者重读一条消息?

java spring apache-kafka kafka-consumer-api spring-kafka

4
推荐指数
2
解决办法
4160
查看次数

错误:不建议使用构造函数htable(配置字符串)

我正在使用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错误。

  • 如何避免这些警告?
  • 我是否需要为CDH 5.4.2添加任何特定的jar?

hadoop hbase

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

在某些条件下动态更改日志条目模式

在我的 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 logback

0
推荐指数
1
解决办法
1359
查看次数