`
sillycat
  • 浏览: 2542353 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SNS Producer in Java in Old Project

 
阅读更多
SNS Producer in Java in Old Project


In one Old Java Project, I need to send events to SNS in AWS. Here is how I did that>
Here is the package I need to put in dependencies.
Lib/aws-java-sdk-1.11.515.jar
Lib/aws-java-sdk-sns-1.11.515.jar
Lib/aws-java-sdk-core-1.11.515.jar
Lib/jackson-databind-2.6.6.jar
Lib/jackson-core-2.6.6.jar
Lib/jackson-annotations-2.6.6.jar
Lib/joda-time-2.10.jar
This is the major class I need
package com.sillycat.masterserver.engine.notification;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.sns.AmazonSNS;
import com.amazonaws.services.sns.AmazonSNSClientBuilder;
import com.amazonaws.services.sns.model.CreateTopicResult;
import com.amazonaws.services.sns.model.PublishRequest;
import com.amazonaws.util.StringUtils;
import com.google.gson.Gson;
import com.sillycat.masterserver.common.log.MasterServerLogger;
import com.sillycat.masterserver.common.log.MasterServerLogger.MMSLogLevel;
import com.sillycat.masterserver.common.utils.LoggerUtils;
public class EventBusNotificationManager {
    static String ACCESS_KEY = "AWS_ACCESS_KEY";
    static String SECRET_KEY = "AWS_SECRET_KEY";
    static String REGION = "AWS_REGION";
    static String TOPIC = "AWS_EVENTBUS_TOPIC";
    static AmazonSNS client = null;
    static String topicArn = null;
    private static void init() {
        String accessKey = System.getenv(ACCESS_KEY);
        String secretKey = System.getenv(SECRET_KEY);
        String region = System.getenv(REGION);
        String topic = System.getenv(TOPIC);
        if (StringUtils.isNullOrEmpty(accessKey) || StringUtils.isNullOrEmpty(secretKey)
                || StringUtils.isNullOrEmpty(region) || StringUtils.isNullOrEmpty(topic)) {
            MasterServerLogger.log(MMSLogLevel.ERROR, "EventBusNotificationManager configuration error [" + "accessKey="
                    + accessKey + " secretKey = " + secretKey + " region = " + region + " topic = " + topic + "] ");
            return ;
        }
        BasicAWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
        client = AmazonSNSClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds))
                .withRegion(region).build();
        CreateTopicResult createTopicResponse = client.createTopic(topic);
        topicArn = createTopicResponse.getTopicArn();
        if (StringUtils.isNullOrEmpty(topicArn)) {
            MasterServerLogger.log(MMSLogLevel.ERROR, "EventBusNotificationManager connection error ["
                    + LoggerUtils.logClass(createTopicResponse) + "] ");
        }
    }
    public static void sendMessage(Object msg) {
        if (client == null || topicArn == null) {
            init();
            if(client == null) {
                MasterServerLogger.log(MMSLogLevel.ERROR, "Fail to init connection with AWS SNS, give up, do not break the flow.");
                return ;
            }
        }
        String jsonMsg = convertToJSON(msg);
        final PublishRequest publishRequest = new PublishRequest().withMessage(jsonMsg).withTargetArn(topicArn);
        client.publish(publishRequest);
    }
    private static String convertToJSON(Object obj) {
        return new Gson().toJson(obj);
    }
}
EventBusMessage is just a POJO.
Here is the System Settings
export AWS_ACCESS_KEY=AKIxxxxxxxx
export AWS_SECRET_KEY=P3o3xxxxxxxxx
export AWS_REGION=us-west-1
export AWS_EVENTBUS_TOPIC=topicName-in-SNS

References:
https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-publish-message-to-topic.html#publish-message-to-topic-aws-java
https://stackoverflow.com/questions/31466916/sending-sms-from-java-web-app-using-aws-sns
https://www.example-code.com/java/sns_publish_send_message.asp
https://github.com/mfine/AmazonSNSExample/blob/master/AmazonSNSSender.java
https://github.com/Cs4r/SNS-producer-SQS-consumer
分享到:
评论

相关推荐

    producer-java.rar_java 生产者 消费者_java 生产者消费者_producer.java_生产者 消费者

    在提供的压缩包文件中,`producer.java`可能是实现生产者消费者问题的Java代码示例。通常,这样的代码会包含两个主要类:一个代表生产者,另一个代表消费者。生产者类会有一个或多个方法用于生成数据并将其放入共享...

    Producer.java

    Producer.java

    Producer产生一个数字而Consumer消费这个数字.rar_java 多线程_producer.java_生产者消费者_

    在这个例子中,"producer.java" 文件可能定义了一个生产者类,它负责生成数字并将其放入一个共享的缓冲区。另一方面,"consumer" 可能是一个消费者类,它从缓冲区取出数字进行消费。这两个线程需要通过同步机制来...

    Consumer-Producer.rar_Java Consumer_java 生产者 消费者_producer java_互

    5. **代码实现**:在`Consumer-Producer.rar`中的`Consumer-Producer`文件可能包含了具体的Java代码实现,它可能包括两个类——`Producer`和`Consumer`,分别代表生产者和消费者。每个类可能有一个无限循环来持续...

    出现Exception in threadmain java.lang.NoClassDefFoundError的各种可能情况.doc

    在Java编程中,遇到“Exception in thread 'main' java.lang.NoClassDefFoundError”是一种常见的异常情况,这通常意味着JVM在运行时未能找到指定的类定义。此错误不同于ClassNotFoundException,后者发生在尝试加载...

    ProducerConsumer.java

    The use of producer-consumer questions helps to better understand threads.

    Kafka Producer机制优化-提高发送消息可靠性

    ### Kafka Producer机制优化—提高发送消息可靠性 #### 一、Kafka Producer机制及问题背景 在Kafka消息系统中,消息是由Producer生产并通过Broker(消息中介节点)进行存储与转发的。Broker负责处理消息的存储,并...

    aliyun-log-java-producer:阿里云LOG Java生产者

    阿里云LOG Java生产者Aliyun LOG Java Producer是一个易于使用且高度可配置的Java类库,专门为运行在大数据,高并发场景下的Java应用量身打造。功能特点线程安全-生产者接口暴露的所有方法都是线程安全的。初级发送-...

    Photodex ProShow Producer 模板资源5G

    Photodex ProShow Producer是一款专业的视频幻灯片制作工具,它提供了丰富的模板资源和插件,使得视频制作变得快速、简便且高度可定制。它非常适合爱好制作电子相册的用户,能够满足他们多样化的制作需求。ProShow ...

    ProducerConsumer:使用java实现经典的并发或线程模式

    2. **`Producer`和`Consumer`接口**:虽然Java标准库中没有现成的`Producer`和`Consumer`接口,但在设计模式中,我们通常定义这两个接口来表示生成数据和消耗数据的行为。实现这些接口的类将分别代表生产者和消费者...

    Laravel开发-producer

    在本文中,我们将深入探讨Laravel开发中的"Producer"概念,这是基于规则的简单类解析的一个实例。Laravel是一款流行的开源PHP框架,以其优雅的语法和强大的功能深受开发者喜爱。"Producer"可能指的是一个用于创建、...

    Producer/Consumer 多线程处理文件

    在这个"Producer/Consumer 多线程处理文件"的主题中,我们将深入探讨Java中的生产者消费者模型,以及如何利用这一模式来高效地处理大量数据,如一秒钟处理一千多条记录。 生产者消费者模型源于操作系统理论,是解决...

    ProShow Producer 模板 玫瑰婚礼

    《ProShow Producer 模板:打造浪漫“玫瑰婚礼”》 在数字时代,人们越来越注重个性化和创意化的表达,尤其是在婚礼这种人生中的重要时刻。ProShow Producer,一款专业的幻灯片制作软件,就为新人们提供了这样的...

    pentaho-kafka-producer.zip

    Pentaho Kafka Producer是一款用于Pentaho Data Integration(Kettle)平台的插件,它允许用户在数据集成过程中将数据流发布到Apache Kafka消息队列。Kafka是一个分布式流处理平台,广泛应用于实时数据管道和流应用...

    Kafka Java Producer代码实例详解

    主要介绍了Kafka Java Producer代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java开发技术大全(500个源代码).

    ThreadIn.java 接收数据用的线程类 ThreadOut.java 发送数据用的线程类 TypeFile.java 显示文件内容的类 useScanner.java 用Scanner接收用户的输入 第8章 示例描述:本章学习多线程。 enhanceThread.java 一个...

    ProducerCustomer.zip

    在工作中,理解并运用生产者消费者模型能在高并发开发中出现更少的问题,本Demo最从简而行,使用Java语言实现一个最简单的生产者消费者模型。博客地址:https://blog.csdn.net/u012552275/article/details/104730175

    java并发编程经典书籍(英文版)

    - **并发模式**:介绍了如Producer-Consumer、Builder、Guarded Suspension等经典并发模式,并提供了Java实现。 - **并发集合**:详述了JUC(Java Util Concurrency)库,包括ArrayList、LinkedList、HashMap等...

    绿色版 OID Producer

    OID Producer是一款用于生成和管理Object Identifier(OID)的工具,主要在信息技术领域,尤其是网络协议和软件开发中使用。OID是标识数据对象的一种国际标准,它在ASN.1(抽象语法标记一世)编码规则下工作,是网络...

    kafka-java-demo 基于java的kafka生产消费者示例

    在Java中,我们可以创建一个Producer实例,配置相关的生产者属性(如bootstrap servers、key-value序列化类等),然后使用`send()`方法将消息发送到指定的主题。 【Kafka Consumer】 Kafka消费者则用于订阅和消费...

Global site tag (gtag.js) - Google Analytics