View Javadoc

1   package com.atlassian.messagequeue.internal.core.messagevalidators;
2   
3   import com.atlassian.messagequeue.registry.MessageValidator;
4   import com.atlassian.messagequeue.internal.core.NestedMessageConstants;
5   import com.atlassian.messagequeue.registry.MessageContext;
6   import org.slf4j.Logger;
7   import org.slf4j.LoggerFactory;
8   
9   import java.util.Map;
10  
11  /**
12   * Ensures that every message has a message runner key.
13   */
14  public class MessageRunnerKeyValidator implements MessageValidator {
15      private static final Logger log = LoggerFactory.getLogger(MessageRunnerKeyValidator.class);
16  
17      @Override
18      public boolean isValid(MessageContext messageContext, Map<String, String> messageAttributes) {
19          return messageAttributes.get(NestedMessageConstants.MESSAGE_RUNNER_KEY_ATTRIBUTE_NAME) != null;
20      }
21  
22      @Override
23      public void handleInvalidMessage(MessageContext messageContext, Map<String, String> messageAttributes) {
24          final String messageId = messageContext.getMessageId().orElse("Not present");
25          log.error("Message received that does not contain required '{}' attribute. Message will be acknowledged (messageID: {})", NestedMessageConstants.MESSAGE_RUNNER_KEY_ATTRIBUTE_NAME, messageId);
26          messageContext.acknowledge();
27      }
28  }