Code Monkey home page Code Monkey logo

reactive-consul's People

Contributors

dlouwers avatar hiloboy0119 avatar sjoerdmulder avatar zocimek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

reactive-consul's Issues

selectConnection gets called before addConnectionProvider in LoadBalancerActor

Having the example new ServiceBroker and immediately call withService then the selectConnection is called on the LoadBalancerActor before the connection providers are added causing an ServiceUnavailableException exception

Example:

val serviceBroker = ServiceBroker(new URL("http://consul.service.consul:8500"), connectionStrategies)
serviceBroker.withService[String, Unit]("my-service") { value => ... }
```

DockerTestKit dependency not found for 0.2.0

Seems like 0.2.0 was working for some after it was published, but now I can't include the dependency without getting this error:

[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	::          UNRESOLVED DEPENDENCIES         ::
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	:: nl.stormlantern#dockertestkit_2.11;0.2.0: not found
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::

(also happens when compiling for scala 2.12)

Upgrade Spray dependency to v1.3.2

Currently doesn't work with spray-json 1.3.2:

java.lang.NoSuchMethodError: stormlantern.consul.client.dao.ConsulHttpProtocol.optionFormat(Lspray/json/JsonFormat;)Lspray/json/StandardFormats$OptionFormat;
java.lang.NoSuchMethodError: stormlantern.consul.client.dao.ConsulHttpProtocol.optionFormat(Lspray/json/JsonFormat;)Lspray/json/StandardFormats$OptionFormat;
        at stormlantern.consul.client.dao.ConsulHttpProtocol$class.$init$(ConsulHttpProtocol.scala:38)
        at stormlantern.consul.client.dao.SprayConsulHttpClient.<init>(SprayConsulHttpClient.scala:19)

Is it possible to upgrade the dependency version?

getService doesn't filter unhealthy services

Currently it seems that the ConsulHttpClient.getService method uses the Catalog https://www.consul.io/api/catalog.html#list-nodes-for-service to get all the endpoints for a service; but if a certain endpoint is considered unhealthy (for example since the consul agent is in failed mode due to network partition the client doesn't excluded it from the available nodes.

Maybe it's better to use the Health https://www.consul.io/api/health.html#list-nodes-for-service for this?

Thinking about abstracting over more than Consul

Hi,

The goal of this project wasn't necessarily to be a Consul client but rather provide convenient recipes for service discovery, leader-follower election etc. When I started there wasn't any async Consul client available so I wrote my own but this was never a goal in itself. I am now considering using this to abstract over other strongly consistent key-value stores like etcd, zookeeper and maybe even eureka.

Please leave your thoughts on whether you think this would be a good idea and if so how this should be moved forward.

serviceId and serviceName inconsistencies

The following example has multiple ServiceDefinition with the same name but different tags, currently this scenario doesnt work and the ServiceBrokerActor at line 70 throws a NoSuchElement exception since the lookup is by name and not by id. In most cases this works because id == name but if name and id differ it was broken; PR #19 fixes this

ServiceDefinition("http.service1", "service1", Set("http"))
ServiceDefinition("gprc.service1", "service1", Set("grpc"))

Could you maybe make a new release after this โ“

Update README.md

libraryDependencies += "nl.stormlantern" %% "reactive-consul" % "0.2.0"

could be changed to:

libraryDependencies += "nl.stormlantern" %% "reactive-consul" % "0.2.1"

so that consumers of the library don't run into the dockertestkit unresolved dependencies.

Can't build the package with sbt 0.13.5

project/build.properties specifies sbt.version=0.13.5.
Execution of any sbt command with that version results in Error during sbt execution: No Scala version specified or detected.

Create an example app

The example should:

  • Talk to other nodes of the same type
  • Expose a health call with which can register itself
  • Create a docker container as part of the build process
  • Have an extra test category called "end2end"
  • The end to end tests will wire up a few clients together with a few consul boxes
  • The end to end tests will verify that the cluster keeps working correctly even with some node and service failures

Maven Central?

Hi there!

Thanks for releasing this library. It solves a lot of the bread-and-butter issues without the boiler-plate-code other libraries require in the consul-scala world. Thanks again!

I see the release to Maven central - as per https://issues.sonatype.org/plugins/servlet/mobile#issue/OSSRH-16296 - seem to be in-flight since last summer. Is there any plans to complete this?
I have some experience with bringing OSS libraries to Maven Central. What's the best way to support you?
Most important question to me right now: What is the desired coordinate to be used?

Create proper docker support utility classes

The following needs to be done:

  • Create a utility class that exposes a Docker container at the test level
  • ...exposes host ad port to a test
  • ...shares the same Docker client across tests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.