wy96f commented on a change in pull request #2750: ARTEMIS-2399 Improve
performance when there are a lot of subscribers
URL: https://github.com/apache/activemq-artemis/pull/2750#discussion_r304187715
##########
File path:
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
##########
@@ -324,13 +325,7 @@ public String debug() {
out.println("consumer: " + holder.consumer.debug());
}
- for (MessageReference reference : intermediateMessageReferences) {
- out.print("Intermediate reference:" + reference);
- }
-
- if (intermediateMessageReferences.isEmpty()) {
- out.println("No intermediate references");
- }
+ out.println("Intermediate reference size is " +
intermediateMessageReferences.size());
Review comment:
MpscUnboundedArrayQueue might perform well in journal mode where there are
many producers and one consumer. The main reason I used MpscUnboundedArrayQueue
is I need to calculate size of messages both in intermediateMessageReferences
and messageReferences, i.e.`intermediateMessageReferences.size() +
messageReferences.size() < MAX_DEPAGE_NUM` in QueueImpl::needsDepage. However
time complexity of size() for ConcurrentLinkedQueue is O(n), so I replaced it
with MpscUnboundedArrayQueue(I did't find other queues fit for our scenario). I
didn't think about issues like kafraf, debug by introducing this.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services