[ 
https://issues.apache.org/jira/browse/ARTEMIS-2639?focusedWorklogId=398058&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-398058
 ]

ASF GitHub Bot logged work on ARTEMIS-2639:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 05/Mar/20 01:28
            Start Date: 05/Mar/20 01:28
    Worklog Time Spent: 10m 
      Work Description: jbertram commented on pull request #3001: ARTEMIS-2639 
lost notif props with OpenWire+divert
URL: https://github.com/apache/activemq-artemis/pull/3001
 
 
   Historically speaking, all message properties starting with AMQ HDR
   would not be passed to OpenWire messages. However, that blocked the
   properties from management notifications so ARTEMIS-1209 was raised and
   the solution there was to pass properties that started with _AMQ *if*
   the consumer was connected to the management notification address.
   However, in this case messages are diverted to a different address so
   this check fails and the properties are removed. My solution will be to
   check the message itself to see if it has the _AMQ_NotifType property
   (which all notification messages do) rather than checking where the
   consumer is connected.
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

            Worklog Id:     (was: 398058)
    Remaining Estimate: 0h
            Time Spent: 10m

> Lost notification properties when using OpenWire client with a divert 
> ----------------------------------------------------------------------
>
>                 Key: ARTEMIS-2639
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2639
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker, OpenWire
>    Affects Versions: 2.11.0
>            Reporter: Ansgar J. Sachs
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> {quote}As developer, I expect proper ActiveMQ Notifications, when consuming 
> only some of them{quote}
> h3. Steps to reproduce
> 1a) Create a broker and add the following:
> {code:java}
> <divert name="consumer-notification-divert">
>         <address>activemq.notifications</address>
>         <forwarding-address>jms.consumer.notifications</forwarding-address>
>         <filter string="_AMQ_NotifType = 'CONSUMER_CREATED' OR _AMQ_NotifType 
> = 'CONSUMER_CLOSED'"/>
> </divert>
> {code}
> 1b) Same situation for:
> {code:java}
> <addresses xmlns="urn:activemq:core">
>     <address name="activemq.notifications">
>         <anycast>
>             <queue name="jms.consumer.notifications">
>                 <durable>true</durable>
>                 <filter string="_AMQ_NotifType = 'CONSUMER_CREATED' OR 
> _AMQ_NotifType = 'CONSUMER_CLOSED'"/>
>             </queue>
>         </anycast>
>     </address>
> </addresses>
> {code}
> 2) Consume those messages with a MDB
> {code:java}
> @MessageDriven(
>         name = "Notification_Subber",
>         activationConfig = {
>                 @ActivationConfigProperty(propertyName = "destination", 
> propertyValue = "jms.consumer.notifications"),
>                 @ActivationConfigProperty(propertyName = "destinationType", 
> propertyValue = "javax.jms.Topic"),
>                 @ActivationConfigProperty(propertyName = "useJndi", 
> propertyValue = "false"),
>         }
> )
> public class NotificationMDB implements MessageListener {
>   public void onMessage(Message message) {
>     // Log message here
>     // The message is missing all properties as documented in 
> https://activemq.apache.org/components/artemis/documentation/latest/management.html
>   }
> }
> {code}
> h3. Expected Behavior
> I would expect the same messages that are consumed as follows:
> {code:java}
> @MessageDriven(
>         name = "Notification_Subber",
>         activationConfig = {
>                 @ActivationConfigProperty(propertyName = "destination", 
> propertyValue = "activemq.notifications"),
>                 @ActivationConfigProperty(propertyName = "destinationType", 
> propertyValue = "javax.jms.Topic"),
>                 @ActivationConfigProperty(propertyName = "useJndi", 
> propertyValue = "false"),
>                 @ActivationConfigProperty(propertyName = 
> "messageSelector",propertyValue = "_AMQ_NotifType = 'CONSUMER_CREATED' OR 
> _AMQ_NotifType = 'CONSUMER_CLOSED'"
>         }
> )
> public class NotificationMDB implements MessageListener {
>   public void onMessage(Message message) {
>     // Log message here
>     // This one actually returns all properties 
>   }
> }
> {code}
> h3. Current behavior
> I guess that the filter includes some kind of message-copy workflow which 
> removes all those properties?
> During this copy process, all properties starting with "_" will be deleted.
> h3. Workaround
> Right now, the only workaround for this issue is a custom transformer, which 
> does the following:
> {code:java}
> public class NotificationsTransformer implements Transformer {
>     private static final Logger log = 
> Logger.getLogger(NotificationsTransformer.class.getName());
>     
>     public Message transform(Message message) {
>         try {
>             log.finest(String.format("Transform CoreMessage: %s", 
> message.toString()));
>             message.putStringProperty("event_timestamp", 
> message.getStringProperty("_AMQ_NotifTimestamp"));
>             message.putStringProperty("address_name", 
> message.getStringProperty("_AMQ_Address"));
>             message.putStringProperty("event_type", 
> message.getStringProperty("_AMQ_NotifType"));
>             message.putStringProperty("queue_name", 
> message.getStringProperty("_AMQ_RoutingName"));
>         } catch (Exception e) {
>             log.warning(String.format("Failed to transform message: %s", 
> e.getMessage()));
>         }
>         return message;
>     }
> }
> {code}
> h3. Steps to achieve victory
> (x) Find the errorneous message copy
> (x) Forward all message properties



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to