2014-03-12 30 views
0

我尝试使用一种数据库实现另一个DiscoveryAgent。我发现这个代码,它可以帮助我了解DiscoveryAgent的工作方式: https://github.com/sliard/multicastdbActiveMQ DiscoveryAgent

但我不知道何时调用registerService方法。当我更改多播Discovery代理的代码以查看它何时被调用,但它不是在启动DiscoveryAgent时。但是,如果它没有被调用,代理不能将自己公布到数据库... 然后我不明白代理如何使用DiscoveryAgent的信息与另一个代理进行通信。

所以,如果你可以解释我什么时候调用这个方法,并且如果你有关于DiscoveryAgent实现的一些文档,那将会很棒。

在此先感谢。

回答

0

registerService方法在启动时从Broker的TransportConnector调用,它与代理的启动时间不同。您应该花一些时间来查看ActiveMQ中各种代理的代码。多播版本和HTTP代理就是很好的例子。

请记住,这些代理程序是为代理程序和客户端代码编写的,因此有些代码不是从代理程序端运行,有的代码不在客户端使用。如果您只想实现客户端代理,那么您不必担心注册或广告位,但是如果您希望代理将自己添加到您的数据库实现中,则需要实现这些位,以便代理可以添加自己并做任何你的广告机制。

源代码和测试是最好的文档。查看代码,运行测试并设置断点以查看正在发生的事情。您甚至可以从源代码构建并添加自己的日志记录,以便更好地感受它。