Examples of SubscribeRequest


Examples of com.amazonaws.services.sns.model.SubscribeRequest

    String id = rand.nextLong() + "";
   
    String rawEndPointUrl = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "recv/" + id;
    String rawEndPointLastMessageUrl = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "info/" + id + "?showLast=true";
   
    SubscribeRequest rawEndPointSubscribeRequest = new SubscribeRequest();
    rawEndPointSubscribeRequest.setEndpoint(rawEndPointUrl);
    rawEndPointSubscribeRequest.setProtocol("http");
    rawEndPointSubscribeRequest.setTopicArn(topicArn);
    SubscribeResult subscribeResult = cns1.subscribe(rawEndPointSubscribeRequest);
    String rawEndPointsubscriptionArn = subscribeResult.getSubscriptionArn();
   
    if (rawEndPointsubscriptionArn.equals("pending confirmation")) {
     
      Thread.sleep(500);       
      String response = CNSTestingUtils.sendHttpMessage(rawEndPointLastMessageUrl, "");
      logger.info(response);
      JSONObject o = new JSONObject(response);
      if (!o.has("SubscribeURL")) {
        throw new Exception("message is not a confirmation messsage");
      }
      String subscriptionUrl = o.getString("SubscribeURL");
      response = CNSTestingUtils.sendHttpMessage(subscriptionUrl, "");
     
      String startTag = "<SubscriptionArn>";
      String endTag = "</SubscriptionArn>";
      int startIndex = response.indexOf(startTag);
      int endIndex = response.indexOf(endTag);
      String subArn = response.substring(startIndex + startTag.length(), endIndex);
      if (subArn != null && !subArn.isEmpty()) {
        rawEndPointsubscriptionArn = subArn;
      }
      logger.info("Raw-message EndPoint subscription Arn after confirmation: " + rawEndPointsubscriptionArn);
    }
   
    // set subscription attribute for raw message delivery
   
    Boolean rawMessageDelivery = true;
    try {
      SetSubscriptionAttributesRequest setSubscriptionAttributesRequest = new SetSubscriptionAttributesRequest(rawEndPointsubscriptionArn, "RawMessageDelivery", rawMessageDelivery.toString());
      cns1.setSubscriptionAttributes(setSubscriptionAttributesRequest);
     
      Map<String, String> attributes = null;
      GetSubscriptionAttributesRequest getSubscriptionAttributesRequest = new GetSubscriptionAttributesRequest(rawEndPointsubscriptionArn);
      GetSubscriptionAttributesResult getSubscriptionAttributesResult = cns1.getSubscriptionAttributes(getSubscriptionAttributesRequest);
      attributes = getSubscriptionAttributesResult.getAttributes();
      String rawMessageDeliveryStr = attributes.get("RawMessageDelivery");
      if (rawMessageDeliveryStr != null && !rawMessageDeliveryStr.isEmpty()) {
        rawMessageDelivery = Boolean.parseBoolean(rawMessageDeliveryStr);
        assertTrue("Set raw message delivery successful", rawMessageDelivery);
      } else {
        fail("no raw message delivery flag found");
      }
      logger.info("Raw Message Delivery attribute:" + rawMessageDeliveryStr);
    } catch (Exception ex) {
      throw new Exception("Can't set raw message delivery attribute to subscription arn " + rawEndPointsubscriptionArn);
    }
   
    // subscribe and confirm http endpoint to receive JSON message
    id = rand.nextLong() + "";
    String jsonEndPointUrl = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "recv/" + id;
    String jsonEndPointLastMessageUrl = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "info/" + id + "?showLast=true";
   
    SubscribeRequest jsonEndPointSubscribeRequest = new SubscribeRequest();
    jsonEndPointSubscribeRequest.setEndpoint(jsonEndPointUrl);
    jsonEndPointSubscribeRequest.setProtocol("http");
    jsonEndPointSubscribeRequest.setTopicArn(topicArn);
    SubscribeResult jsonSubscribeResult = cns1.subscribe(jsonEndPointSubscribeRequest);
    String jsonEndPointsubscriptionArn = jsonSubscribeResult.getSubscriptionArn();
    logger.info("JSON EndPoint subscription arn:" + jsonEndPointsubscriptionArn);
   
    if (jsonEndPointsubscriptionArn.equals("pending confirmation")) {
View Full Code Here

Examples of com.amazonaws.services.sns.model.SubscribeRequest

        }
      }
    }
    if (snsUrlSubscriptionArn == null) {

      SubscribeRequest request = new SubscribeRequest(topicArn,
          urlSubscription.getProtocol(),
          urlSubscription.getEndpoint());
      SubscribeResult result = client.subscribe(request);
      snsUrlSubscriptionArn = result.getSubscriptionArn();
      log.info("Subscribed URL to SNS with subscription ARN: "
View Full Code Here

Examples of com.amazonaws.services.sns.model.SubscribeRequest

        snsSqsSubscriptionArn = subscription.getSubscriptionArn();
        break;
      }
    }
    if (snsSqsSubscriptionArn == null) {
      SubscribeRequest request = new SubscribeRequest(topicArn,
          sqsSubscription.getProtocol(),
          sqsSubscription.getEndpoint());
      SubscribeResult result = client.subscribe(request);
      snsSqsSubscriptionArn = result.getSubscriptionArn();
      log.info("Subscribed SQS to SNS with subscription ARN: "
View Full Code Here

Examples of com.amazonaws.services.sns.model.SubscribeRequest

                    .withActions(SQSActions.SendMessage)
                    .withResources(new Resource(queueARN))
                    .withConditions(ConditionFactory.newSourceArnCondition(topicArn)));
        sqs.setQueueAttributes(new SetQueueAttributesRequest(queueUrl, newAttributes("Policy", sqsPolicy.toJson())));

        sns.subscribe(new SubscribeRequest(topicArn, "sqs", queueARN));
    }
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest

        ByteString sub1 = ByteString.copyFromUtf8("sub1");

        //
        // No topics acquired.
        //
        SubscribeRequest subRequest = SubscribeRequest.newBuilder().setSubscriberId(sub1).build();
        MessageSeqId msgId = MessageSeqId.newBuilder().setLocalComponent(100).build();

        sm.serveSubscribeRequest(topic1, subRequest, msgId, msgIdCallback, null);

        Assert.assertEquals(ConcurrencyUtils.take(msgIdCallbackQueue).right().getClass(),
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest

            channel.write(PubSubResponseUtils.getResponseForException(e, request.getTxnId())).addListener(
                ChannelFutureListener.CLOSE);
            return;
        }

        final SubscribeRequest subRequest = request.getSubscribeRequest();
        final ByteString subscriberId = subRequest.getSubscriberId();

        MessageSeqId lastSeqIdPublished = MessageSeqId.newBuilder(seqId).setLocalComponent(seqId.getLocalComponent()).build();

        subMgr.serveSubscribeRequest(topic, subRequest, lastSeqIdPublished, new Callback<MessageSeqId>() {

            @Override
            public void operationFailed(Object ctx, PubSubException exception) {
                channel.write(PubSubResponseUtils.getResponseForException(exception, request.getTxnId())).addListener(
                    ChannelFutureListener.CLOSE);
            }

            @Override
            public void operationFinished(Object ctx, MessageSeqId resultOfOperation) {

                TopicSubscriber topicSub = new TopicSubscriber(topic, subscriberId);

                // race with channel getting disconnected while we are adding it
                // to the 2 maps
                synchronized (channel) {
                    if (!channel.isConnected()) {
                        // channel got disconnected while we were processing the
                        // subscribe request,
                        // nothing much we can do in this case
                        return;
                    }

                    if (null != sub2Channel.putIfAbsent(topicSub, channel)) {
                        // there was another channel mapped to this sub
                        PubSubException pse = new PubSubException.TopicBusyException(
                            "subscription for this topic, subscriberId is already being served on a different channel");
                        channel.write(PubSubResponseUtils.getResponseForException(pse, request.getTxnId()))
                        .addListener(ChannelFutureListener.CLOSE);
                        return;
                    } else {
                        // channel2sub is just a cache, so we can add to it
                        // without synchronization
                        channel2sub.put(channel, topicSub);
                    }
                }
                // First write success and then tell the delivery manager,
                // otherwise the first message might go out before the response
                // to the subscribe
                channel.write(PubSubResponseUtils.getSuccessResponse(request.getTxnId()));

                // want to start 1 ahead of the consume ptr
                MessageSeqId seqIdToStartFrom = MessageSeqId.newBuilder(resultOfOperation).setLocalComponent(
                                                    resultOfOperation.getLocalComponent() + 1).build();
                deliveryMgr.startServingSubscription(topic, subscriberId, seqIdToStartFrom,
                                                     new ChannelEndPoint(channel), TrueFilter.instance(), SubscriptionStateUtils
                                                     .isHubSubscriber(subRequest.getSubscriberId()));
            }
        }, null);

    }
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest

        sm.acquiredTopic(topic, voidCb, null);
        voidResult = ConcurrencyUtils.take(voidCb.queue);
        assertNull(voidResult.right()); // no exception

        // Do subscription
        SubscribeRequest subRequest = SubscribeRequest.newBuilder().setSubscriberId(subscriberId)
                .setCreateOrAttach(CreateOrAttach.CREATE_OR_ATTACH).build();
        sm.serveSubscribeRequest(topic, subRequest, MessageSeqId.newBuilder().setLocalComponent(0).build(), subDataCb,
                null);
        subDataResult = ConcurrencyUtils.take(subDataCb.queue);
        assertNotNull(subDataResult.left()); // serveSubscribeRequest success
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest

        ByteString sub1 = ByteString.copyFromUtf8("sub1");

        //
        // No topics acquired.
        //
        SubscribeRequest subRequest = SubscribeRequest.newBuilder().setSubscriberId(sub1).build();
        MessageSeqId msgId = MessageSeqId.newBuilder().setLocalComponent(100).build();

        sm.serveSubscribeRequest(topic1, subRequest, msgId, msgIdCallback, null);

        Assert.assertEquals(ConcurrencyUtils.take(msgIdCallbackQueue).right().getClass(),
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest

        sm.acquiredTopic(topic, voidCb, null);
        voidResult = ConcurrencyUtils.take(voidCb.queue);
        assertNull(voidResult.right()); // no exception

        // Do subscription
        SubscribeRequest subRequest = SubscribeRequest.newBuilder().setSubscriberId(subscriberId)
                .setCreateOrAttach(CreateOrAttach.CREATE_OR_ATTACH).build();
        sm.serveSubscribeRequest(topic, subRequest, MessageSeqId.newBuilder().setLocalComponent(0).build(), subDataCb,
                null);
        subDataResult = ConcurrencyUtils.take(subDataCb.queue);
        assertNotNull(subDataResult.left()); // serveSubscribeRequest success
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest

            subStats.incrementFailedOps();
            ServerStats.getInstance().incrementRequestsRedirect();
            return;
        }

        final SubscribeRequest subRequest = request.getSubscribeRequest();
        final ByteString subscriberId = subRequest.getSubscriberId();

        MessageSeqId lastSeqIdPublished = MessageSeqId.newBuilder(seqId).setLocalComponent(seqId.getLocalComponent()).build();

        final long requestTime = MathUtils.now();
        subMgr.serveSubscribeRequest(topic, subRequest, lastSeqIdPublished, new Callback<SubscriptionData>() {

            @Override
            public void operationFailed(Object ctx, PubSubException exception) {
                channel.write(PubSubResponseUtils.getResponseForException(exception, request.getTxnId())).addListener(
                    ChannelFutureListener.CLOSE);
                logger.error("Error serving subscribe request (" + request.getTxnId() + ") for (topic: "
                           + topic.toStringUtf8() + " , subscriber: " + subscriberId.toStringUtf8() + ")", exception);
                subStats.incrementFailedOps();
            }

            @Override
            public void operationFinished(Object ctx, final SubscriptionData subData) {

                TopicSubscriber topicSub = new TopicSubscriber(topic, subscriberId);
                synchronized (channel) {
                    if (!channel.isConnected()) {
                        // channel got disconnected while we were processing the
                        // subscribe request,
                        // nothing much we can do in this case
                        subStats.incrementFailedOps();
                        return;
                    }
                }
                // initialize the message filter
                PipelineFilter filter = new PipelineFilter();
                try {
                    // the filter pipeline should be
                    // 1) AllToAllTopologyFilter to filter cross-region messages
                    filter.addLast(new AllToAllTopologyFilter());
                    // 2) User-Customized MessageFilter
                    if (subData.hasPreferences() &&
                        subData.getPreferences().hasMessageFilter()) {
                        String messageFilterName = subData.getPreferences().getMessageFilter();
                        filter.addLast(ReflectionUtils.newInstance(messageFilterName, ServerMessageFilter.class));
                    }
                    // initialize the filter
                    filter.initialize(cfg.getConf());
                    filter.setSubscriptionPreferences(topic, subscriberId,
                                                      subData.getPreferences());
                } catch (RuntimeException re) {
                    String errMsg = "RuntimeException caught when instantiating message filter for (topic:"
                                  + topic.toStringUtf8() + ", subscriber:" + subscriberId.toStringUtf8() + ")."
                                  + "It might be introduced by programming error in message filter.";
                    logger.error(errMsg, re);
                    PubSubException pse = new PubSubException.InvalidMessageFilterException(errMsg, re);
                    subStats.incrementFailedOps();
                    // we should not close the subscription channel, just response error
                    // client decide to close it or not.
                    channel.write(PubSubResponseUtils.getResponseForException(pse, request.getTxnId()));
                    return;
                } catch (Throwable t) {
                    String errMsg = "Failed to instantiate message filter for (topic:" + topic.toStringUtf8()
                                  + ", subscriber:" + subscriberId.toStringUtf8() + ").";
                    logger.error(errMsg, t);
                    PubSubException pse = new PubSubException.InvalidMessageFilterException(errMsg, t);
                    subStats.incrementFailedOps();
                    channel.write(PubSubResponseUtils.getResponseForException(pse, request.getTxnId()))
                    .addListener(ChannelFutureListener.CLOSE);
                    return;
                }
                boolean forceAttach = false;
                if (subRequest.hasForceAttach()) {
                    forceAttach = subRequest.getForceAttach();
                }
                // Try to store the subscription channel for the topic subscriber
                Channel oldChannel = subChannelMgr.put(topicSub, channel, forceAttach);
                if (null != oldChannel) {
                    PubSubException pse = new PubSubException.TopicBusyException(
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.