s8sg / goflow

A Golang based high performance, scalable and distributed workflow framework
MIT License
1.12k stars 136 forks source link

There is no option to pass the redis client into goflow struct #80

Open AswathyAshokan opened 1 year ago

AswathyAshokan commented 1 year ago

When initializing GoFlow with all the necessary configurations, I encountered an issue with passing the Redis client. In the GoFlow struct, there's only an option to provide the RedisClient:

fs := &goflow.FlowService{ RedisURL: redisUrl, WorkerConcurrency: 5, } However, when attempting to include SSL configuration in the Redis URL, I encountered the following error message:

failed to initiate connection, error dial tcp: address .too many colons in address

The sample Redis URL used was: "rediss://" + options.Username + ":" + options.Password + "@" + options.Addr + "/0?ssl_cert_reqs=None"

Further investigation is required to resolve this problem and successfully pass the SSL configuration to the go flow during initialization.

Runaho commented 6 months ago

It's seams when you use go get gets v0.1.4 but they fixed this issue on master v0.1.5 I fixed with removing on go.mod file and re get with @master tag. Also you must change configuration code you can see below.

go get github.com/s8sg/goflow@master
    fs := &goflow.FlowService{
        Port:              8080,
        RedisURL:          "localhost:6379",
        RedisPassword:     "redis",
        OpenTraceUrl:      "localhost:5775",
        WorkerConcurrency: 5,
        EnableMonitoring:  true,
        DebugEnabled:      true,
    }

I also highly recommend adding if err to .Register and .Start methods.

    if err := fs.Register("myflow", DefineWorkFlow); err != nil {
        fmt.Println("Error registering flow", err)
    }

    if err := fs.Start(); err != nil {
        fmt.Println("Error starting flow service", err)
    }