小编The*_*nce的帖子

如何确认消息传送到 Amazon SQS 队列?

我正在使用 AWS sdk 开发基于 SQS 的队列发布订阅。

在非常基本的原型中,我将消息同时推送到我已经创建的队列中。但是,我如何确定我的消息被推送到队列中?

无论出于何种原因,推送的消息在此过程中都不会失败的保证是什么?

Amazon API 查询提供具有与该特定发送消息请求关联的 RequestID 的 ResponseMetadata。得到它是否足以肯定地确认将消息推送到 Queue ?

String requestId = sqs.sendMessage(request).getSdkResponseMetadata().getRequestId();
Run Code Online (Sandbox Code Playgroud)

Amazon sendmessage 请求是否没有提供带有 Http 代码的响应正文?

java response message-queue amazon-sqs amazon-web-services

6
推荐指数
2
解决办法
4213
查看次数

CompletableFuture以异步执行多个数据库查询

我想并行执行多个数据库查询,并将结果存储在映射中。我正在尝试这样做,但是访问地图时地图没有完全填充。

我做错什么了吗?

 public Map<MapKeyEnums, Set<String>> doDBCalls(String phoneNumber, long timestamp) {

         Map<MapKeyEnums, Set<String>> instrumentsEdgesMap = new EnumMap<>(MapKeyEnums.class);

         CompletableFuture.supplyAsync(() -> dbReadService.getCall(phoneNumber, PhoneNumber.class, "ABC", timestamp)).
                    thenApply(x -> instrumentsEdgesMap.put(MapKeyEnums.ABC, x));

         CompletableFuture.supplyAsync(() -> dbReadService.getCall(phoneNumber, PhoneNumber.class, "XYZ", timestamp)).
                    thenApply(x -> instrumentsEdgesMap.put(MapKeyEnums.XYZ, x));

         CompletableFuture.supplyAsync(() -> dbReadService.getCall(phoneNumber, PhoneNumber.class, "DEF", timestamp)).
                    thenApply(x -> instrumentsEdgesMap.put(MapKeyEnums.DEF, x));

         return instrumentsEdgesMap;

}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,在此先感谢。

java parallel-processing multithreading java-8 completable-future

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

Java Stream按一个属性分组并按另一个属性收集最大元素

我想知道流(或收集器)中是否已经实现了一个功能,它首先按属性对流进行分组,然后返回按另一个属性排序的列表中的第一个元素。例如,以下代码尝试使用第一个属性对对象流进行分组,然后想要收集具有第二个属性的最高值的对象。

class MyClass{
 String att1;
 String att2;
}
Run Code Online (Sandbox Code Playgroud)

现在,我想用 Stream myClassStream 来实现这样的东西 -

Map<String,MyClass> myMap = myClassStream().collect(Collectors.groupingBy(MyClass::getAtt1)); //Now I want to do Sorting after grouping to collect only the element which has the highest value of attr2.
Run Code Online (Sandbox Code Playgroud)

我使用简单 for 循环的代码是:

Map<String, MyClass> postAnalyticsMap = new HashMap<>();
for (MyClass post : myClassList) {
      if (post.get(post.getAtt1()) == null) {
               post.put(post.getAtt1(), post);
      } else {
               MyClass existingClass = postAnalyticsMap.get(post.getAtt1());
               if (existingPostAnalytics.getAtt2() < post.getAtt2()) {
                    postAnalyticsMap.put(post.getAtt1(), post);
               }
        }
  }
Run Code Online (Sandbox Code Playgroud)

任何帮助都感激不尽。

java java-8 java-stream

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

Maven - 无法在本地解决版本范围的 Maven 依赖关系

我正在尝试编译一个名为web-server的 Maven 项目,该项目依赖于指定依赖版本范围 [2.0,3.0) 内的search-client 。然而,由于存储库中“没有可用的版本 > com.test.search:search-client:jar:[2.0,3.0) 在指定范围内”,编译失败。

这些是我正在遵循的步骤:

  1. 进行更改并在本地构建搜索客户端

这会在我的本地 m2 存储库中为此客户端 pom 构建一个 2.0-SNAPSHOT jar。

  1. 尝试构建依赖于上述内容的网络服务器

这不会编译并给出以下错误:

[错误] 无法在项目通用上执行目标:无法解析项目 com.test.web:common:jar:2.0-SNAPSHOT 的依赖项:无法在 com.test.search:search-client:jar:[2.0 处收集依赖项,3.0): 指定范围内没有可用于 com.test.search:search-client:jar:[2.0,3.0) 的版本 -> [帮助 1]

网络服务器 POM:

<?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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>web-parent</artifactId>
        <groupId>com.test.web</groupId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <artifactId>common</artifactId>
    <packaging>jar</packaging>

    <properties>
        <kotlin.version>1.3.61</kotlin.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>com.test.search</groupId>
            <artifactId>search-client</artifactId>
            <version>[2.0,3.0)</version>
        </dependency>
        
        .
        .
        .
        //Many More Dependencies
    </dependencies>

    <build>
        <sourceDirectory>src/main/kotlin</sourceDirectory>
        <testSourceDirectory>src/test/kotlin</testSourceDirectory>
        <!--<testSourceDirectory>src/test/kotlin</testSourceDirectory>-->
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-source-plugin</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java pom.xml maven

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

Integer.parseInt() - 有符号和无符号数

javadoc,我理解Java默认情况下将int数据类型作为32位带符号的二进制补码整数,其最小值为-2 ^ 31,最大值为2 ^ 31-1.

如果是这种情况,为什么会这样:

System.out.println(Integer.parseInt("1111", 2));
Run Code Online (Sandbox Code Playgroud)

给出值15而不是-1(2的补码有符号数).

java

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

单个 Zookeeper 集合上的多个 kafka 集群

我目前有一个 3 节点 Kafka 集群,它连接到我的 Zookeeper 整体中的基本 chroot 路径。

zookeeper.connect=172.12.32.123:2181,172.11.43.211:2181,172.18.32.131:2181
Run Code Online (Sandbox Code Playgroud)

现在,我想添加一个新的 5 节点 Kafka 集群,它将连接到同一个 Zookeeper 集合中的其他一些 chroot 路径。

zookeeper.connect=172.12.32.123:2181,172.11.43.211:2181,172.18.32.131:2181/cluster/2
Run Code Online (Sandbox Code Playgroud)

这些配置是否会像两个 chroot 的相对路径一样工作?据我了解,原始 Kafka 集群应该连接到基本 chroot 路径以外的其他路径上,以实现更好的隔离。

另外,跨 Kafka 集群拥有相同的 Zookeeper 集合是否很好?该文档表示,通常最好为不同的集群提供隔离的 Zookeeper 集合。

apache-kafka apache-zookeeper

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

java.time.DateTimeException:年份的无效值(有效值-999999999-999999999)

当我尝试将epochTime转换为LocalDate时,出现此异常:

1)日期:2017-05-05 10:08:52.0

2)对应纪元:1493959132000

LocalDate lastUpdatedDate = LocalDate.ofEpochDay(1493959132000);
Run Code Online (Sandbox Code Playgroud)

例外情况:

java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): 4090323145
    at java.time.temporal.ValueRange.checkValidIntValue(ValueRange.java:330)
    at java.time.temporal.ChronoField.checkValidIntValue(ChronoField.java:722)
    at java.time.LocalDate.ofEpochDay(LocalDate.java:341)
Run Code Online (Sandbox Code Playgroud)

我了解到,java.time.LocalDate的源代码在https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#ofEpochDay-long-

这实际上意味着什么,什么时候出现?

java epoch java-8 localdate

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