diff --git a/event/sdk/event.go b/event/sdk/event.go index 3a8bea5a6e817ab8c0eb9276305a329cdb13c415..7205a7d187a7997802b54aaf1076e67b2c2d8e3d 100644 --- a/event/sdk/event.go +++ b/event/sdk/event.go @@ -1,6 +1,6 @@ /* * Copyright (c) KylinSoft Co., Ltd. 2024.All rights reserved. - * PilotGo-plugins licensed under the Mulan Permissive Software License, Version 2. + * PilotGo-plugins licensed under the Mulan Permissive Software License, Version 2. * See LICENSE file for more details. * Author: zhanghan2021 * Date: Wed Jul 24 10:02:04 2024 +0800 @@ -9,7 +9,6 @@ package sdk import ( "encoding/json" - "errors" "io" "os" "os/signal" @@ -21,7 +20,7 @@ import ( "github.com/gin-gonic/gin" ) -func UnPluginListenEventHandler() { +func UnPluginListenEventHandler(serviceName string) { sig := make(chan os.Signal, 1) signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { @@ -32,7 +31,7 @@ func UnPluginListenEventHandler() { switch s { case syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT: logger.Info("接收到退出信号: %s", s.String()) - UnPluginListenEvent() + UnPluginListenEvent(serviceName) os.Exit(0) default: logger.Info("接收到未知信号: %s", s.String()) @@ -65,27 +64,6 @@ func eventHandler(c *gin.Context) { ProcessEvent(&msg) } -func eventPluginServer() (string, error) { - plugins, err := plugin_client.GetPlugins() - if err != nil { - return "", err - } - - var eventServer string - for _, p := range plugins { - if p.Name == "event" { - eventServer = p.Url - break - } - } - - if eventServer == "" { - return "", errors.New("event plugin not found") - } - - return eventServer, nil -} - func registerEventCallback(eventType int, callback common.EventCallback) { plugin_client.EventCallbackMap[eventType] = callback } diff --git a/event/sdk/listener.go b/event/sdk/listener.go index 8f9d73fc0ecd33622c55e981d31e4cc1af6ac406..097acf7058f63d8e1f28b84cb6bf5cd4977d455f 100644 --- a/event/sdk/listener.go +++ b/event/sdk/listener.go @@ -1,6 +1,6 @@ /* * Copyright (c) KylinSoft Co., Ltd. 2024.All rights reserved. - * PilotGo-plugins licensed under the Mulan Permissive Software License, Version 2. + * PilotGo-plugins licensed under the Mulan Permissive Software License, Version 2. * See LICENSE file for more details. * Author: zhanghan2021 * Date: Wed Jul 24 10:02:04 2024 +0800 @@ -10,6 +10,7 @@ package sdk import ( "encoding/json" "errors" + "fmt" "net/http" "strconv" "strings" @@ -21,21 +22,29 @@ import ( var plugin_client *client.Client +type SN struct { + ServiceName string `json:"serviceName"` +} + // 注册event事件监听 -func ListenEvent(eventTypes []int, callbacks common.EventCallback) error { +func ListenEvent(serviceName string, eventTypes []int, callbacks common.EventCallback) error { var eventtypes []string for _, i := range eventTypes { eventtypes = append(eventtypes, strconv.Itoa(i)) } - eventServer, err := eventPluginServer() + eventService, err := plugin_client.Registry.Get("event-service") if err != nil { return err } - url := eventServer + "/plugin/event/listener/register?eventTypes=" + strings.Join(eventtypes, ",") + url := fmt.Sprintf("http://%s:%s/plugin/event/listener/register?eventTypes=%s", eventService.Address, eventService.Port, strings.Join(eventtypes, ",")) + + b := SN{ + ServiceName: serviceName, + } r, err := httputils.Put(url, &httputils.Params{ - Body: plugin_client.PluginInfo, + Body: b, }) if err != nil { return err @@ -66,19 +75,22 @@ func ListenEvent(eventTypes []int, callbacks common.EventCallback) error { } // 取消注册event事件监听 -func UnListenEvent(eventTypes []int) error { +func UnListenEvent(serviceName string, eventTypes []int) error { var eventtypes []string for _, i := range eventTypes { eventtypes = append(eventtypes, strconv.Itoa(i)) } - eventServer, err := eventPluginServer() + eventService, err := plugin_client.Registry.Get("event-service") if err != nil { return err } - url := eventServer + "/plugin/event/listener/unregister?eventTypes=" + strings.Join(eventtypes, ",") + url := fmt.Sprintf("http://%s:%s/plugin/event/listener/unregister?eventTypes=%s", eventService.Address, eventService.Port, strings.Join(eventtypes, ",")) + b := SN{ + ServiceName: serviceName, + } r, err := httputils.Delete(url, &httputils.Params{ - Body: plugin_client.PluginInfo, + Body: b, }) if err != nil { return err @@ -110,15 +122,18 @@ func UnListenEvent(eventTypes []int) error { } // 插件服务退出,取消注册所有本插件的event事件监听 -func UnPluginListenEvent() error { - eventServer, err := eventPluginServer() +func UnPluginListenEvent(serviceName string) error { + eventService, err := plugin_client.Registry.Get("event-service") if err != nil { return err } - url := eventServer + "/plugin/event/listener/unpluginRegister" + url := fmt.Sprintf("http://%s:%s/plugin/event/listener/unpluginRegister", eventService.Address, eventService.Port) + b := SN{ + ServiceName: serviceName, + } r, err := httputils.Delete(url, &httputils.Params{ - Body: plugin_client.PluginInfo, + Body: b, }) if err != nil { return err @@ -149,11 +164,11 @@ func UnPluginListenEvent() error { // 发布event事件 func PublishEvent(msg common.EventMessage) error { - eventServer, err := eventPluginServer() + eventService, err := plugin_client.Registry.Get("event-service") if err != nil { return err } - url := eventServer + "/plugin/event/publishEvent" + url := fmt.Sprintf("http://%s:%s/plugin/event/publishEvent", eventService.Address, eventService.Port) r, err := httputils.Put(url, &httputils.Params{ Body: &msg, }) diff --git a/event/server/controller/listener.go b/event/server/controller/listener.go index acd1bf15fa20fc1dc8b675ca5f9e4e6a5b14f670..53a961ff48718966f70f61fb8a955ef1d5588bcd 100644 --- a/event/server/controller/listener.go +++ b/event/server/controller/listener.go @@ -1,6 +1,6 @@ /* * Copyright (c) KylinSoft Co., Ltd. 2024.All rights reserved. - * PilotGo-plugins licensed under the Mulan Permissive Software License, Version 2. + * PilotGo-plugins licensed under the Mulan Permissive Software License, Version 2. * See LICENSE file for more details. * Author: zhanghan2021 * Date: Wed Jul 24 11:05:21 2024 +0800 @@ -8,26 +8,33 @@ package controller import ( + "fmt" "strconv" "strings" "gitee.com/openeuler/PilotGo/sdk/common" - "gitee.com/openeuler/PilotGo/sdk/plugin/client" "gitee.com/openeuler/PilotGo/sdk/response" "github.com/gin-gonic/gin" + plugin_manage "openeuler.org/PilotGo/PilotGo-plugin-event/client" "openeuler.org/PilotGo/PilotGo-plugin-event/service" ) func RegisterListenerHandler(c *gin.Context) { - p := client.PluginInfo{} + p := struct { + ServiceName string `json:"serviceName"` + }{} if err := c.ShouldBind(&p); err != nil { response.Fail(c, gin.H{"status": false}, err.Error()) return } - + serviceName, err := plugin_manage.EventClient.Registry.Get(p.ServiceName) + if err != nil { + response.Fail(c, gin.H{"status": false}, err.Error()) + return + } l := &service.Listener{ - Name: p.Name, - URL: p.Url, + Name: p.ServiceName, + URL: fmt.Sprintf("http://%s:%s", serviceName.Address, serviceName.Port), } service.AddListener(l) @@ -44,14 +51,21 @@ func RegisterListenerHandler(c *gin.Context) { } func UnregisterListenerHandler(c *gin.Context) { - p := client.PluginInfo{} + p := struct { + ServiceName string `json:"serviceName"` + }{} if err := c.ShouldBind(&p); err != nil { response.Fail(c, gin.H{"status": false}, err.Error()) return } + serviceName, err := plugin_manage.EventClient.Registry.Get(p.ServiceName) + if err != nil { + response.Fail(c, gin.H{"status": false}, err.Error()) + return + } l := &service.Listener{ - Name: p.Name, - URL: p.Url, + Name: p.ServiceName, + URL: fmt.Sprintf("http://%s:%s", serviceName.Address, serviceName.Port), } eventtypes := strings.Split(c.Query("eventTypes"), ",") for _, v := range eventtypes { @@ -71,14 +85,21 @@ func UnregisterListenerHandler(c *gin.Context) { // 取消当前插件的所有event事件注册 func UnPliginRegisterListenerHandler(c *gin.Context) { - p := client.PluginInfo{} + p := struct { + ServiceName string `json:"serviceName"` + }{} if err := c.ShouldBind(&p); err != nil { response.Fail(c, gin.H{"status": false}, err.Error()) return } + serviceName, err := plugin_manage.EventClient.Registry.Get(p.ServiceName) + if err != nil { + response.Fail(c, gin.H{"status": false}, err.Error()) + return + } l := &service.Listener{ - Name: p.Name, - URL: p.Url, + Name: p.ServiceName, + URL: fmt.Sprintf("http://%s:%s", serviceName.Address, serviceName.Port), } eventTypes := service.GetEventMapTypes(l)