You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2021/04/09 20:13:01 UTC

[jira] [Commented] (AMQNET-554) Added support for message properties and selectors in Apache.NMS.MSMQ

    [ https://issues.apache.org/jira/browse/AMQNET-554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17318292#comment-17318292 ] 

ASF subversion and git services commented on AMQNET-554:
--------------------------------------------------------

Commit 16d8f06dd0b178c5030c0da7345aa16e2d51a761 in activemq-nms-msmq's branch refs/heads/main from Jim Gomes
[ https://gitbox.apache.org/repos/asf?p=activemq-nms-msmq.git;h=16d8f06 ]

Apply patch for AMQNET-554. Suport for message properties, and selectors. Thanks Stephane Ramet!


> 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
(v8.3.4#803005)