संदेश

संदेश Watermill के मूल भागों में से एक है। संदेश "प्रकाशकों" द्वारा प्रकाशित किए जाते हैं और "ग्राहकों" द्वारा प्राप्त किए जाते हैं। संदेश का प्रसंस्करण करते समय, यदि प्रसंस्करण विफल होता है, तो आपको एक Ack() (सफल प्रसंस्करण का संकेत देता है) या एक Nack() (प्रसंस्करण विफलता का संकेत देता है) भेजना चाहिए।

संदेश का Ack और Nack ग्राहकों द्वारा हैं (डिफ़ॉल्ट अनुमानित रूप में, ग्राहक Ack या Nack का इंतजार करेंगे)।

पूरा स्रोत कोड: github.com/ThreeDotsLabs/watermill/message/message.go

// ...
type Message struct {
	// UUID संदेश की अद्वितीय पहचानकर्ता है।
	//
	// यह Watermill द्वारा डीबगिंग के लिए उपयोग किया जाता है।
	// UUID खाली भी हो सकता है।
	UUID string

	// Metadata संदेश का मेटाडेटा धारण करता है।
	//
	// पूरे पेयलोड से डिकोड करने की आवश्यकता नहीं होने वाले डेटा को संग्रहित करने के लिए प्रयोग किया जा सकता है।
	// यह HTTP अनुरोध हेडर के अनुरूप होता है।
	//
	// मेटाडेटा को marshaled करके और PubSub में सहेजा जाएगा।
	Metadata Metadata

	// पेयलोड संदेश का पेयलोड होता है।
	Payload Payload

	// एक भेजा जाता है जब एक स्वीकृति प्राप्त होता है।
	// noAck एक नकारात्मक स्वीकृति प्राप्त होने पर बंद किया जाता है।
	ack chan struct{}
	noAck chan struct{}

	ackMutex sync.Mutex
	ackSentType ackType

	ctx context.Context
}

// ...

Ack

Ack भेजना

पूरा स्रोत कोड: github.com/ThreeDotsLabs/watermill/message/message.go

// ...
// Ack संदेश के लिए एक स्वीकृति भेजता है।
//
// Ack रोक नहीं देता।
// Ack idempotent है।
// अगर पहले से ही Nack भेज दिया गया है तो false लौटाता है।
func (m *Message) Ack() bool {
// ...

Nack

पूरा स्रोत कोड: github.com/ThreeDotsLabs/watermill/message/message.go

// ...
// Nack संदेश के लिए एक नकारात्मक स्वीकृति भेजता है।
//
// Nack रोक नहीं देता।
// Nack idempotent है।
// अगर पहले से ही Ack भेज दिया गया है तो false लौटाता है।
func (m *Message) Nack() bool {
// ...

Ack/Nack प्राप्त करना

पूरा स्रोत कोड: github.com/ThreeDotsLabs/watermill/docs/content/docs/message/receiving-ack.go

// ...
select {
case 

संदेश

संदेश मानक पुस्तकालय का संदर्भ रखते हैं, जैसे कि एक HTTP अनुरोध।

पूरा स्रोत कोड: github.com/ThreeDotsLabs/watermill/message/message.go

// ...
// Context संदेश का संदेश है। ताकि, कॉन्टेक्स्ट बदलने के लिए SetContext का प्रयोग करें।
//
// वापसी कॉन्टेक्स्ट हमेशा गैर-निल होता है; डिफ़ॉल्ट रूप में पृष्ठभूमि का कॉन्टेक्स्ट होता है।
func (m *Message) Context() context.Context {
	if m.ctx != nil {
		return m.ctx
	}
	return context.Background()
}

// SetContext द्वारा प्रदान किए गए कॉन्टेक्स्ट को संदेश का कॉन्टेक्स्ट सेट करता है।
func (m *Message) SetContext(ctx context.Context) {
	m.ctx = ctx
}
// ...