CtrlK
BlogDocsLog inGet started
Tessl Logo

giuseppe-trisciuoglio/developer-kit

Comprehensive developer toolkit providing reusable skills for Java/Spring Boot, TypeScript/NestJS/React/Next.js, Python, PHP, AWS CloudFormation, AI/RAG, DevOps, and more.

82

Quality

82%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Risky

Do not use without reviewing

Validation failed for skills in this tile
One or more skills have errors that need to be fixed before they can move to Implementation and Discovery review.
Overview
Quality
Evals
Security
Files

detailed-sns-operations.mdplugins/developer-kit-java/skills/aws-sdk-java-v2-messaging/references/

Detailed SNS Operations Reference

Topic Management

Create Standard Topic

public String createTopic(SnsClient snsClient, String topicName) {
    CreateTopicRequest request = CreateTopicRequest.builder()
        .name(topicName)
        .build();

    CreateTopicResponse response = snsClient.createTopic(request);
    return response.topicArn();
}

Create FIFO Topic

public String createFifoTopic(SnsClient snsClient, String topicName) {
    Map<String, String> attributes = new HashMap<>();
    attributes.put("FifoTopic", "true");
    attributes.put("ContentBasedDeduplication", "true");

    CreateTopicRequest request = CreateTopicRequest.builder()
        .name(topicName + ".fifo")
        .attributes(attributes)
        .build();

    CreateTopicResponse response = snsClient.createTopic(request);
    return response.topicArn();
}

Topic Operations

public List<Topic> listTopics(SnsClient snsClient) {
    return snsClient.listTopics().topics();
}

public String getTopicArn(SnsClient snsClient, String topicName) {
    return snsClient.createTopic(CreateTopicRequest.builder()
        .name(topicName)
        .build()).topicArn();
}

Message Publishing

Publish Basic Message

public String publishMessage(SnsClient snsClient, String topicArn, String message) {
    PublishRequest request = PublishRequest.builder()
        .topicArn(topicArn)
        .message(message)
        .build();

    PublishResponse response = snsClient.publish(request);
    return response.messageId();
}

Publish with Subject

public String publishMessageWithSubject(SnsClient snsClient,
                                        String topicArn,
                                        String subject,
                                        String message) {
    PublishRequest request = PublishRequest.builder()
        .topicArn(topicArn)
        .subject(subject)
        .message(message)
        .build();

    PublishResponse response = snsClient.publish(request);
    return response.messageId();
}

Publish with Attributes

public String publishMessageWithAttributes(SnsClient snsClient,
                                           String topicArn,
                                           String message,
                                           Map<String, String> attributes) {
    Map<String, MessageAttributeValue> messageAttributes = attributes.entrySet().stream()
        .collect(Collectors.toMap(
            Map.Entry::getKey,
            e -> MessageAttributeValue.builder()
                .dataType("String")
                .stringValue(e.getValue())
                .build()));

    PublishRequest request = PublishRequest.builder()
        .topicArn(topicArn)
        .message(message)
        .messageAttributes(messageAttributes)
        .build();

    PublishResponse response = snsClient.publish(request);
    return response.messageId();
}

Publish FIFO Message

public String publishFifoMessage(SnsClient snsClient,
                                 String topicArn,
                                 String message,
                                 String messageGroupId) {
    PublishRequest request = PublishRequest.builder()
        .topicArn(topicArn)
        .message(message)
        .messageGroupId(messageGroupId)
        .messageDeduplicationId(UUID.randomUUID().toString())
        .build();

    PublishResponse response = snsClient.publish(request);
    return response.messageId();
}

Subscription Management

Subscribe Email to Topic

public String subscribeEmail(SnsClient snsClient, String topicArn, String email) {
    SubscribeRequest request = SubscribeRequest.builder()
        .protocol("email")
        .endpoint(email)
        .topicArn(topicArn)
        .build();

    SubscribeResponse response = snsClient.subscribe(request);
    return response.subscriptionArn();
}

Subscribe SQS to Topic

public String subscribeSqs(SnsClient snsClient, String topicArn, String queueArn) {
    SubscribeRequest request = SubscribeRequest.builder()
        .protocol("sqs")
        .endpoint(queueArn)
        .topicArn(topicArn)
        .build();

    SubscribeResponse response = snsClient.subscribe(request);
    return response.subscriptionArn();
}

Subscribe Lambda to Topic

public String subscribeLambda(SnsClient snsClient, String topicArn, String lambdaArn) {
    SubscribeRequest request = SubscribeRequest.builder()
        .protocol("lambda")
        .endpoint(lambdaArn)
        .topicArn(topicArn)
        .build();

    SubscribeResponse response = snsClient.subscribe(request);
    return response.subscriptionArn();
}

Subscription Operations

public List<Subscription> listSubscriptions(SnsClient snsClient, String topicArn) {
    return snsClient.listSubscriptionsByTopic(ListSubscriptionsByTopicRequest.builder()
        .topicArn(topicArn)
        .build()).subscriptions();
}

public void unsubscribe(SnsClient snsClient, String subscriptionArn) {
    snsClient.unsubscribe(UnsubscribeRequest.builder()
        .subscriptionArn(subscriptionArn)
        .build());
}

plugins

developer-kit-java

skills

README.md

tile.json