@@ -150,38 +150,26 @@ private void processPersistentSubscriptions(PublishMsgWithId publishMsgWithId, P
150
150
151
151
PersistentMsgSubscriptions processBasicAndCollectPersistentSubscriptions (MsgSubscriptions msgSubscriptions ,
152
152
PublishMsgProto publishMsgProto ) {
153
- List <Subscription > applicationSubscriptions = null ;
154
- List <Subscription > deviceSubscriptions = null ;
153
+ final PersistentMsgSubscriptions persistentSubscriptions = new PersistentMsgSubscriptions (
154
+ null , null , msgSubscriptions .getAllApplicationSharedSubscriptions ()
155
+ );
155
156
long startTime = System .nanoTime ();
156
157
157
158
if (!CollectionUtils .isEmpty (msgSubscriptions .getCommonSubscriptions ())) {
158
- int commonSubsSize = msgSubscriptions .getCommonSubscriptions ().size ();
159
- applicationSubscriptions = initArrayList (commonSubsSize );
160
- deviceSubscriptions = initArrayList (commonSubsSize );
161
- processSubscriptions (msgSubscriptions .getCommonSubscriptions (), publishMsgProto ,
162
- applicationSubscriptions , deviceSubscriptions );
159
+ processSubscriptions (msgSubscriptions .getCommonSubscriptions (), publishMsgProto , persistentSubscriptions );
163
160
}
164
-
165
161
if (!CollectionUtils .isEmpty (msgSubscriptions .getTargetDeviceSharedSubscriptions ())) {
166
- int targetDeviceSharedSubsSize = msgSubscriptions .getTargetDeviceSharedSubscriptions ().size ();
167
- applicationSubscriptions = initSubscriptionListIfNull (applicationSubscriptions , targetDeviceSharedSubsSize );
168
- deviceSubscriptions = initSubscriptionListIfNull (deviceSubscriptions , targetDeviceSharedSubsSize );
169
- processSubscriptions (msgSubscriptions .getTargetDeviceSharedSubscriptions (), publishMsgProto ,
170
- applicationSubscriptions , deviceSubscriptions );
162
+ processSubscriptions (msgSubscriptions .getTargetDeviceSharedSubscriptions (), publishMsgProto , persistentSubscriptions );
171
163
}
172
164
173
165
if (publishMsgProcessingTimerStats != null ) {
174
166
publishMsgProcessingTimerStats .logNotPersistentMessagesProcessing (startTime , TimeUnit .NANOSECONDS );
175
167
}
176
- return new PersistentMsgSubscriptions (
177
- deviceSubscriptions ,
178
- applicationSubscriptions ,
179
- msgSubscriptions .getAllApplicationSharedSubscriptions ()
180
- );
168
+ return persistentSubscriptions ;
181
169
}
182
170
183
171
private void processSubscriptions (List <Subscription > subscriptions , PublishMsgProto publishMsgProto ,
184
- List < Subscription > applicationSubscriptions , List < Subscription > deviceSubscriptions ) {
172
+ final PersistentMsgSubscriptions persistentMsgSubscriptions ) {
185
173
boolean nonPersistentByPubQos = publishMsgProto .getQos () == MqttQoS .AT_MOST_ONCE .value ();
186
174
if (nonPersistentByPubQos ) {
187
175
if (processSubscriptionsInParallel ) {
@@ -194,13 +182,25 @@ private void processSubscriptions(List<Subscription> subscriptions, PublishMsgPr
194
182
}
195
183
}
196
184
} else {
185
+ persistentMsgSubscriptions .setDeviceSubscriptions (initSubscriptionListIfNull (persistentMsgSubscriptions .getDeviceSubscriptions (), subscriptions .size ()));
186
+ persistentMsgSubscriptions .setApplicationSubscriptions (initSubscriptionListIfNull (persistentMsgSubscriptions .getApplicationSubscriptions (), subscriptions .size ()));
197
187
if (processSubscriptionsInParallel ) {
198
188
subscriptions
199
189
.parallelStream ()
200
- .forEach (subscription -> processSubscription (subscription , publishMsgProto , applicationSubscriptions , deviceSubscriptions ));
190
+ .forEach (subscription -> processSubscription (
191
+ subscription ,
192
+ publishMsgProto ,
193
+ persistentMsgSubscriptions .getApplicationSubscriptions (),
194
+ persistentMsgSubscriptions .getDeviceSubscriptions ())
195
+ );
201
196
} else {
202
197
for (Subscription subscription : subscriptions ) {
203
- processSubscription (subscription , publishMsgProto , applicationSubscriptions , deviceSubscriptions );
198
+ processSubscription (
199
+ subscription ,
200
+ publishMsgProto ,
201
+ persistentMsgSubscriptions .getApplicationSubscriptions (),
202
+ persistentMsgSubscriptions .getDeviceSubscriptions ()
203
+ );
204
204
}
205
205
}
206
206
}
0 commit comments