[ 
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)

Reply via email to