mirror of
https://github.com/oarkflow/mq.git
synced 2025-10-05 07:57:00 +08:00
feat: add example
This commit is contained in:
@@ -4,11 +4,12 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/oarkflow/mq/consts"
|
|
||||||
"github.com/oarkflow/mq/examples/tasks"
|
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/oarkflow/mq/consts"
|
||||||
|
"github.com/oarkflow/mq/examples/tasks"
|
||||||
|
|
||||||
"github.com/oarkflow/mq"
|
"github.com/oarkflow/mq"
|
||||||
"github.com/oarkflow/mq/dag"
|
"github.com/oarkflow/mq/dag"
|
||||||
)
|
)
|
||||||
@@ -24,10 +25,8 @@ func main() {
|
|||||||
d.AddNode("C", tasks.Node3)
|
d.AddNode("C", tasks.Node3)
|
||||||
d.AddNode("D", tasks.Node4)
|
d.AddNode("D", tasks.Node4)
|
||||||
d.AddNode("E", tasks.Node5)
|
d.AddNode("E", tasks.Node5)
|
||||||
err := d.AddDeferredNode("F")
|
d.AddNode("F", tasks.Node6)
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
d.AddEdge("A", "B", dag.LoopEdge)
|
d.AddEdge("A", "B", dag.LoopEdge)
|
||||||
d.AddCondition("C", map[string]string{"PASS": "D", "FAIL": "E"})
|
d.AddCondition("C", map[string]string{"PASS": "D", "FAIL": "E"})
|
||||||
d.AddEdge("B", "C")
|
d.AddEdge("B", "C")
|
||||||
@@ -35,7 +34,7 @@ func main() {
|
|||||||
d.AddEdge("E", "F")
|
d.AddEdge("E", "F")
|
||||||
http.HandleFunc("POST /publish", requestHandler("publish"))
|
http.HandleFunc("POST /publish", requestHandler("publish"))
|
||||||
http.HandleFunc("POST /request", requestHandler("request"))
|
http.HandleFunc("POST /request", requestHandler("request"))
|
||||||
err = d.Start(context.TODO(), ":8083")
|
err := d.Start(context.TODO(), ":8083")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,7 @@ package utils
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"reflect"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -9,3 +10,18 @@ func CalculateJitter(baseDelay time.Duration, percent float64) time.Duration {
|
|||||||
jitter := time.Duration(rand.Float64()*percent*float64(baseDelay)) - time.Duration(percent*float64(baseDelay)/2)
|
jitter := time.Duration(rand.Float64()*percent*float64(baseDelay)) - time.Duration(percent*float64(baseDelay)/2)
|
||||||
return baseDelay + jitter
|
return baseDelay + jitter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SizeOf(v any) uintptr {
|
||||||
|
val := reflect.ValueOf(v)
|
||||||
|
if val.Kind() == reflect.Ptr {
|
||||||
|
val = val.Elem()
|
||||||
|
}
|
||||||
|
switch val.Kind() {
|
||||||
|
case reflect.Slice:
|
||||||
|
return uintptr(val.Len()) * val.Type().Elem().Size()
|
||||||
|
case reflect.Map:
|
||||||
|
return uintptr(val.Len()) * (val.Type().Key().Size() + val.Type().Elem().Size())
|
||||||
|
default:
|
||||||
|
return val.Type().Size()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user