Skip to content

Commit 706e97b

Browse files
authored
Merge pull request #7 from frain-dev/feat/msg-args-bin
add marshall functions for message
2 parents bca7728 + 779b6e5 commit 706e97b

File tree

5 files changed

+27
-7
lines changed

5 files changed

+27
-7
lines changed

brokers/redis/list.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func (b *List) Publish(msg *disq.Message) error {
174174
msg.ID = uuid.NewString()
175175
}
176176

177-
body, err := msgpack.Marshal((*disq.MessageRaw)(msg))
177+
body, err := msg.MarshalBinary()
178178
if err != nil {
179179
return err
180180
}

brokers/redis/stream.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ func (b *Stream) Publish(msg *disq.Message) error {
184184
msg.ID = uuid.NewString()
185185
}
186186

187-
body, err := msgpack.Marshal((*disq.MessageRaw)(msg))
187+
body, err := msg.MarshalBinary()
188188
if err != nil {
189189
return err
190190
}

go.mod

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ require (
66
github.com/bsm/redislock v0.7.2
77
github.com/go-redis/redis/v8 v8.11.4
88
github.com/google/uuid v1.3.0
9-
github.com/hashicorp/golang-lru v0.5.4
109
github.com/sirupsen/logrus v1.8.1
1110
github.com/vmihailenco/msgpack v4.0.4+incompatible
1211
github.com/vmihailenco/msgpack/v5 v5.3.5

go.sum

-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
3636
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
3737
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
3838
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
39-
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
40-
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
4139
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
4240
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
4341
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=

message.go

+25-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package disq
33
import (
44
"context"
55
"time"
6+
7+
"github.com/vmihailenco/msgpack"
68
)
79

810
// Message is used as a uniform object for publishing and consuming messages from a queue.
@@ -18,8 +20,8 @@ type Message struct {
1820
Delay time.Duration
1921

2022
// Args passed to the handler.
21-
Args []interface{}
22-
23+
Args []interface{}
24+
ArgsBin []byte
2325
// The number of times the message has been reserved or released.
2426
RetryCount int
2527

@@ -36,6 +38,27 @@ func NewMessage(ctx context.Context, args ...interface{}) *Message {
3638
}
3739
}
3840

41+
func (m *Message) MarshalBinary() ([]byte, error) {
42+
bArgs, err := msgpack.Marshal(m.Args)
43+
if err != nil {
44+
return nil, err
45+
}
46+
m.ArgsBin = bArgs
47+
48+
bMsg, err := msgpack.Marshal((*MessageRaw)(m))
49+
if err != nil {
50+
return nil, err
51+
}
52+
return bMsg, nil
53+
}
54+
55+
func (m *Message) UnmarshalBinary(b []byte) error {
56+
if err := msgpack.Unmarshal(b, (*MessageRaw)(m)); err != nil {
57+
return err
58+
}
59+
return nil
60+
}
61+
3962
func (m *Message) SetDelay(delay time.Duration) {
4063
m.Delay = delay
4164
}

0 commit comments

Comments
 (0)