paypal / squbs Goto Github PK
View Code? Open in Web Editor NEWAkka Streams & Akka HTTP for Large-Scale Production Deployments
Home Page: http://paypal.github.io/squbs
License: Apache License 2.0
Akka Streams & Akka HTTP for Large-Scale Production Deployments
Home Page: http://paypal.github.io/squbs
License: Apache License 2.0
The '?' becomes encoded as part of path, not really a query string.
How to mock actorSelection logic in the actor if we want to test the actor?
In case of extension init failures, the system state event message sent to interested parties (admin console) is not sent. Consoles cannot update their state correctly.
The orchestration DSL currently requires users to write the initial expectOnce block, which is boilerplate. We should be able to use a typed actor for the same purpose and eliminate this boilerplate, thus passing the received initial message and the original requester to the orchestrate function directly.
Also standardize on spray-routing-shapeless2.
Note: All projects based on squbs 0.7 MUST replace spray-routing
with spray-routing-shapeless2
Build fails with the following:
message=Expected token RBRACKET but got Token(XML_START_OPEN,<,10847,<)
java.lang.RuntimeException: exists error
08:07:05 at scala.sys.package$.error(package.scala:27)
08:07:05 at scala.Predef$.error(Predef.scala:142)
08:07:05 at org.scalastyle.sbt.Tasks$.onHasErrors$1(Plugin.scala:99)
Please see:
As today, if we want to test RouteDefinition using spray-testkit, we need to add some workaround to create the route instance.
e.g.
val actor = TestActorRef[DummyActor]
val route = RouteDefinition
.startRoutes(new SellercommunitysvcSvc)(actor.underlyingActor.context).route
class DummyActor extends Actor {
override def receive: Receive = {
case whatever =>
}
}
Then apply the route assertion like:
REQUEST ~> route ~> check {
ASSERTIONS
}
Wrappers should be at virtually no cost. We just need to review all of them.
Refactor some classes from unicomplex to pipeline, most of them are from org.squbs.proxy, now moved to org.squbs.pipeline in squbs-pipeline project.
Simplify pipeline management, remove some classes like PipelineRegistry.
This will make getting started much easier.
It is a bit too small to be its own module. We better keep it together with Patterns.
Our branch structure should be clean as part of 0.7.0.
Instead, we should calculate the ask timeout to be marginally larger than the request timeout.
If there are other places, those should be masked as well.
Also add logger artifact dependencies to tests as log messages will get lost without those.
All documentation should be in good quality.
Waiting the following issues to be resolved:
The Java API may be wrappers for the current Scala API.
This is more efficient than the current String manipulations. We should also pass Uri and not String as parameter.
We should publish to Sonatype and maven central from Travis CI.
This does not work as sbt-revolver does not pass the class path in the system properties. Need to scan the real class path instead of the properties.
This is to ensure akka-http is absolutely ready for prime time. This issue is a release blocker for 0.8.
Configure CI to publish code coverage numbers on README page, and accessible publicly.
Currently the actor name would be assigned to the ProxyActor if a processor exists, considering if we can give an name to the service actor in case of actor selection
proxyName.fold(pipelineManager.default) {
case "" => None
case other => pipelineManager.getProcessor(other)
} match {
case None =>
val hostActor = context.actorOf(props, name) // disable proxy
(hostActor, SimpleActor(hostActor))
case Some(proc) =>
val hostActor = context.actorOf(props)
(hostActor, ProxiedActor(context.actorOf(Props(classOf[CubeProxyActor], proc, hostActor), name)))
}
A problem we need to consider is, what the actor names should be for the ServiceActor and ProxiedActor
The response to ReportStatus (a tuple) exposes member types that are private to unicomplex.
Two issues with this package:
May be optionally, at least.
So we can implement features like consuming an SSE stream.
Many files don't have the headers. Also, code coverage is low. Can you please beef this up?
Akka-http 1.1 promises performance on par with Spray and will replace Spray going forward. squbs needs to adopt akka-http as the replacement for spray.
This issue is created to deal with akka-http from the server dispatch side.
As part of akka-http support, we need to move the squbs-httpclient from sitting on top of Spray to use akka-http instead.
Add Validation support for spray layer.
Need a thorough review of the APIs and make sure all is documented. Actor-based interaction would need different kind of documentation, which should be pursued differently.
Simplify httpclient with less actor creation.
The orchestration DSL is currently achieved by using the sbt boilerplate plugin. It could be made far more powerful and flexible by implementing the same using compiler macros. We should investigate and implement if feasible.
squbs has been supporting registration of actors and services so far. With the arrival of akka-streams in squbs, we need to support registration of stream artifacts. We need to prototype/discuss the proper manifestation of these artifacts before going about implementing it.
An activator template for this sample code would be great!
All squbs samples should be functional. We need to make sure all samples builds and runs. Few obvious issues with resolves:
Especially in pipeline, unicomplex/proxy, httpclient.
Need to investigate hanging build.
This should expose system stats as well as JMX MBeans. Console could consist of well documented REST APIs so users can build and/or integrate with their own UI.
We should publish code quality metrics from ScalaStyle and/or ScapeGoat.
This is in particular to the StashCubeSvc calls in the test. Sometimes there is nothing stashed. Looks like a timeout issue.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.