Skip to content

Instantly share code, notes, and snippets.

@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
import static groovyx.gpars.GParsPool.withPool
withPool(100) {
(1..2000).eachParallel { i ->
def beginTime = System.currentTimeMillis()
def result = 'https://xxxxx.execute-api.us-east-1.amazonaws.com/dev/users'.toURL().text
println "${i}: ${System.currentTimeMillis() - beginTime}"
}
}
@Builder
@ToString(includePackage = false)
@CompileStatic
class Response {
int statusCode
String body
private Map<String, String> headers = [:]
void addHeader(String key, String value) {
headers.put(key, value)
import com.amazonaws.services.lambda.runtime.Context
import groovy.transform.ToString
@ToString(includePackage = false)
class Request {
private final Map input
private final Context context
Request(final Map input, final Context context) {
this.input = input
@Component
@Log4j
@CompileStatic
class GetUsers implements Handler {
@Autowired
private UserRepository userRepository
@Override
boolean route(final Request request) {
@Component
@Log4j
@CompileStatic
class FindUsersByLastName implements Handler {
@Autowired
private UserRepository userRepository
@Override
boolean route(final Request request) {
@Component
@Log4j
@CompileStatic
class CreateUser implements Handler {
@Autowired
private UserRepository userRepository
@Override
boolean route(Request request) {
interface Handler {
boolean route(Request request)
Response respond(Request request)
}
import com.serverless.persistence.entities.User
import org.springframework.data.repository.CrudRepository
interface UserRepository extends CrudRepository<User, Long> {
List<User> findByLastName(String lastName)
}
@Entity
@ToString
@CompileStatic
class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id
String firstName
String lastName
@Component
@CompileStatic
@Log4j
class DispatcherService {
@Autowired
List<Handler> handlers
Response dispatch(Request request) {
log.info("request: ${request}")