What is the best practice for using consul with Java applications?

We are trying to figure how best we can use Consul in our stack. We have consul up and running but we are not sure which is the best way to integrate it with Java applications. We are not using spring and we do not want to take that path. I do not see any official documentation on how this can be done in the best way. How can we subscribe to changes in consul and make the application use the new changes without restarting whole application?