metadata: add default headers
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
d357fb1e0d
commit
675e121049
@ -112,6 +112,13 @@ type Message struct {
|
|||||||
Body RawMessage
|
Body RawMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewMessage create broker message with topic filled
|
||||||
|
func NewMessage(topic string) *Message {
|
||||||
|
m := &Message{Header: metadata.New(2)}
|
||||||
|
m.Header.Set(metadata.HeaderTopic, topic)
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
// Subscriber is a convenience return type for the Subscribe method
|
// Subscriber is a convenience return type for the Subscribe method
|
||||||
type Subscriber interface {
|
type Subscriber interface {
|
||||||
// Options returns subscriber options
|
// Options returns subscriber options
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/unistack-org/micro/v3/logger"
|
"github.com/unistack-org/micro/v3/logger"
|
||||||
|
"github.com/unistack-org/micro/v3/metadata"
|
||||||
maddr "github.com/unistack-org/micro/v3/util/addr"
|
maddr "github.com/unistack-org/micro/v3/util/addr"
|
||||||
mnet "github.com/unistack-org/micro/v3/util/net"
|
mnet "github.com/unistack-org/micro/v3/util/net"
|
||||||
"github.com/unistack-org/micro/v3/util/rand"
|
"github.com/unistack-org/micro/v3/util/rand"
|
||||||
@ -113,14 +114,14 @@ func (m *memoryBroker) BatchPublish(ctx context.Context, msgs []*Message, opts .
|
|||||||
if m.opts.Codec == nil {
|
if m.opts.Codec == nil {
|
||||||
m.RLock()
|
m.RLock()
|
||||||
for _, msg := range msgs {
|
for _, msg := range msgs {
|
||||||
topic, _ := msg.Header.Get("Micro-Topic")
|
topic, _ := msg.Header.Get(metadata.HeaderTopic)
|
||||||
vs = append(vs, msgWrapper{topic: topic, body: m})
|
vs = append(vs, msgWrapper{topic: topic, body: m})
|
||||||
}
|
}
|
||||||
m.RUnlock()
|
m.RUnlock()
|
||||||
} else {
|
} else {
|
||||||
m.RLock()
|
m.RLock()
|
||||||
for _, msg := range msgs {
|
for _, msg := range msgs {
|
||||||
topic, _ := msg.Header.Get("Micro-Topic")
|
topic, _ := msg.Header.Get(metadata.HeaderTopic)
|
||||||
buf, err := m.opts.Codec.Marshal(msg)
|
buf, err := m.opts.Codec.Marshal(msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.RUnlock()
|
m.RUnlock()
|
||||||
|
@ -4,6 +4,8 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/unistack-org/micro/v3/metadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMemoryBatchBroker(t *testing.T) {
|
func TestMemoryBatchBroker(t *testing.T) {
|
||||||
@ -30,7 +32,7 @@ func TestMemoryBatchBroker(t *testing.T) {
|
|||||||
for i := 0; i < count; i++ {
|
for i := 0; i < count; i++ {
|
||||||
message := &Message{
|
message := &Message{
|
||||||
Header: map[string]string{
|
Header: map[string]string{
|
||||||
"Micro-Topic": topic,
|
metadata.HeaderTopic: topic,
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
"id": fmt.Sprintf("%d", i),
|
"id": fmt.Sprintf("%d", i),
|
||||||
},
|
},
|
||||||
@ -75,7 +77,7 @@ func TestMemoryBroker(t *testing.T) {
|
|||||||
for i := 0; i < count; i++ {
|
for i := 0; i < count; i++ {
|
||||||
message := &Message{
|
message := &Message{
|
||||||
Header: map[string]string{
|
Header: map[string]string{
|
||||||
"Micro-Topic": topic,
|
metadata.HeaderTopic: topic,
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
"id": fmt.Sprintf("%d", i),
|
"id": fmt.Sprintf("%d", i),
|
||||||
},
|
},
|
||||||
|
@ -190,8 +190,8 @@ func (n *noopClient) Publish(ctx context.Context, p Message, opts ...PublishOpti
|
|||||||
if !ok {
|
if !ok {
|
||||||
md = metadata.New(0)
|
md = metadata.New(0)
|
||||||
}
|
}
|
||||||
md["Content-Type"] = p.ContentType()
|
md[metadata.HeaderContentType] = p.ContentType()
|
||||||
md["Micro-Topic"] = p.Topic()
|
md[metadata.HeaderTopic] = p.Topic()
|
||||||
|
|
||||||
// passed in raw data
|
// passed in raw data
|
||||||
if d, ok := p.Payload().(*codec.Frame); ok {
|
if d, ok := p.Payload().(*codec.Frame); ok {
|
||||||
|
@ -6,8 +6,18 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
)
|
)
|
||||||
|
|
||||||
// HeaderPrefix for all headers passed
|
var (
|
||||||
var HeaderPrefix = "Micro-"
|
// HeaderTopic is the header name that contains topic name
|
||||||
|
HeaderTopic = "Micro-Topic"
|
||||||
|
// HeaderContentType specifies content type of message
|
||||||
|
HeaderContentType = "Content-Type"
|
||||||
|
// HeaderEndpoint specifies endpoint in service
|
||||||
|
HeaderEndpoint = "Micro-Endpoint"
|
||||||
|
// HeaderService specifies service
|
||||||
|
HeaderService = "Micro-Service"
|
||||||
|
// HeaderTimeout specifies timeout of operation
|
||||||
|
HeaderTimeout = "Micro-Timeout"
|
||||||
|
)
|
||||||
|
|
||||||
// Metadata is our way of representing request headers internally.
|
// Metadata is our way of representing request headers internally.
|
||||||
// They're used at the RPC level and translate back and forth
|
// They're used at the RPC level and translate back and forth
|
||||||
|
@ -78,7 +78,7 @@ func (t *tunBroker) BatchPublish(ctx context.Context, msgs []*broker.Message, op
|
|||||||
|
|
||||||
var err error
|
var err error
|
||||||
for _, msg := range msgs {
|
for _, msg := range msgs {
|
||||||
topic, _ := msg.Header.Get("Micro-Topic")
|
topic, _ := msg.Header.Get(metadata.HeaderTopic)
|
||||||
c, ok := topicMap[topic]
|
c, ok := topicMap[topic]
|
||||||
if !ok {
|
if !ok {
|
||||||
c, err := t.tunnel.Dial(ctx, topic, tunnel.DialMode(tunnel.Multicast))
|
c, err := t.tunnel.Dial(ctx, topic, tunnel.DialMode(tunnel.Multicast))
|
||||||
|
Loading…
Reference in New Issue
Block a user