/
iezhelev
/
cppsh_micro
Обзор
Документация
Войти
/
iezhelev
/
cppsh_micro
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
pkg/command/handler.go
72 строки
2 KB
iezhelev
ws server
23 мар 2025, 22:56
23 мар 2025, 22:56
ac33f5f
Код
Авторство
О чём код?
package command import ( "context" "encoding/json" "log" //"os" "github.com/go-redis/redis/v8" //"github.com/redis/go-redis/v9" "github.com/streadway/amqp" ) type CommandHandler struct { ctx *context.Context redis *redis.Client rabbit *amqp.Channel } func NewCommandHandler(ctx *context.Context, rabbit *amqp.Channel, redis *redis.Client ) *CommandHandler { return &CommandHandler{ctx: ctx, rabbit: rabbit, redis: redis} } func (h *CommandHandler)StoreData(queueName string, data []byte, params map[string]string) { tablename := params["tablename"] sn := params["shortname"] action := params["action"] transition := params["transitionname"] // Example data to send //data := os.Getenv("DATA_TO_SEND") // Get data from environment variable message := map[string]interface{}{ "tablename": tablename, "shortname": sn, "action": action, "transition": transition, "data": string(data), // Convert byte slice to string } // Encode the message to JSON jsonMessage, err := json.Marshal(message) if err != nil { log.Printf("Failed to encode message to JSON: %v", err) return } // Publish data to RabbitMQ err = h.rabbit.Publish( "", // exchange queueName, // routing key false, // mandatory false, // immediate amqp.Publishing{ ContentType: "text/plain", Body: jsonMessage, }, ) if err != nil { log.Fatalf("Failed to publish a message to RabbitMQ: %v", err) } log.Printf("Sent data to RabbitMQ: %s", jsonMessage) // Store data in Redis err = h.redis.Set(*h.ctx, "cached_data", jsonMessage, 0).Err() if err != nil { log.Fatalf("Failed to store data in Redis: %v", err) } log.Printf("Stored data in Redis: %s", data) }