我正在尝试为 ListenableFuture 添加回调编写单元测试用例,但我不知道该怎么做。在互联网上没有得到任何有用的东西。
@Test
public void can_publish_data_to_kafka() {
String topic = someString(10);
String key = someAlphanumericString(5);
String data = someString(50);
SendResult sendResult = mock(SendResult.class);
ListenableFuture<SendResult<String, Object>> future = mock(ListenableFuture.class);
given(kafkaTemplate.send(topic, key, data)).willReturn(future);
doAnswer(new Answer() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
return invocationOnMock.getArguments()[1];
}
});
service.method(key, topic, data);
}
Run Code Online (Sandbox Code Playgroud)
我想为其编写测试用例的代码
ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send(topicName, key, data);
future.addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
@Override
public void onSuccess(SendResult<String, Object> stringKafkaBeanSendResult) {
RecordMetadata recordMetadata = stringKafkaBeanSendResult.getRecordMetadata();
LOGGER.info(String.format("sent message %s to topic %s …Run Code Online (Sandbox Code Playgroud) 我有一个包含生产数据的现有 Oracle 数据库。我打算迁移到MongoDB,所以我想将Oracle数据库中现有的数据迁移到MongoDB。Oracle数据库和MongoDB中存储的数据的数据模型会有所不同。
我计划使用https://blogs.oracle.com/jsondb/generate-json-data从 Oracle 数据库获取所有 json 数据。一旦我获得包含所有数据的 json 文件,我会将其导入到 MongoDB 中。如果从 Oracle 数据库提取的数据不符合我的要求,我将创建一个实用程序来将每个集合的数据转换为多个 json 文件。
如果有更好的方法,我需要一些建议,我的解决方案是否是解决问题的正确方法?
我想尽可能快速高效地解析大型 CSV 文件。
目前,我正在使用 openCSV 库来解析我的 CSV 文件,但解析一个包含 10776 条记录和 24 个标题的 CSV 文件大约需要 10 秒,我想解析一个包含数百万条记录的 CSV 文件。
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我正在使用 openCSV 库使用下面的代码片段进行解析。
public List<?> convertStreamtoObject(InputStream inputStream, Class clazz) throws IOException {
HeaderColumnNameMappingStrategy ms = new HeaderColumnNameMappingStrategy();
ms.setType(clazz);
Reader reader = new InputStreamReader(inputStream);
CsvToBean cb = new CsvToBeanBuilder(reader)
.withType(clazz)
.withMappingStrategy(ms)
.withSkipLines(0)
.withSeparator('|')
.withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
.withThrowExceptions(true)
.build();
List<?> parsedData = cb.parse();
inputStream.close();
reader.close();
return parsedData;
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找另一种方法的建议,以在更短的时间内解析包含数百万条记录的 CSV 文件。
---更新了答案----
Reader reader = new InputStreamReader(in);
CSVParser csvParser = new …Run Code Online (Sandbox Code Playgroud) 我正在构建一个生产环境,我将在其中安装 Apache Kafka。我想知道最好的硬件组合以获得更好的性能。我将有 5000 个事务/秒。
apache-kafka ×1
concurrency ×1
csv ×1
database ×1
java-8 ×1
junit ×1
mockito ×1
mongodb ×1
opencsv ×1
oracle ×1
parsing ×1
spring-kafka ×1
unit-testing ×1