View Javadoc

1   package com.atlassian.messagequeue.internal.sqs;
2   
3   import com.atlassian.messagequeue.MessageRunnerKey;
4   import com.atlassian.messagequeue.TenantDataIdSupplier;
5   import com.atlassian.messagequeue.internal.core.DefaultMessageInformationService;
6   import com.atlassian.messagequeue.internal.core.NestedMessageSerializer;
7   import com.atlassian.tenant.api.TenantContextProvider;
8   
9   import static java.util.Objects.requireNonNull;
10  
11  /**
12   * SQS variant of {@link DefaultMessageInformationService}. This provides a method to obtain SQS queue URLs
13   * @since 2.1.0
14   */
15  public class SQSMessageInformationService extends DefaultMessageInformationService {
16      private final SQSMessageRunnerKeyToProducerMapper messageRunnerKeyToProducerMapper;
17  
18      /**
19       * @param messageRunnerKeyToProducerMapper mapping from messageRunnerKey to queue config
20       * @param tenantContextProvider   the tenant context provider
21       * @param nestedMessageSerializer the nested message serializer
22       * @param tenantDataIdSupplier    the tenant data id supplier
23       */
24      public SQSMessageInformationService(SQSMessageRunnerKeyToProducerMapper messageRunnerKeyToProducerMapper, TenantContextProvider tenantContextProvider, NestedMessageSerializer nestedMessageSerializer, TenantDataIdSupplier tenantDataIdSupplier) {
25          super("", tenantContextProvider, nestedMessageSerializer, tenantDataIdSupplier);
26          this.messageRunnerKeyToProducerMapper = requireNonNull(messageRunnerKeyToProducerMapper);
27      }
28  
29      @Override
30      public String getQueueUrl(MessageRunnerKey messageRunnerKey) {
31          return messageRunnerKeyToProducerMapper.getQueueConfigForMessageRunner(messageRunnerKey).getQueueUrl();
32      }
33  }