From b4b85835940ceedd8b151d4cd5194a41434c215e Mon Sep 17 00:00:00 2001
From: Vasiliy Tolstov <v.tolstov@unistack.org>
Date: Thu, 21 Dec 2023 00:13:08 +0300
Subject: [PATCH] client/noop: fixup md

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
---
 client/noop.go | 38 ++++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/client/noop.go b/client/noop.go
index dd4085cb..1c92ed71 100644
--- a/client/noop.go
+++ b/client/noop.go
@@ -3,6 +3,7 @@ package client
 import (
 	"context"
 	"fmt"
+	"os"
 	"time"
 
 	"go.unistack.org/micro/v3/broker"
@@ -485,30 +486,35 @@ func (n *noopClient) publish(ctx context.Context, ps []Message, opts ...PublishO
 
 	msgs := make([]*broker.Message, 0, len(ps))
 
-	for _, p := range ps {
-		omd, ok := metadata.FromOutgoingContext(ctx)
-		if !ok {
-			omd = metadata.New(0)
-		}
+	// get proxy
+	exchange := ""
+	if v, ok := os.LookupEnv("MICRO_PROXY"); ok {
+		exchange = v
+	}
+	// get the exchange
+	if len(options.Exchange) > 0 {
+		exchange = options.Exchange
+	}
 
+	omd, ok := metadata.FromOutgoingContext(ctx)
+	if !ok {
+		omd = metadata.New(0)
+	}
+
+	for _, p := range ps {
 		md := metadata.Copy(omd)
+		md[metadata.HeaderContentType] = p.ContentType()
+		topic := p.Topic()
+		if len(exchange) > 0 {
+			topic = exchange
+		}
+		md[metadata.HeaderTopic] = topic
 		iter := p.Metadata().Iterator()
 		var k, v string
 		for iter.Next(&k, &v) {
 			md.Set(k, v)
 		}
 
-		md[metadata.HeaderContentType] = p.ContentType()
-
-		topic := p.Topic()
-
-		// get the exchange
-		if len(options.Exchange) > 0 {
-			topic = options.Exchange
-		}
-
-		md[metadata.HeaderTopic] = topic
-
 		var body []byte
 
 		// passed in raw data