-
Notifications
You must be signed in to change notification settings - Fork 1.1k
INT-3325 Add Redis Channel Message Group Store #1084
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems for me like we should introduce new marker interface ChannelMessageStore
and protect QueueChannel
with that and disallow to use other out of the box implementations.
WDYT?
Otherwise, of course, LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea - and maybe a sub-interface PriorityChannelMessageStore
which would be the required type if we open up message-store
on priority-channel
(and you'd get a QueueChannel
with a PriorityChannelMessageStore
instead of a PriorityChannel
).
I think disallowing general message stores might be a little too much; some use cases might be just fine and it would be a burden for us to force them to maintain 2 sets of, say, JDBC tables. Maybe we could just emit a WARN
for now if they don't use an optimized store (or just leave it to the documentation).
I will rework this PR on Monday.
Added marker interfaces, priority store. Rebased, squashed, pushed. |
JIRA: https://jira.spring.io/browse/INT-3325 JIRA: https://jira.spring.io/browse/INT-1870 Optimized MGS for QueueChannel - uses a LIST for each channel and LPUSH, RPOP. * Also fix MutableMessage to be Serializable INT-1870 Priority Redis Channel Message Store Supports priorities 0-9 (+ no priority). Priorities out of that range are treated as no priority. Polishing - Add Marker Interfaces * Emit a `WARN` log if a channel is used with a regular MessageGroupStore * Allow message-store on namespace when defining a priority channel
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
, ChannelMessageStore
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BasicMessageGroupStore
is redundant
No polishing yet, but the main purpose to coerce like this
And I see that here is a confuse around |
Onother thought. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Redundant
I prefer to keep separate implementations - you will see that every "business" method from the superclass is overridden; they just share infrastructure methods. That means we'd have an |
OK. Nevermind: canceled the encapsulation question. |
Pushed |
LGTM |
Merged |
JIRA: https://jira.spring.io/browse/INT-3325
Optimized MGS for QueueChannel - uses a LIST for
each channel and LPUSH, RPOP.