App

Overview

The Files component is an abstraction of persistent queues with a default implementation using AWS SQS. This also provides a much simplified API while making the underlying implementation swappable.

Status

This component is currently stable. Following limitations, current work, planned features apply.

Feature Status Description
Meta Upcoming Ability to easily default / inject meta data for every entry.
URI Upcoming Ability to use Slate Kit Uri for explicit references to file paths
Errors Upcoming Ability to use a dead-letter queue for failed items.
Batch Upcoming Ability to perform batch insert operations

Back to top



Install

    repositories {
        // other repositories
        maven { url  "http://dl.bintray.com/codehelixinc/slatekit" }
    }

    dependencies {
        // other dependencies ...

        compile 'com.slatekit:slatekit-cloud:1.0.0'
    }

Back to top



Sources

Jar slatekit.cloud.jar
Package slatekit.cloud
Sources slatekit-cloud
Example Example_Cloud_Queues.kt
Version
License
Requires See build.gradle for more info.

Back to top



Imports

Refer to Example_Cloud_Queues.kt for all imports.

         
    // Required
    import slatekit.cloud.aws.SQS
    import slatekit.core.queues.QueueEntry
    import slatekit.core.queues.QueueStringConverter

    // Optional ( For examples)
    import com.amazonaws.auth.profile.ProfileCredentialsProvider
    import com.amazonaws.regions.Regions
     


Back to top



Setup

        
    // This converts the queue entry payload to a type
    // NOTES:
    // 1. This can be String converter for any payload ( e.g. JSON )
    // 2. You can create a custom type for type safety
    val converter = QueueStringConverter()
    
    // Not storing any key/secret in source code for security purposes
    // Setup 1: Use the default aws config file in "~/.aws/credentials and supply AWS region
    val queue1 = SQS<String>(credentials = ProfileCredentialsProvider().credentials,
            region = Regions.US_EAST_1, name = "slatekit", converter = converter)

    // Setup 2: Allow auto-loading of credentials from ~/.aws/credentials and region by string name supplied
    val queue2 = SQS.of<String>(region = "us-east-1", name = "slatekit", converter = converter)

    // Setup 3: Use the config at "~/myapp/conf/queue.conf"
    // Reads from the section "queues" by default
    /**
     *  SAMPLE CONFIG:
     *  queues = true
     *  queues.key  = AWS_KEY_HERE
     *  queues.pass = AWS_PASSWORD_HERE
     *  queues.env  = dev
     *  queues.tag  = samples
     */
    val queue3 = SQS.of<String>( region = "us-east-1", name = "slatekit", converter = converter,
        confPath = "~/myapp/conf/queue.conf", confSection = "queues")

    val queue = queue3.getOrElse { queue1 }

     

Back to top



Usage

        
    // Use case 1: init()
    queue.init()

    // NOTES:
    // 1. All operations use the slate kit Result<T,E> type
    // 2. All operations return a slate kit Try<T> = Result<T, Exception>
    // Use case 2: send 1 message ( get back message id as String )
    queue.send("item 1")

    // Use case 3: send multiple messages
    queue.send("item 2")

    // Use case 4: send message with tags
    queue.send("user=kishore", tagName = "type", tagValue = "reg")

    // Use case 5: receive 1 message
    val item1 = queue.next()
    println(item1?.getValue())
    println(item1?.getTag("type"))

    // Use case 6: recieve 2 messages
    val items = queue.next(2)

    // Use case 7: delete a message
    queue.done(item1)

    // Use case 8: delete many
    queue.done(items)

    // Use case 9: abandon a message
    queue.abandon(queue.next())

    // Use case 10: get count ( approximation )
    val count = queue.count()
    println(count)
      

Back to top