Grails - 通过调用插件上的方法重新启动 Rabbitmq 插件使用者 class

Grails - restarting Rabbitmq plugin consumers by calling method on plugin class

我正在使用 Grails Rabbitmq Native 插件。当我启动应用程序时,我不希望 RMQ 消费者自动启动,所以在我的 Config.groovy 中我定义了:

rabbitmq.enabled == false

doWithSpring() (https://github.com/budjb/grails-rabbitmq-native/blob/master/RabbitmqNativeGrailsPlugin.groovy#L114) 中的代码意味着如果此标志为 false,则不会执行某些连接。

在某些时候,我希望能够启动 RMQ 系统。我想调用插件 class 中定义的方法,例如 restartRabbitContext() (https://github.com/budjb/grails-rabbitmq-native/blob/master/RabbitmqNativeGrailsPlugin.groovy#L231) 来启动 RMQ 消费者。我想我需要自己进行一些布线。

有办法吗?能够访问插件 class 的方法需要什么导入?

最好的办法是使用 GrailsPluginManager to access your plugin by name using getGrailsPlugin. From there you should be able to access the plugin as a GrailsPlugin 并访问插件本身定义的 public 方法。

GrailsPluginManager可以通过grailsApplication获得,例如:grailsApplication.pluginManager。在极少数情况下,您无法使用 DI,您总是可以退回到 Holders 以达到 GrailsPluginManager(尽管这种情况非常罕见)。