Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
00a3a2b
basic setup
VGalaxies Jun 3, 2024
30bc70c
conf source mode on topic
VGalaxies Jun 3, 2024
873edc1
add IT
VGalaxies Jun 3, 2024
6334c8b
fix IT
VGalaxies Jun 3, 2024
40d2699
improve
VGalaxies Jun 4, 2024
097ce6d
improve comment
VGalaxies Jun 4, 2024
8882573
Merge branch 'master' into sub-drop
VGalaxies Jun 4, 2024
c583fec
Merge branch 'master' into sub-drop
VGalaxies Jun 6, 2024
c1bf294
improve
VGalaxies Jun 6, 2024
898eae8
spotless & fix review
VGalaxies Jun 6, 2024
3d8087f
fix review
VGalaxies Jun 6, 2024
250c4c3
add a boolean return value to dropPipe to avoid warn log in PipeDataN…
VGalaxies Jun 6, 2024
5bff7dd
improve
VGalaxies Jun 6, 2024
a802ee2
more final
VGalaxies Jun 6, 2024
4fc6559
intro getSubscribedTopics API & improve example
VGalaxies Jun 6, 2024
7e1a3fa
improve sub identifier parse
VGalaxies Jun 6, 2024
e9423c6
improve
VGalaxies Jun 6, 2024
b36e7ab
improve
VGalaxies Jun 7, 2024
1a5f64a
Merge branch 'master' into sub-drop
VGalaxies Jun 7, 2024
14e1ba0
encode topic name with URLEncoder
VGalaxies Jun 7, 2024
bbe30d6
fix SubscriptionFileHandler
VGalaxies Jun 7, 2024
6019ca7
improve SubscriptionSessionExample
VGalaxies Jun 7, 2024
3b7cffb
Merge branch 'master' into sub-drop
VGalaxies Jun 11, 2024
46f4019
roll back from the last executed procedure to the first executed
VGalaxies Jun 11, 2024
e1a9396
enlarge awaitility at most second
VGalaxies Jun 11, 2024
d580a55
improve cleanup and completed judgement logic
VGalaxies Jun 11, 2024
62d50b8
improve IT
VGalaxies Jun 11, 2024
b3c72d6
Merge branch 'master' into sub-drop
VGalaxies Jun 11, 2024
bb7b065
sync with #12710
VGalaxies Jun 12, 2024
2ecdf92
Merge branch 'master' into sub-drop
VGalaxies Jun 12, 2024
ad33eb4
Merge branch 'master' into sub-drop
VGalaxies Jun 12, 2024
564de62
refactor sub IT
VGalaxies Jun 12, 2024
75fe0af
minor improve
VGalaxies Jun 12, 2024
ef28808
add override annotation
VGalaxies Jun 12, 2024
3cb65fe
improve thread names
VGalaxies Jun 12, 2024
1da7220
Merge branch 'master' into sub-drop
VGalaxies Jun 12, 2024
b2d49e3
fixup
VGalaxies Jun 12, 2024
59d191c
Merge branch 'master' into sub-drop
VGalaxies Jun 13, 2024
726812d
Merge remote-tracking branch 'origin/master' into sub-drop
VGalaxies Jun 13, 2024
827a430
return subscription event for error and termination payload
VGalaxies Jun 13, 2024
371ddf6
static final vars for configs
VGalaxies Jun 13, 2024
78cff16
Merge branch 'master' into sub-drop
VGalaxies Jun 13, 2024
5606872
intro hasNoTopicsSubscribed
VGalaxies Jun 13, 2024
c660717
remove SubscriptionTerminationException
VGalaxies Jun 14, 2024
3a1371a
rename hasNoTopicsSubscribed -> hasMoreData
VGalaxies Jun 14, 2024
f9492e7
negate
VGalaxies Jun 14, 2024
b434d3a
rename hybrid -> stream
VGalaxies Jun 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,21 @@
import org.apache.iotdb.rpc.subscription.config.TopicConstant;
import org.apache.iotdb.session.Session;
import org.apache.iotdb.session.subscription.SubscriptionSession;
import org.apache.iotdb.session.subscription.consumer.AckStrategy;
import org.apache.iotdb.session.subscription.consumer.ConsumeResult;
import org.apache.iotdb.session.subscription.consumer.SubscriptionPullConsumer;
import org.apache.iotdb.session.subscription.consumer.SubscriptionPushConsumer;
import org.apache.iotdb.session.subscription.payload.SubscriptionMessage;
import org.apache.iotdb.session.subscription.payload.SubscriptionSessionDataSet;
import org.apache.iotdb.session.subscription.payload.SubscriptionTsFileHandler;

import org.apache.tsfile.read.TsFileReader;
import org.apache.tsfile.read.common.Path;
import org.apache.tsfile.read.expression.QueryExpression;
import org.apache.tsfile.read.query.dataset.QueryDataSet;

import java.io.IOException;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
Expand All @@ -51,6 +56,8 @@ public class SubscriptionSessionExample {

private static final String TOPIC_1 = "topic1";
private static final String TOPIC_2 = "`'topic2'`";
private static final String TOPIC_3 = "`\"topic3\"`";
private static final String TOPIC_4 = "`\"top \\.i.c4\"`";

private static final long SLEEP_NS = 1_000_000_000L;
private static final long POLL_TIMEOUT_MS = 10_000L;
Expand Down Expand Up @@ -226,10 +233,109 @@ private static void dataSubscription2() throws Exception {
}
}

/** multi push consumer subscribe topic with tsfile format and query mode */
private static void dataSubscription3() throws Exception {
try (final SubscriptionSession subscriptionSession = new SubscriptionSession(HOST, PORT)) {
subscriptionSession.open();
final Properties config = new Properties();
config.put(TopicConstant.FORMAT_KEY, TopicConstant.FORMAT_TS_FILE_HANDLER_VALUE);
config.put(TopicConstant.MODE_KEY, TopicConstant.MODE_QUERY_VALUE);
subscriptionSession.createTopic(TOPIC_3, config);
}

final List<Thread> threads = new ArrayList<>();
for (int i = 0; i < PARALLELISM; ++i) {
final int idx = i;
final Thread thread =
new Thread(
() -> {
// Subscription: builder-style ctor
try (final SubscriptionPushConsumer consumer3 =
new SubscriptionPushConsumer.Builder()
.consumerId("c" + idx)
.consumerGroupId("cg3")
.ackStrategy(AckStrategy.AFTER_CONSUME)
.consumeListener(
message -> {
// do something for SubscriptionTsFileHandler
System.out.println(
message.getTsFileHandler().getFile().getAbsolutePath());
return ConsumeResult.SUCCESS;
})
.buildPushConsumer()) {
consumer3.open();
consumer3.subscribe(TOPIC_3);
while (consumer3.hasMoreData()) {
LockSupport.parkNanos(SLEEP_NS); // wait some time
}
}
});
thread.start();
threads.add(thread);
}

for (final Thread thread : threads) {
thread.join();
}
}

/** multi pull consumer subscribe topic with tsfile format and query mode */
private static void dataSubscription4() throws Exception {
try (final SubscriptionSession subscriptionSession = new SubscriptionSession(HOST, PORT)) {
subscriptionSession.open();
final Properties config = new Properties();
config.put(TopicConstant.FORMAT_KEY, TopicConstant.FORMAT_TS_FILE_HANDLER_VALUE);
config.put(TopicConstant.MODE_KEY, TopicConstant.MODE_QUERY_VALUE);
subscriptionSession.createTopic(TOPIC_4, config);
}

final List<Thread> threads = new ArrayList<>();
for (int i = 0; i < PARALLELISM; ++i) {
final int idx = i;
final Thread thread =
new Thread(
() -> {
// Subscription: builder-style ctor
try (final SubscriptionPullConsumer consumer4 =
new SubscriptionPullConsumer.Builder()
.consumerId("c" + idx)
.consumerGroupId("cg4")
.autoCommit(true)
.fileSaveFsync(true)
.buildPullConsumer()) {
consumer4.open();
consumer4.subscribe(TOPIC_4);
while (true) {
LockSupport.parkNanos(SLEEP_NS); // wait some time
if (!consumer4.hasMoreData()) {
break;
}
for (final SubscriptionMessage message : consumer4.poll(POLL_TIMEOUT_MS)) {
final SubscriptionTsFileHandler handler = message.getTsFileHandler();
handler.moveFile(
Paths.get(System.getProperty("user.dir"), "new-subscription-dir")
.resolve(handler.getPath().getFileName()));
}
}
} catch (final IOException e) {
throw new RuntimeException(e);
}
});
thread.start();
threads.add(thread);
}

for (final Thread thread : threads) {
thread.join();
}
}

public static void main(final String[] args) throws Exception {
prepareData();
// dataQuery();
// dataSubscription1();
dataSubscription2();
// dataSubscription2();
// dataSubscription3();
dataSubscription4();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,32 @@ public CommonConfig setCnConnectionTimeoutMs(int connectionTimeoutMs) {
return this;
}

@Override
public CommonConfig setPipeHeartbeatIntervalSecondsForCollectingPipeMeta(
int pipeHeartbeatIntervalSecondsForCollectingPipeMeta) {
setProperty(
"pipe_heartbeat_interval_seconds_for_collecting_pipe_meta",
String.valueOf(pipeHeartbeatIntervalSecondsForCollectingPipeMeta));
return this;
}

@Override
public CommonConfig setPipeMetaSyncerInitialSyncDelayMinutes(
long pipeMetaSyncerInitialSyncDelayMinutes) {
setProperty(
"pipe_meta_syncer_initial_sync_delay_minutes",
String.valueOf(pipeMetaSyncerInitialSyncDelayMinutes));
return this;
}

@Override
public CommonConfig setPipeMetaSyncerSyncIntervalMinutes(long pipeMetaSyncerSyncIntervalMinutes) {
setProperty(
"pipe_meta_syncer_sync_interval_minutes",
String.valueOf(pipeMetaSyncerSyncIntervalMinutes));
return this;
}

// For part of the log directory
public String getClusterConfigStr() {
return fromConsensusFullNameToAbbr(properties.getProperty(CONFIG_NODE_CONSENSUS_PROTOCOL_CLASS))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -445,4 +445,29 @@ public CommonConfig setCnConnectionTimeoutMs(int connectionTimeoutMs) {
cnConfig.setCnConnectionTimeoutMs(connectionTimeoutMs);
return this;
}

@Override
public CommonConfig setPipeHeartbeatIntervalSecondsForCollectingPipeMeta(
int pipeHeartbeatIntervalSecondsForCollectingPipeMeta) {
dnConfig.setPipeHeartbeatIntervalSecondsForCollectingPipeMeta(
pipeHeartbeatIntervalSecondsForCollectingPipeMeta);
cnConfig.setPipeHeartbeatIntervalSecondsForCollectingPipeMeta(
pipeHeartbeatIntervalSecondsForCollectingPipeMeta);
return this;
}

@Override
public CommonConfig setPipeMetaSyncerInitialSyncDelayMinutes(
long pipeMetaSyncerInitialSyncDelayMinutes) {
dnConfig.setPipeMetaSyncerInitialSyncDelayMinutes(pipeMetaSyncerInitialSyncDelayMinutes);
cnConfig.setPipeMetaSyncerInitialSyncDelayMinutes(pipeMetaSyncerInitialSyncDelayMinutes);
return this;
}

@Override
public CommonConfig setPipeMetaSyncerSyncIntervalMinutes(long pipeMetaSyncerSyncIntervalMinutes) {
dnConfig.setPipeMetaSyncerSyncIntervalMinutes(pipeMetaSyncerSyncIntervalMinutes);
cnConfig.setPipeMetaSyncerSyncIntervalMinutes(pipeMetaSyncerSyncIntervalMinutes);
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -313,4 +313,21 @@ public CommonConfig setTagAttributeTotalSize(int tagAttributeTotalSize) {
public CommonConfig setCnConnectionTimeoutMs(int connectionTimeoutMs) {
return this;
}

@Override
public CommonConfig setPipeHeartbeatIntervalSecondsForCollectingPipeMeta(
int pipeHeartbeatIntervalSecondsForCollectingPipeMeta) {
return this;
}

@Override
public CommonConfig setPipeMetaSyncerInitialSyncDelayMinutes(
long pipeMetaSyncerInitialSyncDelayMinutes) {
return this;
}

@Override
public CommonConfig setPipeMetaSyncerSyncIntervalMinutes(long pipeMetaSyncerSyncIntervalMinutes) {
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,11 @@ CommonConfig setEnableAutoLeaderBalanceForIoTConsensus(
CommonConfig setTagAttributeTotalSize(int tagAttributeTotalSize);

CommonConfig setCnConnectionTimeoutMs(int connectionTimeoutMs);

CommonConfig setPipeHeartbeatIntervalSecondsForCollectingPipeMeta(
int pipeHeartbeatIntervalSecondsForCollectingPipeMeta);

CommonConfig setPipeMetaSyncerInitialSyncDelayMinutes(long pipeMetaSyncerInitialSyncDelayMinutes);

CommonConfig setPipeMetaSyncerSyncIntervalMinutes(long pipeMetaSyncerSyncIntervalMinutes);
}
Loading