@@ -24,23 +24,33 @@ void TTopicWorkloadReader::ReaderLoop(TTopicWorkloadReaderParams& params, TInsta
24
24
auto topicClient = std::make_unique<NYdb::NTopic::TTopicClient>(params.Driver );
25
25
std::optional<TTransactionSupport> txSupport;
26
26
27
- auto consumerName = TCommandWorkloadTopicDescribe::GenerateConsumerName (params.ConsumerPrefix , params.ConsumerIdx );
28
27
auto describeTopicResult = TCommandWorkloadTopicDescribe::DescribeTopic (params.Database , params.TopicName , params.Driver );
29
- auto consumers = describeTopicResult.GetConsumers ();
28
+ NYdb::NTopic::TReadSessionSettings settings;
29
+
30
+ if (!params.ReadWithoutConsumer ) {
31
+ auto consumerName = TCommandWorkloadTopicDescribe::GenerateConsumerName (params.ConsumerPrefix , params.ConsumerIdx );
32
+ auto consumers = describeTopicResult.GetConsumers ();
30
33
31
- if (!std::any_of (consumers.begin (), consumers.end (), [consumerName](const auto & consumer) { return consumer.GetConsumerName () == consumerName; }))
32
- {
33
- WRITE_LOG (params.Log , ELogPriority::TLOG_EMERG, TStringBuilder () << " Topic '" << params.TopicName << " ' doesn't have a consumer '" << consumerName << " '. Run command 'workload init' with parameter '--consumers'." );
34
- exit (EXIT_FAILURE);
34
+ if (!std::any_of (consumers.begin (), consumers.end (), [consumerName](const auto & consumer) { return consumer.GetConsumerName () == consumerName; }))
35
+ {
36
+ WRITE_LOG (params.Log , ELogPriority::TLOG_EMERG, TStringBuilder () << " Topic '" << params.TopicName << " ' doesn't have a consumer '" << consumerName << " '. Run command 'workload init' with parameter '--consumers'." );
37
+ exit (EXIT_FAILURE);
38
+ }
39
+ settings.ConsumerName (consumerName).AppendTopics (params.TopicName );
40
+ } else {
41
+ NYdb::NTopic::TTopicReadSettings topic = params.TopicName ;
42
+ auto partitions = describeTopicResult.GetPartitions ();
43
+ for (auto partition: partitions) {
44
+ topic.AppendPartitionIds (partition.GetPartitionId ());
45
+ }
46
+ settings.WithoutConsumer ().AppendTopics (topic);
35
47
}
36
48
49
+
37
50
if (params.UseTransactions ) {
38
51
txSupport.emplace (params.Driver , params.ReadOnlyTableName , params.TableName );
39
52
}
40
53
41
- NYdb::NTopic::TReadSessionSettings settings;
42
- settings.ConsumerName (consumerName).AppendTopics (params.TopicName );
43
-
44
54
auto readSession = topicClient->CreateReadSession (settings);
45
55
WRITE_LOG (params.Log , ELogPriority::TLOG_INFO, " Reader session was created." );
46
56
@@ -93,7 +103,7 @@ void TTopicWorkloadReader::ReaderLoop(TTopicWorkloadReaderParams& params, TInsta
93
103
<< " createTime " << message.GetCreateTime () << " fullTimeMs " << fullTime);
94
104
}
95
105
96
- if (!txSupport || params.UseTopicCommit ) {
106
+ if (!params. ReadWithoutConsumer && (! txSupport || params.UseTopicCommit ) ) {
97
107
dataEvent->Commit ();
98
108
}
99
109
} else if (auto * createPartitionStreamEvent = std::get_if<NYdb::NTopic::TReadSessionEvent::TStartPartitionSessionEvent>(&event)) {
0 commit comments