package queue type QueueMessage interface { GetKey() string GetData() []byte GetHeaders() QueueMsgHeaders } type QueueMsgHeaders interface { Put(key string, value []byte) Get(key string) []byte GetData() map[string][]byte } type DefaultQueueMsg struct { Key string Data []byte Headers *DefaultQueueMsgHeader } func (d *DefaultQueueMsg) GetKey() string { return d.Key } func (d *DefaultQueueMsg) GetData() []byte { return d.Data } func (d *DefaultQueueMsg) GetHeaders() QueueMsgHeaders { return d.Headers } type DefaultQueueMsgHeader struct { data map[string][]byte } func (d *DefaultQueueMsgHeader) Put(key string, value []byte) { d.data[key] = value } func (d *DefaultQueueMsgHeader) Get(key string) []byte { if v, ok := d.data[key]; !ok { return nil } else { return v } } func (d *DefaultQueueMsgHeader) GetData() map[string][]byte { return d.data }