public Optional<HttpAuthorizationProvider> create(Subscription subscription) { if(subscription.getEndpoint().containsCredentials()) { return Optional.of(new BasicAuthProvider(subscription.getEndpoint())); } else if (subscription.hasOAuthPolicy()) { return Optional.of(new OAuthHttpAuthorizationProvider(subscription.getQualifiedName(), accessTokens)); } return Optional.empty(); }
@Override public MessageSender create(Subscription subscription) { EndpointAddress endpoint = subscription.getEndpoint(); EndpointAddressResolverMetadata endpointAddressResolverMetadata = subscription.getEndpointAddressResolverMetadata(); ResolvableEndpointAddress resolvableEndpoint = new ResolvableEndpointAddress(endpoint, endpointAddressResolver, endpointAddressResolverMetadata); HttpRequestFactory requestFactory = httpRequestFactory(subscription); if (subscription.getMode() == SubscriptionMode.BROADCAST) { return new JettyBroadCastMessageSender(requestFactory, resolvableEndpoint); } else { return new JettyMessageSender(requestFactory, resolvableEndpoint); } }
@Override public MessageSender create(Subscription subscription) { EndpointAddress endpoint = subscription.getEndpoint(); EndpointAddressResolverMetadata endpointAddressResolverMetadata = subscription.getEndpointAddressResolverMetadata(); ResolvableEndpointAddress resolvableEndpoint = new ResolvableEndpointAddress(endpoint, endpointAddressResolver, endpointAddressResolverMetadata); HttpRequestFactory requestFactory = httpRequestFactory(subscription); if (subscription.getMode() == SubscriptionMode.BROADCAST) { return new JettyBroadCastMessageSender(requestFactory, resolvableEndpoint); } else { return new JettyMessageSender(requestFactory, resolvableEndpoint); } }
public Optional<HttpAuthorizationProvider> create(Subscription subscription) { if(subscription.getEndpoint().containsCredentials()) { return Optional.of(new BasicAuthProvider(subscription.getEndpoint())); } else if (subscription.hasOAuthPolicy()) { return Optional.of(new OAuthHttpAuthorizationProvider(subscription.getQualifiedName(), accessTokens)); } return Optional.empty(); }
private void deliver(Runnable signalsInterrupt, MessageBatch batch, Retryer<MessageSendingResult> retryer) { try (Timer.Context timer = hermesMetrics.subscriptionLatencyTimer(subscription).time()) { retryer.call(() -> { signalsInterrupt.run(); return sender.send( batch, subscription.getEndpoint(), subscription.getEndpointAddressResolverMetadata(), subscription.getBatchSubscriptionPolicy().getRequestTimeout() ); }); } catch (Exception e) { logger.error("Batch was rejected [batch_id={}, subscription={}].", batch.getId(), subscription.getQualifiedName(), e); monitoring.markDiscarded(batch, subscription, e.getMessage()); } }
public MessageSender create(Subscription subscription) { EndpointAddress endpoint = subscription.getEndpoint(); ProtocolMessageSenderProvider provider = protocolProviders.get(endpoint.getProtocol()); if (provider == null) { throw new EndpointProtocolNotSupportedException(endpoint); } return provider.create(subscription); }
public void updateSubscription(Subscription newSubscription) { boolean endpointUpdated = !this.subscription.getEndpoint().equals(newSubscription.getEndpoint()); boolean subscriptionPolicyUpdated = !Objects.equals( this.subscription.getSerialSubscriptionPolicy(), newSubscription.getSerialSubscriptionPolicy() ); boolean endpointAddressResolverMetadataChanged = !Objects.equals( this.subscription.getEndpointAddressResolverMetadata(), newSubscription.getEndpointAddressResolverMetadata() ); boolean oAuthPolicyChanged = !Objects.equals( this.subscription.getOAuthPolicy(), newSubscription.getOAuthPolicy() ); this.subscription = newSubscription; this.requestTimeoutMs = newSubscription.getSerialSubscriptionPolicy().getRequestTimeout(); boolean httpClientChanged = this.subscription.isHttp2Enabled() != newSubscription.isHttp2Enabled(); if (endpointUpdated || subscriptionPolicyUpdated || endpointAddressResolverMetadataChanged || oAuthPolicyChanged || httpClientChanged) { this.messageSender = messageSenderFactory.create(newSubscription); } }
public MessageSender create(Subscription subscription) { EndpointAddress endpoint = subscription.getEndpoint(); ProtocolMessageSenderProvider provider = protocolProviders.get(endpoint.getProtocol()); if (provider == null) { throw new EndpointProtocolNotSupportedException(endpoint); } return provider.create(subscription); }
private void deliver(Runnable signalsInterrupt, MessageBatch batch, Retryer<MessageSendingResult> retryer) { try (Timer.Context timer = hermesMetrics.subscriptionLatencyTimer(subscription).time()) { retryer.call(() -> { signalsInterrupt.run(); return sender.send( batch, subscription.getEndpoint(), subscription.getEndpointAddressResolverMetadata(), subscription.getBatchSubscriptionPolicy().getRequestTimeout() ); }); } catch (Exception e) { logger.error("Batch was rejected [batch_id={}, subscription={}].", batch.getId(), subscription.getQualifiedName(), e); monitoring.markDiscarded(batch, subscription, e.getMessage()); } }
@Override public MessageBatchSender create(Subscription subscription) { checkState(subscription.getEndpoint().getProtocol().contains("http"), "Batching is only supported for http/s currently."); return new ApacheHttpClientMessageBatchSender( configFactory.getIntProperty(Configs.CONSUMER_BATCH_CONNECTION_TIMEOUT), configFactory.getIntProperty(Configs.CONSUMER_BATCH_SOCKET_TIMEOUT), new SimpleEndpointAddressResolver()); } }
public void updateSubscription(Subscription newSubscription) { boolean endpointUpdated = !this.subscription.getEndpoint().equals(newSubscription.getEndpoint()); boolean subscriptionPolicyUpdated = !Objects.equals( this.subscription.getSerialSubscriptionPolicy(), newSubscription.getSerialSubscriptionPolicy() ); boolean endpointAddressResolverMetadataChanged = !Objects.equals( this.subscription.getEndpointAddressResolverMetadata(), newSubscription.getEndpointAddressResolverMetadata() ); boolean oAuthPolicyChanged = !Objects.equals( this.subscription.getOAuthPolicy(), newSubscription.getOAuthPolicy() ); this.subscription = newSubscription; this.requestTimeoutMs = newSubscription.getSerialSubscriptionPolicy().getRequestTimeout(); boolean httpClientChanged = this.subscription.isHttp2Enabled() != newSubscription.isHttp2Enabled(); if (endpointUpdated || subscriptionPolicyUpdated || endpointAddressResolverMetadataChanged || oAuthPolicyChanged || httpClientChanged) { this.messageSender = messageSenderFactory.create(newSubscription); } }
@Override public MessageBatchSender create(Subscription subscription) { checkState(subscription.getEndpoint().getProtocol().contains("http"), "Batching is only supported for http/s currently."); return new ApacheHttpClientMessageBatchSender( configFactory.getIntProperty(Configs.CONSUMER_BATCH_CONNECTION_TIMEOUT), configFactory.getIntProperty(Configs.CONSUMER_BATCH_SOCKET_TIMEOUT), new SimpleEndpointAddressResolver()); } }
@Test public void shouldDeserializeSubscriptionWithoutTopicName() throws Exception { // given String json = "{\"name\": \"test\", \"endpoint\": \"http://localhost:8888\"}"; // when Subscription subscription = mapper.readValue(json, Subscription.class); // then assertThat(subscription.getName()).isEqualTo("test"); assertThat(subscription.getEndpoint().getEndpoint()).isEqualTo("http://localhost:8888"); }
@Test public void shouldDeserializeSubscription() throws Exception { // given String json = "{" + "\"name\": \"test\", " + "\"topicName\": \"g1.t1\", " + "\"endpoint\": \"http://localhost:8888\"" + "}"; // when Subscription subscription = mapper.readValue(json, Subscription.class); // then assertThat(subscription.getName()).isEqualTo("test"); assertThat(subscription.getEndpoint().getEndpoint()).isEqualTo("http://localhost:8888"); }
@Override public Subscription anonymize() { if (getEndpoint().containsCredentials() || hasOAuthPolicy()) { return new Subscription( topicName, name, endpoint.anonymize(), state, description, deliveryType == DeliveryType.BATCH ? batchSubscriptionPolicy : serialSubscriptionPolicy, trackingEnabled, trackingMode, owner, supportTeam, monitoringDetails, contentType, deliveryType, filters, mode, headers, endpointAddressResolverMetadata, oAuthPolicy != null ? oAuthPolicy.anonymize() : null, http2Enabled ); } return this; }
@Override public MessageSender create(Subscription subscription) { EndpointAddress endpoint = subscription.getEndpoint(); URI uri = endpoint.getUri(); ConnectionFactory connectionFactory = getConnectionFactory(uri); JMSContext jmsContext = connectionFactory.createContext( endpoint.getUsername(), endpoint.getPassword() ); return new JmsMessageSender(jmsContext, extractTopicName(uri), metadataAppender); }
@Override public MessageSender create(Subscription subscription) { EndpointAddress endpoint = subscription.getEndpoint(); URI uri = endpoint.getUri(); ConnectionFactory connectionFactory = getConnectionFactory(uri); JMSContext jmsContext = connectionFactory.createContext( endpoint.getUsername(), endpoint.getPassword() ); return new JmsMessageSender(jmsContext, extractTopicName(uri), metadataAppender); }
@Test public void shouldAnonymizePassword() { // given Subscription subscription = subscription("group.topic", "subscription").withEndpoint("http://user:password@service/path").build(); // when & then assertThat(subscription.anonymize().getEndpoint()).isEqualTo(new EndpointAddress("http://user:*****@service/path")); }