[
https://issues.apache.org/jira/browse/AMQNET-554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15366741#comment-15366741
]
Jim Gomes commented on AMQNET-554:
----------------------------------
Changes reviewed and applied. Thank you for the contribution! The patch
wasn't fully working, so having the entire source bundle was a big help.
> Added support for message properties and selectors in Apache.NMS.MSMQ
> ---------------------------------------------------------------------
>
> Key: AMQNET-554
> URL: https://issues.apache.org/jira/browse/AMQNET-554
> Project: ActiveMQ .Net
> Issue Type: New Feature
> Components: MSMQ
> Affects Versions: 1.8.0
> Reporter: Stephane Ramet
> Assignee: Jim Gomes
> Priority: Minor
> Labels: features, patch
> Fix For: 1.8.0
>
> Attachments: 2016-07-05 - Apache.NMS.MSMQ.7z, 2016-07-05 -
> Apache.NMS.MSMQ.patch
>
>
> The proposed package implements the following enhancements :
> 1. Support for communication of message properties between compatible peers
> The DefaultMessageConverter has been enhanced, so as to marshall custom
> message properties in the MSMQ Message.Extension field, along with the
> NMSCorrelationID which was already marshalled in this field.
> An additional flag specifies whether the MSMQ Message.Label field should be
> populated with the NMSType (as currently - default value) or with the value
> of a message property called "Label".
> 2. Support for selectors
> A parser for selection strings has been introduced.
> It is based on the Apache.ActiveMQ V4 implementation, ported from Java to C#.
> MessageReaders have been developped, that support various types of filtering:
> - no filtering when no selector strings are specified.
> - filtering based on the Id (NMSMessageID), CorrelationId (NMSCorrelationID)
> or LookupId properties.
> - filtering based on any other valid selection string.
> MessageReaders have been introduced in MessageConsumers and QueueBrowsers.
> The generic filtering system, based on a selection string, has - at least -
> two limitations:
> - it cannot be fully included in the build chains: the source code is
> generated from SelectorParser.csc (a port of ActiveMQ's SelectorParser.jj) by
> CSharpCC (https://github.com/deveel/csharpcc, a port of JavaCC, now
> unmaintained). Due to limitations and/or bugs in the CSharpCC (eg. support
> for namespace {}), the generated code must be rectified manually. A port to
> another parser generator (eg. ANTLR) would certainly be required.
> - selection is performed by the client, by browsing through the messages in
> the queue, via MessageQueue.GetMessageEnumerator2() or MessageQueue.Peek(),
> and retrieving only the matching messages via MessageQueue.ReceiveByLookupId.
> When the queue gets very long and the relevant messages are sparse,
> performance becomes an issue.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)