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

Java Generate/Merge Files(4)Spring and AWS SQS

    博客分类:
  • JAVA
 
阅读更多
Java Generate/Merge Files(4)Spring and AWS SQS

Dependencies
<!-- AWS Connections -->
<dependency>
     <groupId>com.amazonaws</groupId>
     <artifactId>aws-java-sdk-s3</artifactId>
     <version>1.11.113</version>
</dependency>
<dependency>
     <groupId>com.amazonaws</groupId>
     <artifactId>aws-java-sdk-sqs</artifactId>
     <version>1.11.113</version>
</dependency>
<dependency>
     <groupId>com.amazonaws</groupId>
     <artifactId>amazon-sqs-java-messaging-lib</artifactId>
     <version>1.0.1</version>
<exclusions>
          <exclusion>
               <groupId>com.amazonaws</groupId>
               <artifactId>aws-java-sdk-sqs</artifactId>
          </exclusion>
     </exclusions>
</dependency>

How to use JMS Configuration with Spring to Send message?
<!-- JMS -->

<bean id="credentialsProviderBean" class="com.j2c.feeds2g.services.base.J2CAWSCredentialsProviderChain" />

<bean id="connectionFactoryBuilder"
     class="com.amazon.sqs.javamessaging.SQSConnectionFactory$Builder">
     <property name="regionName" value="us-east-1" />
     <property name="numberOfMessagesToPrefetch" value="10" />
     <property name="awsCredentialsProvider" ref="credentialsProviderBean" />
</bean>

<bean id="connectionFactory" class="com.amazon.sqs.javamessaging.SQSConnectionFactory"
factory-bean="connectionFactoryBuilder" factory-method="build" />

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
     <property name="connectionFactory" ref="connectionFactory" />
</bean>

Java MessageServiceImpl to send out the messages
package com.j2c.feeds2g.services;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

import com.j2c.feeds2g.services.base.BaseService;

public class MessageServiceImpl extends BaseService implements MessageService{

    private JmsTemplate jmsTemplate;

    public void sendJobBucket(String jobBucket) {
        jmsTemplate.send("test-jobbucket", new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                final TextMessage msg = session.createTextMessage(jobBucket);
                return msg;
            }
        });
    }

    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

}

In the configuration file, we need to have the key and secret for SQS
aws.accessKeyId=xxxxxx
aws.secretKey=xxxxxx

How to use Message Driven Bean to consume the messages?
<!-- MDB for jobbucket queue -->
<bean id="amazonMessageListener" class="com.j2c.feeds2g.services.mdb.JobBucketMessageDrivenBean">
     <property name="actorSystemFactory" ref="actorSystemFactory" />
</bean>

<bean id="messageListener"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
     <property name="delegate" ref="amazonMessageListener" />
     <property name="defaultListenerMethod" value="onMessage" />
     <property name="messageConverter">
     <null />
     </property>
</bean>

<bean id="jmsContainer"
      class="org.springframework.jms.listener.DefaultMessageListenerContainer">
     <property name="connectionFactory" ref="connectionFactory" />
     <property name="destinationName" value="test-jobbucket" />
     <property name="messageListener" ref="messageListener" />
</bean>
<!-- MDB end -->

package com.j2c.feeds2g.services.mdb;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;

import com.j2c.feeds2g.services.base.ActorSystemFactory;
import com.j2c.feeds2g.services.base.BaseService;

import akka.actor.ActorSelection;
import akka.actor.ActorSystem;

public class JobBucketMessageDrivenBean extends BaseService{

    private ActorSystemFactory actorSystemFactory;

    private ActorSelection sourceRouter;

    public void onMessage(Message message) {
        logger.info("step1 receive information");
        if(sourceRouter == null){
            ActorSystem system = actorSystemFactory.getActorSystem();
            sourceRouter = system.actorSelection("akka://feeds2g/user/sourceRouter");
        }

        if (message instanceof TextMessage) {
            try {
                logger.info(String.format("MDB received: %s ", ((TextMessage) message).getText()));
                //sourceRouter.tell(null, null);
            } catch (JMSException ex) {
                throw new RuntimeException(ex);
            }
        } else {
            throw new IllegalArgumentException("Message must be of type TextMessage");
        }
    }

    public void setActorSystemFactory(ActorSystemFactory actorSystemFactory) {
        this.actorSystemFactory = actorSystemFactory;
    }

}

References:
https://pragmaticintegrator.wordpress.com/2015/04/21/using-aws-sqs-as-jms-provider-with-spring/

https://pragmaticintegrator.wordpress.com/2015/05/05/creating-a-message-driven-bean-with-aws-sqs-in-spring/

https://codingbone.wordpress.com/2010/02/28/how-to-load-properties-files-into-spring-and-expose-to-the-java-classes/
分享到:
评论

相关推荐

    maven 搭建spring mvc环境

    使用`mvn archetype:generate`命令,选择Spring Initializr或者通过Spring Tool Suite (STS)等IDE生成一个基于Spring Boot的Maven项目。项目的基本结构应包括`pom.xml`(项目对象模型),这是Maven的核心配置文件。 ...

    搭建Spring项目

    搭建Spring项目是一个初学者入门Java Web开发的重要步骤。Spring框架是一个强大的、全面的开源应用程序框架,主要用于构建企业级的Java应用程序。它简化了开发过程,提供了依赖注入、面向切面编程、事务管理等功能,...

    GenerateKey.java EncryptClasses.java

    "GenerateKey.java"、"EncryptClasses.java"以及"Util"、"DecryptStart"这些标签暗示了这是一个关于Java加密和解密操作的项目。下面将详细讨论相关知识点。 1. **GenerateKey.java**: 这个文件很可能包含了生成...

    Maven 搭建Spring + SpringMVC.rar

    在IT行业中,Maven是一个广泛使用的项目管理工具,它能够帮助开发者管理和构建Java项目。Spring框架则是一个轻量级的应用框架,而SpringMVC是Spring框架的一个重要组成部分,专门用于处理Web应用程序的Model-View-...

    使用Maven构建Spring MVC项目的简单示例

    在本文中,我们将深入探讨如何使用Maven来构建一个基于Spring MVC的Web应用程序。Maven是一个强大的项目管理和依赖管理工具,而Spring MVC是Spring框架的一部分,用于构建动态、交互式的Web应用。通过结合这两个强大...

    解决 java.lang.RuntimeException: Could not generate DH keypair异常处理所需的bcprov的jar

    解决 java.lang.RuntimeException: Could not generate DH keypair异常处理。 bcprov-ext-jdk15on-1.60、bcprov-jdk15on-1.60两个包放到jre下的$JAVA_HOME/jre/lib/ext的路径下,然后配置$JAVA_HOME/jre/lib/...

    上传一个最简单的cxf结合spring的Java WebService例子

    CXF是一个流行的开源框架,用于创建和消费Web服务,而Spring框架则是一个强大的Java企业级应用开发平台。本教程将深入探讨如何结合CXF和Spring来构建一个简单的Java WebService。 首先,我们需要理解CXF的基本概念...

    Marven + Jetty + Myeclipse实现java修改实时生效

    输入-noverify -javaagent:D:/java/spring/jrebel.jar 3、在pom.xml中加入下面信息 &lt;plugin&gt; &lt;groupId&gt;org.zeroturnaround&lt;/groupId&gt; &lt;artifactId&gt;javarebel-maven-plugin&lt;/artifactId&gt; &lt;id&gt;generate-...

    maven搭建springMVC环境

    在IT行业中,构建Java Web应用程序时,Spring MVC框架与Maven构建工具的结合使用是非常常见的。本篇文章将详细讲解如何使用Maven来搭建一个Spring MVC的开发环境。 首先,让我们理解Maven和Spring MVC的基本概念。...

    java 小型环境搭建 SpringMVC

    在Java开发领域,SpringMVC框架是Web应用中广泛使用的模型-视图-控制器(MVC)架构。它为开发者提供了强大的控制层组件,简化了应用程序的构建过程。本教程将详细阐述如何搭建一个基础的SpringMVC环境,以便于初学者...

    aws-v4:使用AWS Signature版本4为API网关(execute-api)生成AWS签名v4

    const awsV4 = require ( 'aws-v4' ) ;// Sign your request// This example is post request, you can const signedRequest = awsV4 . newClient ( { accessKey : &lt; AWS&gt; , secretKey: &lt; AWS_SECRET_KEY

    Araxis Merge Professional 2012.4162 (x86/x64).part1

    Use it to compare and merge source code, web pages, XML and other text files with native application performance. Directly open and compare the text from Microsoft Office (Word and Excel), ...

    java生成二维码(qrcodeutil.java)

    4. **QRCOdeUtil.java关键方法**: - `generateQRCode(String content, int width, int height)`:这个方法可能接收内容(要编码的数据)、宽度和高度作为参数,返回一个二维码图像的BufferedImage对象。 - `to...

    JAVA学习之一步步搭建spring框架

    【摘要】:本文详细阐述了如何逐步搭建Java中的Spring框架,从创建Maven工程开始,直至添加必要的Spring依赖。通过此过程,开发者可以更好地理解Spring框架的构建基础。 【正文】: 在Java开发中,Spring框架是一...

    SpringMVC+Maven开发框架搭建

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。Maven 是一个项目管理工具,它可以帮助开发者管理和构建Java项目,管理依赖关系,自动化构建过程。本教程将深入探讨如何...

    Araxis Merge Professional 2012.4162 (x86/x64).part2

    Use it to compare and merge source code, web pages, XML and other text files with native application performance. Directly open and compare the text from Microsoft Office (Word and Excel), ...

    创建Spring boot的三种方式

    Spring Boot 是一个基于 Java 的开源框架,旨在简化基于 Spring 框架的应用程序开发。创建 Spring Boot 项目有多种方式,本文将介绍三种常见的创建方法。 方法一:使用 Spring Initializr Spring Initializr 是 ...

    Java 实现AES之CBC/CFB模式的加密解密源码

    //java -jar testAES.jar --generate-key ./key.txt 256 //java -jar testAES.jar --encrypt ./input.txt ./OUT.txt ./key.txt CFB //java -jar testAES.jar --decrypt ./OUT.txt ./OUTDEC.txt ./key.txt CFB

    Matlab与java接口(图文并茂)

    a) 定义JAVA_HOME变量,指向JDK的安装路径,例如:D:/Program Files/Java/Java/jdk1.6.0_05。 b) 更新系统变量PATH,添加JDK的bin目录,如:D:/Program Files/Java/jdk1.6.0_05/bin。 c) 将javabuilder.jar添加到...

    workers-aws-template:用于访问AWS服务(例如DynamoDB和SQS)的Cloudflare Workers模板

    这是用于使用Cloudflare Worker中的Amazon Web Services(例如DynamoDB和SQS)的模板。 该项目与Amazon Web Services不相关,不隶属,赞助或认可。 牧马人 使用生成 wrangler generate projectname ...

Global site tag (gtag.js) - Google Analytics