[
https://issues.apache.org/jira/browse/QPID-949?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12592819#action_12592819
]
Arnaud Simon commented on QPID-949:
-----------------------------------
There are several possible heuristics. Let's assume that a message has an
in-memory state and a persistent state so we can:
1) discard all in-memory states when the memory size reaches a pre-defined
threshold.
2) discard new and/or old transient messages
3) only create persistent state of persistent and transient messages
4) throttle publisher speed up to stopping then when memory size is critical
We can obviously combine for example 1) and 3). Note that even if a message
payload is not kept in-memory, accepting a new message requires to create
objects hence free memory. So, whatever heuristic we go for we will eventually
have to apply 4).
> Implement Flow To Disk
> ----------------------
>
> Key: QPID-949
> URL: https://issues.apache.org/jira/browse/QPID-949
> Project: Qpid
> Issue Type: New Feature
> Components: Java Broker
> Affects Versions: M2.1
> Reporter: Marnie McCormack
> Assignee: Rob Godfrey
> Fix For: M3
>
>
> Currently, the Java Broker can do one of two things with a message it has to
> deliver:
> 1. Keep transient messages in memory until delivered
> 2. Write persistent messages to a message store (like BDB) and keep in memory
> until delivery complete
> This means that the broker is not able to avoid OoM exceptions i.e. send
> enough messages to the broker, especially if your consumers are not active,
> and you could bring the broker done once it explodes its available heap.
> RG to add more details and design proposal here please :-)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.