[MM-35077] Add basic support for plugin intra-cluster communication (#17495)
* Add basic support for plugin intra-cluster communication * Some renaming for added clarity * Allow sending cluster event to specific nodes * Improve naming and documentation * Improve logging
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
7dc1718c1d
Коммит
6af032d06a
@@ -40,6 +40,7 @@ const (
|
||||
CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_ALL_USERS = "inv_all_user_sessions"
|
||||
CLUSTER_EVENT_INSTALL_PLUGIN = "install_plugin"
|
||||
CLUSTER_EVENT_REMOVE_PLUGIN = "remove_plugin"
|
||||
CLUSTER_EVENT_PLUGIN_EVENT = "plugin_event"
|
||||
CLUSTER_EVENT_INVALIDATE_CACHE_FOR_TERMS_OF_SERVICE = "inv_terms_of_service"
|
||||
CLUSTER_EVENT_BUSY_STATE_CHANGED = "busy_state_change"
|
||||
|
||||
|
||||
28
model/plugin_cluster_event.go
Обычный файл
28
model/plugin_cluster_event.go
Обычный файл
@@ -0,0 +1,28 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package model
|
||||
|
||||
const (
|
||||
PluginClusterEventSendTypeReliable = CLUSTER_SEND_RELIABLE
|
||||
PluginClusterEventSendTypeBestEffort = CLUSTER_SEND_BEST_EFFORT
|
||||
)
|
||||
|
||||
// PluginClusterEvent is used to allow intra-cluster plugin communication.
|
||||
type PluginClusterEvent struct {
|
||||
// Id is the unique identifier for the event.
|
||||
Id string
|
||||
// Data is the event payload.
|
||||
Data []byte
|
||||
}
|
||||
|
||||
// PluginClusterEventSendOptions defines some properties that apply when sending
|
||||
// plugin events across a cluster.
|
||||
type PluginClusterEventSendOptions struct {
|
||||
// SendType defines the type of communication channel used to send the event.
|
||||
SendType string
|
||||
// TargetId identifies the cluster node to which the event should be sent.
|
||||
// It should match the cluster id of the receiving instance.
|
||||
// If empty, the event gets broadcasted to all other nodes.
|
||||
TargetId string
|
||||
}
|
||||
Ссылка в новой задаче
Block a user