@@ -330,9 +330,10 @@ func (s *StreamQueueSpecification) buildArguments() map[string]any {
330330type TExchangeType string
331331
332332const (
333- Direct TExchangeType = "direct"
334- Topic TExchangeType = "topic"
335- FanOut TExchangeType = "fanout"
333+ Direct TExchangeType = "direct"
334+ Topic TExchangeType = "topic"
335+ FanOut TExchangeType = "fanout"
336+ Headers TExchangeType = "headers"
336337)
337338
338339type ExchangeType struct {
@@ -414,6 +415,51 @@ func (f *FanOutExchangeSpecification) buildArguments() map[string]any {
414415 return map [string ]any {}
415416}
416417
418+ type HeadersExchangeSpecification struct {
419+ Name string
420+ IsAutoDelete bool
421+ }
422+
423+ func (h * HeadersExchangeSpecification ) name () string {
424+ return h .Name
425+ }
426+
427+ func (h * HeadersExchangeSpecification ) isAutoDelete () bool {
428+ return h .IsAutoDelete
429+ }
430+
431+ func (h * HeadersExchangeSpecification ) exchangeType () ExchangeType {
432+ return ExchangeType {Type : Headers }
433+ }
434+
435+ func (h * HeadersExchangeSpecification ) buildArguments () map [string ]any {
436+ return map [string ]any {}
437+ }
438+
439+ type CustomExchangeSpecification struct {
440+ Name string
441+ IsAutoDelete bool
442+ ExchangeTypeName string
443+ }
444+
445+ func (c * CustomExchangeSpecification ) name () string {
446+ return c .Name
447+ }
448+
449+ func (c * CustomExchangeSpecification ) isAutoDelete () bool {
450+ return c .IsAutoDelete
451+ }
452+
453+ func (c * CustomExchangeSpecification ) exchangeType () ExchangeType {
454+ return ExchangeType {Type : TExchangeType (c .ExchangeTypeName )}
455+ }
456+
457+ func (c * CustomExchangeSpecification ) buildArguments () map [string ]any {
458+ return map [string ]any {}
459+ }
460+
461+ // / **** Binding ****
462+
417463type BindingSpecification interface {
418464 sourceExchange () string
419465 destination () string
0 commit comments