Skip to content

Latest commit

 

History

History
65 lines (38 loc) · 2.15 KB

UPGRADE-0.4.md

File metadata and controls

65 lines (38 loc) · 2.15 KB

UPGRADE FROM 0.3.x to 0.4

watermill/components/cqrs

CommandHandler.HandlerName and EventHandler.HandlerName was added to the interface.

If you are using metrics component, you may want to keep backward capability with handler names. In other cases, you can implement your own method of generating handler name.

Keeping backward capability for event handlers:

func (h CommandHandler) HandlerName() string {
    return fmt.Sprintf("command_processor-%s", h)
}

Keeping backward capability for command handlers:

func (h EventHandler) HandlerName() string {
    return fmt.Sprintf("event_processor-%s", ObjectName(h))
}

Added CommandsSubscriberConstructor and EventsSubscriberConstructor

From now on, CommandsSubscriberConstructor and EventsSubscriberConstructor are passed to constructors in CQRS component.

They allow creating customized subscribers for every handler. For usage examples please check _examples/cqrs-protobuf.

Added context to CommandHandler.Handle, CommandBus.Send, EventHandler.Handle and EventBus.Send

Added missing context, which is passed to Publish function and handlers.

Other

  • NewCommandProcessor and NewEventProcessor now return an error instead of panic
  • DuplicateCommandHandlerError is returned instead of panic when two handlers are handling the same command
  • CommandProcessor.routerHandlerFunc and EventProcessor.routerHandlerFunc are now private
  • using GenerateCommandsTopic and GenerateEventsTopic functions instead of constant topic to allow more flexibility

watermill/message/infrastructure/amqp

Config.QueueBindConfig.RoutingKey was replaced with GenerateRoutingKey

For backward compatibility, when using the constant value you should use a function:

func(topic string) string {
    return "routing_key"
}

message/router/middleware

  • PoisonQueue is now PoisonQueue(pub message.Publisher, topic string) (message.HandlerMiddleware, error), not a struct

message/router.go

  • From now on, when all handlers are stopped, the router will also stop (TestRouter_stop_when_all_handlers_stopped test)