Skip to content
Snippets Groups Projects
Commit ee849897 authored by kamenon2's avatar kamenon2
Browse files

initial-commit-2: spring-boot base working version.

parent 02190288
No related branches found
No related tags found
No related merge requests found
Showing
with 241 additions and 21 deletions
...@@ -48,11 +48,7 @@ ...@@ -48,11 +48,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-jdbc</artifactId> <artifactId>spring-cloud-aws-messaging</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-messaging</artifactId>
</dependency> </dependency>
<dependency> <dependency>
......
package com.mcsds.cc.openaq.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.aws.messaging.core.NotificationMessagingTemplate;
import org.springframework.cloud.aws.messaging.core.QueueMessagingTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.amazonaws.services.sns.AmazonSNS;
import com.amazonaws.services.sqs.AmazonSQSAsync;
@Configuration
public class OpenAQAwsConfig {
private static final Logger logger = LoggerFactory.getLogger(OpenAQAwsConfig.class);
@Bean
public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSQSAsync) {
logger.info("\nBuilding amazonSQS bean...\n");
return new QueueMessagingTemplate(amazonSQSAsync);
}
@Bean
public NotificationMessagingTemplate notificationMessagingTemplate(AmazonSNS amazonSNS) {
logger.info("\nBuilding amazonSNS bean...\n");
return new NotificationMessagingTemplate(amazonSNS);
}
/*
* @Bean public AmazonSQSAsync amazonSQS(@Value("us-east-1") String awsRegion) {
* System.out.println("\nBuilding amazonSQS bean...\n"); AmazonSQSAsync
* theAsyncSqs = null; try { theAsyncSqs =
* AmazonSQSAsyncClientBuilder.standard() .withRegion(awsRegion)
* .withCredentials(new EC2ContainerCredentialsProviderWrapper()) .build(); }
* catch (Exception ex) { System.out.println("Error: \n" + ex.toString() + "\n"
* + ex.getStackTrace() + "\n"); } return theAsyncSqs; }
*
* @Bean public SimpleMessageListenerContainerFactory
* simpleMessageListenerContainerFactory(AmazonSQSAsync amazonSqs) {
* SimpleMessageListenerContainerFactory factory = new
* SimpleMessageListenerContainerFactory(); factory.setAmazonSqs(amazonSqs);
* factory.setMaxNumberOfMessages(5); return factory; }
*
* @Bean public QueueMessageHandler queueMessageHandler(AmazonSQSAsync
* amazonSQSAsync) { QueueMessageHandlerFactory factory = new
* QueueMessageHandlerFactory(); factory.setAmazonSqs(amazonSQSAsync); return
* factory.createQueueMessageHandler(); }
*
* @Bean public SimpleMessageListenerContainer simpleMessageListenerContainer(
* SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory,
* QueueMessageHandler queueMessageHandler) { SimpleMessageListenerContainer
* container =
* simpleMessageListenerContainerFactory.createSimpleMessageListenerContainer();
* container.setMessageHandler(queueMessageHandler);
* container.setWaitTimeOut(20); return container; }
*/
}
\ No newline at end of file
package com.mcsds.cc.openaq.ec2;
import org.springframework.cloud.aws.context.config.annotation.EnableContextInstanceData;
import org.springframework.context.annotation.Configuration;
//@Configuration
//@EnableContextInstanceData
public class EC2EnableMetadata {
}
package com.mcsds.cc.openaq.ec2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
//@Lazy
//@Component
public class EC2Metadata {
@Value("${ami-id:N/A}")
private String amiId;
@Value("${hostname:N/A}")
private String hostname;
@Value("${instance-type:N/A}")
private String instanceType;
@Value("${services/domain:N/A}")
private String serviceDomain;
@Value("#{instanceData['Name'] ?: 'N/A'}")
private String name;
public String getAmiId() {
return amiId;
}
public String getHostname() {
return hostname;
}
public String getInstanceType() {
return instanceType;
}
public String getServiceDomain() {
return serviceDomain;
}
public String getName() {
return name;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("EC2Metadata [amiId=");
builder.append(amiId);
builder.append(", hostname=");
builder.append(hostname);
builder.append(", instanceType=");
builder.append(instanceType);
builder.append(", serviceDomain=");
builder.append(serviceDomain);
builder.append(", name=");
builder.append(name);
builder.append("]");
return builder.toString();
}
}
\ No newline at end of file
package com.mcsds.cc.openaq; package com.mcsds.cc.openaq.main;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
...@@ -6,7 +6,8 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; ...@@ -6,7 +6,8 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration; import org.springframework.cloud.aws.autoconfigure.context.ContextRegionProviderAutoConfiguration;
import org.springframework.context.annotation.ImportResource; import org.springframework.context.annotation.ImportResource;
@SpringBootApplication(exclude = { ContextRegionProviderAutoConfiguration.class, DataSourceAutoConfiguration.class }) @SpringBootApplication(exclude = {ContextRegionProviderAutoConfiguration.class,DataSourceAutoConfiguration.class })
//@SpringBootApplication
@ImportResource("classpath:aws-config.xml") @ImportResource("classpath:aws-config.xml")
public class OpenAQMainApplication { public class OpenAQMainApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
package com.mcsds.cc.openaq.sqs;
import java.util.concurrent.CountDownLatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.aws.messaging.core.QueueMessagingTemplate;
import org.springframework.cloud.aws.messaging.listener.annotation.SqsListener;
import org.springframework.context.annotation.Lazy;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.stereotype.Component;
@Component
@Lazy
public class OpenAQNewFetchSQS {
private static final Logger logger = LoggerFactory.getLogger(OpenAQNewFetchSQS.class);
static final String QUEUE_NAME = "jvmcoders-openaq-newfetchobject";
/*
* CountDownLatch is added to wait for messages
* during integration test
*/
CountDownLatch countDownLatch;
public void setCountDownLatch(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
@Autowired
QueueMessagingTemplate queueMessagingTemplate;
@SqsListener(QUEUE_NAME)
public void receiveMessage(String message, @Header("SenderId") String senderId) {
logger.info("Received message: {}, having SenderId: {}", message, senderId);
if (countDownLatch != null) {
countDownLatch.countDown();
}
}
public void send(String queueName, Object message) {
queueMessagingTemplate.convertAndSend(queueName, message);
}
}
package com.mcsds.cc.openaq.sqs;
import java.util.concurrent.CountDownLatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.aws.messaging.core.QueueMessagingTemplate;
import org.springframework.cloud.aws.messaging.listener.annotation.SqsListener;
import org.springframework.context.annotation.Lazy;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.stereotype.Component;
@Component
@Lazy
public class OpenAQNewMeasurementsSQS {
private static final Logger logger = LoggerFactory.getLogger(OpenAQNewMeasurementsSQS.class);
static final String QUEUE_NAME = "jvmcoders-openaq-new-measurements";
/*
* CountDownLatch is added to wait for messages
* during integration test
*/
CountDownLatch countDownLatch;
public void setCountDownLatch(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
@Autowired
QueueMessagingTemplate queueMessagingTemplate;
@SqsListener(QUEUE_NAME)
public void receiveMessage(String message, @Header("SenderId") String senderId) {
logger.info("Received message: {}, having SenderId: {}", message, senderId);
if (countDownLatch != null) {
countDownLatch.countDown();
}
}
public void send(String queueName, Object message) {
queueMessagingTemplate.convertAndSend(queueName, message);
}
}
No preview for this file type
#Generated by Maven Integration for Eclipse #Generated by Maven Integration for Eclipse
#Sat Mar 30 09:44:47 CDT 2019 #Sat Mar 30 11:31:53 CDT 2019
version=0.0.1-SNAPSHOT version=0.0.1-SNAPSHOT
groupId=com.mcsds.cc.openaq groupId=com.mcsds.cc.openaq
m2e.projectName=OpenAQSQSListener m2e.projectName=OpenAQSQSListener
......
...@@ -48,11 +48,7 @@ ...@@ -48,11 +48,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-jdbc</artifactId> <artifactId>spring-cloud-aws-messaging</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-messaging</artifactId>
</dependency> </dependency>
<dependency> <dependency>
......
File added
File added
File added
File added
File added
#Generated by Apache Maven #Generated by Maven
#Sat Mar 30 09:38:34 CDT 2019 #Sat Mar 30 11:11:16 CDT 2019
version=0.0.1-SNAPSHOT version=0.0.1-SNAPSHOT
groupId=com.mcsds.cc.openaq groupId=com.mcsds.cc.openaq
artifactId=OpenAQSQSListener artifactId=OpenAQSQSListener
com\mcsds\cc\openaq\OpenAQMainApplication.class
H:\apps\coursera\llinois\mcs-ds\cs498_cloud_computing\project\openaq\OpenAQSQSListener\src\main\java\com\mcsds\cc\openaq\OpenAQMainApplication.java H:\apps\coursera\llinois\mcs-ds\cs498_cloud_computing\project\openaq\OpenAQSQSListener\src\main\java\com\mcsds\cc\openaq\sqs\OpenAQNewMeasurementsSQS.java
H:\apps\coursera\llinois\mcs-ds\cs498_cloud_computing\project\openaq\OpenAQSQSListener\src\main\java\com\mcsds\cc\openaq\main\OpenAQMainApplication.java
H:\apps\coursera\llinois\mcs-ds\cs498_cloud_computing\project\openaq\OpenAQSQSListener\src\main\java\com\mcsds\cc\openaq\ec2\EC2Metadata.java
H:\apps\coursera\llinois\mcs-ds\cs498_cloud_computing\project\openaq\OpenAQSQSListener\src\main\java\com\mcsds\cc\openaq\ec2\EC2EnableMetadata.java
H:\apps\coursera\llinois\mcs-ds\cs498_cloud_computing\project\openaq\OpenAQSQSListener\src\main\java\com\mcsds\cc\openaq\sqs\OpenAQNewFetchSQS.java
H:\apps\coursera\llinois\mcs-ds\cs498_cloud_computing\project\openaq\OpenAQSQSListener\src\main\java\com\mcsds\cc\openaq\config\OpenAQAwsConfig.java
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8" ?>
<testsuite name="com.mcsds.cc.openaq.OpenAQSQSListener.AppTest" time="0" tests="1" errors="0" skipped="0" failures="0"> <testsuite tests="1" failures="0" name="com.mcsds.cc.openaq.OpenAQSQSListener.AppTest" time="0" errors="0" skipped="0">
<properties> <properties>
<property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/> <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
<property name="sun.boot.library.path" value="C:\Program Files\Java\jdk1.8.0_181\jre\bin"/> <property name="sun.boot.library.path" value="C:\Program Files\Java\jdk1.8.0_181\jre\bin"/>
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
<property name="java.endorsed.dirs" value="C:\Program Files\Java\jdk1.8.0_181\jre\lib\endorsed"/> <property name="java.endorsed.dirs" value="C:\Program Files\Java\jdk1.8.0_181\jre\lib\endorsed"/>
<property name="os.arch" value="amd64"/> <property name="os.arch" value="amd64"/>
<property name="java.io.tmpdir" value="C:\Users\kajay\AppData\Local\Temp\"/> <property name="java.io.tmpdir" value="C:\Users\kajay\AppData\Local\Temp\"/>
<property name="line.separator" value="&#10;"/> <property name="line.separator" value="
"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/> <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="user.variant" value=""/> <property name="user.variant" value=""/>
<property name="os.name" value="Windows 10"/> <property name="os.name" value="Windows 10"/>
...@@ -64,5 +65,5 @@ ...@@ -64,5 +65,5 @@
<property name="sun.desktop" value="windows"/> <property name="sun.desktop" value="windows"/>
<property name="sun.cpu.isalist" value="amd64"/> <property name="sun.cpu.isalist" value="amd64"/>
</properties> </properties>
<testcase name="testApp" classname="com.mcsds.cc.openaq.OpenAQSQSListener.AppTest" time="0"/> <testcase classname="com.mcsds.cc.openaq.OpenAQSQSListener.AppTest" name="testApp" time="0"/>
</testsuite> </testsuite>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment