SYMBOL INDEX (1538 symbols across 211 files) FILE: _examples/basic/1-your-first-app/main.go type event (line 28) | type event struct type processedEvent (line 32) | type processedEvent struct function main (line 37) | func main() { function createPublisher (line 95) | func createPublisher() message.Publisher { function createSubscriber (line 111) | func createSubscriber(consumerGroup string) message.Subscriber { function simulateEvents (line 128) | func simulateEvents(publisher message.Publisher) { FILE: _examples/basic/2-realtime-feed/consumer/main.go function main (line 22) | func main() { function createSubscriber (line 104) | func createSubscriber(consumerGroup string, logger watermill.LoggerAdapt... type postsCountUpdated (line 120) | type postsCountUpdated struct type countStorage (line 124) | type countStorage interface type memoryCountStorage (line 129) | type memoryCountStorage struct method CountAdd (line 133) | func (m memoryCountStorage) CountAdd() (int64, error) { method Count (line 137) | func (m memoryCountStorage) Count() (int64, error) { type PostsCounter (line 141) | type PostsCounter struct method Count (line 145) | func (p PostsCounter) Count(msg *message.Message) ([]*message.Message,... type postAdded (line 166) | type postAdded struct type feedStorage (line 172) | type feedStorage interface type printFeedStorage (line 176) | type printFeedStorage struct method AddToFeed (line 178) | func (printFeedStorage) AddToFeed(title, author string, time time.Time... type FeedGenerator (line 183) | type FeedGenerator struct method UpdateFeed (line 187) | func (f FeedGenerator) UpdateFeed(message *message.Message) error { FILE: _examples/basic/2-realtime-feed/producer/main.go function main (line 27) | func main() { function worker (line 66) | func worker(publisher message.Publisher, wg *sync.WaitGroup, closeCh cha... type postAdded (line 103) | type postAdded struct FILE: _examples/basic/3-router/main.go function main (line 23) | func main() { function publishMessages (line 103) | func publishMessages(publisher message.Publisher) { function printMessages (line 118) | func printMessages(msg *message.Message) error { type structHandler (line 126) | type structHandler struct method Handler (line 130) | func (s structHandler) Handler(msg *message.Message) ([]*message.Messa... FILE: _examples/basic/4-metrics/main.go function delay (line 27) | func delay() { function handler (line 37) | func handler(msg *message.Message) ([]*message.Message, error) { function consumeMessages (line 50) | func consumeMessages(subscriber message.Subscriber) { function produceMessages (line 62) | func produceMessages(routerClosed chan struct{}, publisher message.Publi... function main (line 77) | func main() { type randomFailPublisherDecorator (line 136) | type randomFailPublisherDecorator struct method Publish (line 141) | func (r randomFailPublisherDecorator) Publish(topic string, messages .... FILE: _examples/basic/5-cqrs-protobuf/main.go type BookRoomHandler (line 23) | type BookRoomHandler struct method Handle (line 27) | func (b BookRoomHandler) Handle(ctx context.Context, cmd *BookRoom) er... type OrderBeerOnRoomBooked (line 56) | type OrderBeerOnRoomBooked struct method Handle (line 60) | func (o OrderBeerOnRoomBooked) Handle(ctx context.Context, event *Room... type OrderBeerHandler (line 71) | type OrderBeerHandler struct method Handle (line 75) | func (o OrderBeerHandler) Handle(ctx context.Context, cmd *OrderBeer) ... type BookingsFinancialReport (line 96) | type BookingsFinancialReport struct method Handle (line 106) | func (b *BookingsFinancialReport) Handle(ctx context.Context, event *R... function NewBookingsFinancialReport (line 102) | func NewBookingsFinancialReport() *BookingsFinancialReport { function main (line 127) | func main() { function publishCommands (line 331) | func publishCommands(commandBus *cqrs.CommandBus) func() { FILE: _examples/basic/5-cqrs-protobuf/messages.pb.go constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type BookRoom (line 24) | type BookRoom struct method Reset (line 35) | func (x *BookRoom) Reset() { method String (line 44) | func (x *BookRoom) String() string { method ProtoMessage (line 48) | func (*BookRoom) ProtoMessage() {} method ProtoReflect (line 50) | func (x *BookRoom) ProtoReflect() protoreflect.Message { method Descriptor (line 63) | func (*BookRoom) Descriptor() ([]byte, []int) { method GetRoomId (line 67) | func (x *BookRoom) GetRoomId() string { method GetGuestName (line 74) | func (x *BookRoom) GetGuestName() string { method GetStartDate (line 81) | func (x *BookRoom) GetStartDate() *timestamppb.Timestamp { method GetEndDate (line 88) | func (x *BookRoom) GetEndDate() *timestamppb.Timestamp { type RoomBooked (line 95) | type RoomBooked struct method Reset (line 108) | func (x *RoomBooked) Reset() { method String (line 117) | func (x *RoomBooked) String() string { method ProtoMessage (line 121) | func (*RoomBooked) ProtoMessage() {} method ProtoReflect (line 123) | func (x *RoomBooked) ProtoReflect() protoreflect.Message { method Descriptor (line 136) | func (*RoomBooked) Descriptor() ([]byte, []int) { method GetReservationId (line 140) | func (x *RoomBooked) GetReservationId() string { method GetRoomId (line 147) | func (x *RoomBooked) GetRoomId() string { method GetGuestName (line 154) | func (x *RoomBooked) GetGuestName() string { method GetPrice (line 161) | func (x *RoomBooked) GetPrice() int64 { method GetStartDate (line 168) | func (x *RoomBooked) GetStartDate() *timestamppb.Timestamp { method GetEndDate (line 175) | func (x *RoomBooked) GetEndDate() *timestamppb.Timestamp { type OrderBeer (line 182) | type OrderBeer struct method Reset (line 191) | func (x *OrderBeer) Reset() { method String (line 200) | func (x *OrderBeer) String() string { method ProtoMessage (line 204) | func (*OrderBeer) ProtoMessage() {} method ProtoReflect (line 206) | func (x *OrderBeer) ProtoReflect() protoreflect.Message { method Descriptor (line 219) | func (*OrderBeer) Descriptor() ([]byte, []int) { method GetRoomId (line 223) | func (x *OrderBeer) GetRoomId() string { method GetCount (line 230) | func (x *OrderBeer) GetCount() int64 { type BeerOrdered (line 237) | type BeerOrdered struct method Reset (line 246) | func (x *BeerOrdered) Reset() { method String (line 255) | func (x *BeerOrdered) String() string { method ProtoMessage (line 259) | func (*BeerOrdered) ProtoMessage() {} method ProtoReflect (line 261) | func (x *BeerOrdered) ProtoReflect() protoreflect.Message { method Descriptor (line 274) | func (*BeerOrdered) Descriptor() ([]byte, []int) { method GetRoomId (line 278) | func (x *BeerOrdered) GetRoomId() string { method GetCount (line 285) | func (x *BeerOrdered) GetCount() int64 { function file_messages_proto_rawDescGZIP (line 341) | func file_messages_proto_rawDescGZIP() []byte { function init (line 368) | func init() { file_messages_proto_init() } function file_messages_proto_init (line 369) | func file_messages_proto_init() { FILE: _examples/basic/6-cqrs-ordered-events/activity.go type ActivityEntry (line 12) | type ActivityEntry struct type ActivityTimelineReadModel (line 20) | type ActivityTimelineReadModel struct method OnSubscribed (line 32) | func (m *ActivityTimelineReadModel) OnSubscribed(ctx context.Context, ... method OnUnsubscribed (line 49) | func (m *ActivityTimelineReadModel) OnUnsubscribed(ctx context.Context... method OnEmailUpdated (line 66) | func (m *ActivityTimelineReadModel) OnEmailUpdated(ctx context.Context... method logActivity (line 82) | func (m *ActivityTimelineReadModel) logActivity(entry ActivityEntry) { function NewActivityTimelineModel (line 25) | func NewActivityTimelineModel() *ActivityTimelineReadModel { FILE: _examples/basic/6-cqrs-ordered-events/main.go function main (line 16) | func main() { function simulateTraffic (line 192) | func simulateTraffic(commandBus *cqrs.CommandBus) { type SubscribeHandler (line 229) | type SubscribeHandler struct method Handle (line 233) | func (h SubscribeHandler) Handle(ctx context.Context, cmd *Subscribe) ... type UnsubscribeHandler (line 241) | type UnsubscribeHandler struct method Handle (line 245) | func (h UnsubscribeHandler) Handle(ctx context.Context, cmd *Unsubscri... type UpdateEmailHandler (line 252) | type UpdateEmailHandler struct method Handle (line 256) | func (h UpdateEmailHandler) Handle(ctx context.Context, cmd *UpdateEma... FILE: _examples/basic/6-cqrs-ordered-events/message.go function GenerateMessageMetadata (line 12) | func GenerateMessageMetadata(partitionKey string) *MessageMetadata { type CqrsMarshalerDecorator (line 19) | type CqrsMarshalerDecorator struct method Marshal (line 25) | func (c CqrsMarshalerDecorator) Marshal(v interface{}) (*message.Messa... constant PartitionKeyMetadataField (line 23) | PartitionKeyMetadataField = "partition_key" type ProtoMessage (line 47) | type ProtoMessage interface function GenerateKafkaPartitionKey (line 52) | func GenerateKafkaPartitionKey(topic string, msg *message.Message) (stri... FILE: _examples/basic/6-cqrs-ordered-events/messages.pb.go constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type MessageMetadata (line 24) | type MessageMetadata struct method Reset (line 33) | func (x *MessageMetadata) Reset() { method String (line 42) | func (x *MessageMetadata) String() string { method ProtoMessage (line 46) | func (*MessageMetadata) ProtoMessage() {} method ProtoReflect (line 48) | func (x *MessageMetadata) ProtoReflect() protoreflect.Message { method Descriptor (line 61) | func (*MessageMetadata) Descriptor() ([]byte, []int) { method GetPartitionKey (line 65) | func (x *MessageMetadata) GetPartitionKey() string { method GetCreatedAt (line 72) | func (x *MessageMetadata) GetCreatedAt() *timestamppb.Timestamp { type Subscribe (line 80) | type Subscribe struct method Reset (line 90) | func (x *Subscribe) Reset() { method String (line 99) | func (x *Subscribe) String() string { method ProtoMessage (line 103) | func (*Subscribe) ProtoMessage() {} method ProtoReflect (line 105) | func (x *Subscribe) ProtoReflect() protoreflect.Message { method Descriptor (line 118) | func (*Subscribe) Descriptor() ([]byte, []int) { method GetMetadata (line 122) | func (x *Subscribe) GetMetadata() *MessageMetadata { method GetSubscriberId (line 129) | func (x *Subscribe) GetSubscriberId() string { method GetEmail (line 136) | func (x *Subscribe) GetEmail() string { type Unsubscribe (line 143) | type Unsubscribe struct method Reset (line 152) | func (x *Unsubscribe) Reset() { method String (line 161) | func (x *Unsubscribe) String() string { method ProtoMessage (line 165) | func (*Unsubscribe) ProtoMessage() {} method ProtoReflect (line 167) | func (x *Unsubscribe) ProtoReflect() protoreflect.Message { method Descriptor (line 180) | func (*Unsubscribe) Descriptor() ([]byte, []int) { method GetMetadata (line 184) | func (x *Unsubscribe) GetMetadata() *MessageMetadata { method GetSubscriberId (line 191) | func (x *Unsubscribe) GetSubscriberId() string { type UpdateEmail (line 198) | type UpdateEmail struct method Reset (line 208) | func (x *UpdateEmail) Reset() { method String (line 217) | func (x *UpdateEmail) String() string { method ProtoMessage (line 221) | func (*UpdateEmail) ProtoMessage() {} method ProtoReflect (line 223) | func (x *UpdateEmail) ProtoReflect() protoreflect.Message { method Descriptor (line 236) | func (*UpdateEmail) Descriptor() ([]byte, []int) { method GetMetadata (line 240) | func (x *UpdateEmail) GetMetadata() *MessageMetadata { method GetSubscriberId (line 247) | func (x *UpdateEmail) GetSubscriberId() string { method GetNewEmail (line 254) | func (x *UpdateEmail) GetNewEmail() string { type SubscriberSubscribed (line 262) | type SubscriberSubscribed struct method Reset (line 272) | func (x *SubscriberSubscribed) Reset() { method String (line 281) | func (x *SubscriberSubscribed) String() string { method ProtoMessage (line 285) | func (*SubscriberSubscribed) ProtoMessage() {} method ProtoReflect (line 287) | func (x *SubscriberSubscribed) ProtoReflect() protoreflect.Message { method Descriptor (line 300) | func (*SubscriberSubscribed) Descriptor() ([]byte, []int) { method GetMetadata (line 304) | func (x *SubscriberSubscribed) GetMetadata() *MessageMetadata { method GetSubscriberId (line 311) | func (x *SubscriberSubscribed) GetSubscriberId() string { method GetEmail (line 318) | func (x *SubscriberSubscribed) GetEmail() string { type SubscriberUnsubscribed (line 325) | type SubscriberUnsubscribed struct method Reset (line 334) | func (x *SubscriberUnsubscribed) Reset() { method String (line 343) | func (x *SubscriberUnsubscribed) String() string { method ProtoMessage (line 347) | func (*SubscriberUnsubscribed) ProtoMessage() {} method ProtoReflect (line 349) | func (x *SubscriberUnsubscribed) ProtoReflect() protoreflect.Message { method Descriptor (line 362) | func (*SubscriberUnsubscribed) Descriptor() ([]byte, []int) { method GetMetadata (line 366) | func (x *SubscriberUnsubscribed) GetMetadata() *MessageMetadata { method GetSubscriberId (line 373) | func (x *SubscriberUnsubscribed) GetSubscriberId() string { type SubscriberEmailUpdated (line 380) | type SubscriberEmailUpdated struct method Reset (line 390) | func (x *SubscriberEmailUpdated) Reset() { method String (line 399) | func (x *SubscriberEmailUpdated) String() string { method ProtoMessage (line 403) | func (*SubscriberEmailUpdated) ProtoMessage() {} method ProtoReflect (line 405) | func (x *SubscriberEmailUpdated) ProtoReflect() protoreflect.Message { method Descriptor (line 418) | func (*SubscriberEmailUpdated) Descriptor() ([]byte, []int) { method GetMetadata (line 422) | func (x *SubscriberEmailUpdated) GetMetadata() *MessageMetadata { method GetSubscriberId (line 429) | func (x *SubscriberEmailUpdated) GetSubscriberId() string { method GetNewEmail (line 436) | func (x *SubscriberEmailUpdated) GetNewEmail() string { function file_messages_proto_rawDescGZIP (line 512) | func file_messages_proto_rawDescGZIP() []byte { function init (line 545) | func init() { file_messages_proto_init() } function file_messages_proto_init (line 546) | func file_messages_proto_init() { FILE: _examples/basic/6-cqrs-ordered-events/subscribers.go type SubscriberReadModel (line 9) | type SubscriberReadModel struct method OnSubscribed (line 20) | func (m *SubscriberReadModel) OnSubscribed(ctx context.Context, event ... method OnUnsubscribed (line 35) | func (m *SubscriberReadModel) OnUnsubscribed(ctx context.Context, even... method OnEmailUpdated (line 49) | func (m *SubscriberReadModel) OnEmailUpdated(ctx context.Context, even... method GetSubscriberCount (line 64) | func (m *SubscriberReadModel) GetSubscriberCount() int { function NewSubscriberReadModel (line 14) | func NewSubscriberReadModel() *SubscriberReadModel { FILE: _examples/pubsubs/amqp/main.go function main (line 16) | func main() { function publishMessages (line 47) | func publishMessages(publisher message.Publisher) { function process (line 59) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/aws-sns/main.go function main (line 23) | func main() { function publishMessages (line 113) | func publishMessages(publisher message.Publisher) { function process (line 125) | func process(prefix string, messages <-chan *message.Message) { FILE: _examples/pubsubs/aws-sqs/main.go function main (line 20) | func main() { function publishMessages (line 65) | func publishMessages(publisher message.Publisher) { function process (line 77) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/go-channel/main.go function main (line 14) | func main() { function publishMessages (line 30) | func publishMessages(publisher message.Publisher) { function process (line 42) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/googlecloud/main.go function main (line 14) | func main() { function publishMessages (line 49) | func publishMessages(publisher message.Publisher) { function process (line 61) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/kafka/main.go function main (line 16) | func main() { function publishMessages (line 55) | func publishMessages(publisher message.Publisher) { function process (line 67) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/nats-core/main.go function main (line 18) | func main() { function publishMessages (line 77) | func publishMessages(publisher message.Publisher) { function process (line 89) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/nats-jetstream/main.go function main (line 18) | func main() { function processJS (line 97) | func processJS(messages <-chan *message.Message) { FILE: _examples/pubsubs/nats-streaming/main.go function main (line 16) | func main() { function publishMessages (line 62) | func publishMessages(publisher message.Publisher) { function process (line 74) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/redisstream/main.go function main (line 15) | func main() { function publishMessages (line 57) | func publishMessages(publisher message.Publisher) { function process (line 69) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/sql/main.go function main (line 17) | func main() { function createDB (line 55) | func createDB() *stdSQL.DB { function publishMessages (line 75) | func publishMessages(publisher message.Publisher) { function process (line 87) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/sqlite-zombiezen/main.go function main (line 16) | func main() { function publishMessages (line 53) | func publishMessages(publisher message.Publisher) { function process (line 65) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/sqlite-zombiezen/transaction.go function publishWithInTransaction (line 11) | func publishWithInTransaction(connectionDSN string) { FILE: _examples/pubsubs/sqlite/main.go function main (line 16) | func main() { function createDB (line 52) | func createDB() *sql.DB { function publishMessages (line 70) | func publishMessages(publisher message.Publisher) { function process (line 82) | func process(messages <-chan *message.Message) { FILE: _examples/pubsubs/sqlite/transaction.go function publishWithInTransaction (line 12) | func publishWithInTransaction(db *sql.DB) { FILE: _examples/real-world-examples/consumer-groups/api/http.go type Handler (line 17) | type Handler struct method Mux (line 27) | func (h Handler) Mux() *chi.Mux { method SendMessage (line 65) | func (h Handler) SendMessage(w http.ResponseWriter, r *http.Request) { type messagesStream (line 98) | type messagesStream struct method GetResponse (line 103) | func (p messagesStream) GetResponse(w http.ResponseWriter, r *http.Req... method Validate (line 109) | func (p messagesStream) Validate(r *http.Request, msg *message.Message... function fileServer (line 121) | func fileServer(r chi.Router, path string, root http.FileSystem) { function logAndWriteError (line 139) | func logAndWriteError(logger watermill.LoggerAdapter, w http.ResponseWri... function requestIDMiddleware (line 144) | func requestIDMiddleware(next http.Handler) http.Handler { FILE: _examples/real-world-examples/consumer-groups/api/main.go function main (line 16) | func main() { FILE: _examples/real-world-examples/consumer-groups/api/storage.go type storage (line 9) | type storage struct method Append (line 14) | func (s *storage) Append(message common.MessageReceived) { method PopAll (line 23) | func (s *storage) PopAll(key string) []common.MessageReceived { FILE: _examples/real-world-examples/consumer-groups/common/events.go type UserSignedUp (line 3) | type UserSignedUp struct type Consents (line 8) | type Consents struct type MessageReceived (line 13) | type MessageReceived struct FILE: _examples/real-world-examples/consumer-groups/common/messaging.go constant UpdatesTopic (line 11) | UpdatesTopic = "updates" function NotifyMiddleware (line 13) | func NotifyMiddleware(pub message.Publisher, serviceName string) func(me... FILE: _examples/real-world-examples/consumer-groups/crm-service/main.go function main (line 25) | func main() { function HandleCRM (line 153) | func HandleCRM(ctx context.Context, e *common.UserSignedUp) error { function HandleSupport (line 159) | func HandleSupport(ctx context.Context, e *common.UserSignedUp) error { FILE: _examples/real-world-examples/consumer-groups/newsletter-service/main.go function main (line 25) | func main() { function HandleNews (line 377) | func HandleNews(ctx context.Context, e *common.UserSignedUp) error { function HandlePromotions (line 387) | func HandlePromotions(ctx context.Context, e *common.UserSignedUp) error { FILE: _examples/real-world-examples/delayed-messages/main.go function main (line 24) | func main() { type Customer (line 207) | type Customer struct type OrderPlaced (line 212) | type OrderPlaced struct type SendFeedbackForm (line 217) | type SendFeedbackForm struct FILE: _examples/real-world-examples/delayed-requeue/main.go function main (line 23) | func main() { function newFakeOrderPlaced (line 145) | func newFakeOrderPlaced() OrderPlaced { type OrderPlaced (line 173) | type OrderPlaced struct type Customer (line 180) | type Customer struct type Address (line 187) | type Address struct type Product (line 194) | type Product struct FILE: _examples/real-world-examples/exactly-once-delivery-counter/run.go constant messagesCount (line 16) | messagesCount = 5000 constant senderGoroutines (line 34) | senderGoroutines = 5 function main (line 36) | func main() { function getDbCounterValue (line 111) | func getDbCounterValue(db *stdSQL.DB, counterUUID string) (int, error) { function restartWorker (line 122) | func restartWorker() { function restartMySQL (line 130) | func restartMySQL() { function sendCountRequest (line 138) | func sendCountRequest(counterUUID string) { function createDB (line 151) | func createDB() *stdSQL.DB { FILE: _examples/real-world-examples/exactly-once-delivery-counter/schema.sql type counter (line 1) | CREATE TABLE counter ( FILE: _examples/real-world-examples/exactly-once-delivery-counter/server/main.go constant topic (line 17) | topic = "counter" function main (line 19) | func main() { type messagePayload (line 64) | type messagePayload struct function createDB (line 68) | func createDB() *stdSQL.DB { FILE: _examples/real-world-examples/exactly-once-delivery-counter/worker/main.go constant topic (line 19) | topic = "counter" function main (line 21) | func main() { type messagePayload (line 34) | type messagePayload struct function runWatermillRouter (line 38) | func runWatermillRouter(db *stdSQL.DB, logger watermill.LoggerAdapter) { function processMessage (line 69) | func processMessage(msg *message.Message) error { function updateDbCounter (line 96) | func updateDbCounter(ctx context.Context, tx sql.Tx, counterUUD string, ... function dbCounterValue (line 111) | func dbCounterValue(ctx context.Context, tx sql.Tx, counterUUID string) ... function createDB (line 130) | func createDB() *stdSQL.DB { FILE: _examples/real-world-examples/persistent-event-log/main.go type event (line 26) | type event struct function main (line 31) | func main() { function createDB (line 71) | func createDB() *stdSQL.DB { function createSubscriber (line 91) | func createSubscriber() message.Subscriber { function createPublisher (line 105) | func createPublisher(db *stdSQL.DB) message.Publisher { function simulateEvents (line 121) | func simulateEvents() { FILE: _examples/real-world-examples/receiving-webhooks/main.go type Webhook (line 26) | type Webhook struct function main (line 30) | func main() { FILE: _examples/real-world-examples/sending-webhooks/producer/main.go type eventType (line 18) | type eventType constant Foo (line 21) | Foo eventType = "Foo" constant Bar (line 22) | Bar eventType = "Bar" constant Baz (line 23) | Baz eventType = "Baz" function main (line 26) | func main() { FILE: _examples/real-world-examples/sending-webhooks/router/main.go function filterMessages (line 18) | func filterMessages(acceptedTypes ...string) message.HandlerFunc { function main (line 34) | func main() { FILE: _examples/real-world-examples/sending-webhooks/webhooks-server/main.go function handler (line 11) | func handler(w http.ResponseWriter, r *http.Request) { function main (line 27) | func main() { FILE: _examples/real-world-examples/server-sent-events-htmx/events.go type PostViewed (line 18) | type PostViewed struct type PostReactionAdded (line 22) | type PostReactionAdded struct type PostStatsUpdated (line 27) | type PostStatsUpdated struct type Routers (line 35) | type Routers struct function NewRouters (line 41) | func NewRouters(cfg config, repo *Repository) (Routers, error) { FILE: _examples/real-world-examples/server-sent-events-htmx/http.go type Handler (line 21) | type Handler struct method Index (line 64) | func (h Handler) Index(c echo.Context) error { method Posts (line 73) | func (h Handler) Posts(c echo.Context) error { method Idle (line 82) | func (h Handler) Idle(c echo.Context) error { method allPosts (line 86) | func (h Handler) allPosts(c echo.Context) ([]views.Post, error) { method AddReaction (line 111) | func (h Handler) AddReaction(c echo.Context) error { function NewHandler (line 26) | func NewHandler(repo *Repository, eventBus *cqrs.EventBus, sseRouter wat... type statsStream (line 146) | type statsStream struct method InitialStreamResponse (line 150) | func (s *statsStream) InitialStreamResponse(w http.ResponseWriter, r *... method NextStreamResponse (line 182) | func (s *statsStream) NextStreamResponse(r *http.Request, msg *message... function newPostStatsView (line 218) | func newPostStatsView(ctx context.Context, stats PostStats) (interface{}... function newPostView (line 248) | func newPostView(p Post) views.Post { type sseHandlersCounter (line 257) | type sseHandlersCounter struct method Middleware (line 261) | func (s *sseHandlersCounter) Middleware(next echo.HandlerFunc) echo.Ha... FILE: _examples/real-world-examples/server-sent-events-htmx/main.go type config (line 14) | type config struct function main (line 20) | func main() { FILE: _examples/real-world-examples/server-sent-events-htmx/models.go function mustReactionByID (line 28) | func mustReactionByID(id string) Reaction { type Reaction (line 38) | type Reaction struct type Post (line 43) | type Post struct type PostStats (line 52) | type PostStats struct FILE: _examples/real-world-examples/server-sent-events-htmx/repository.go constant migration (line 10) | migration = ` function MigrateDB (line 26) | func MigrateDB(db *sql.DB) error { type Repository (line 31) | type Repository struct method PostByID (line 41) | func (s *Repository) PostByID(ctx context.Context, id int) (Post, erro... method AllPosts (line 51) | func (s *Repository) AllPosts(ctx context.Context) ([]Post, error) { method UpdatePost (line 69) | func (s *Repository) UpdatePost(ctx context.Context, id int, updateFn ... function NewRepository (line 35) | func NewRepository(db *sql.DB) *Repository { type scanner (line 107) | type scanner interface function scanPost (line 111) | func scanPost(s scanner) (Post, error) { FILE: _examples/real-world-examples/server-sent-events-htmx/views/base_templ.go function base (line 13) | func base() templ.Component { FILE: _examples/real-world-examples/server-sent-events-htmx/views/pages_templ.go type Post (line 13) | type Post struct type Reaction (line 20) | type Reaction struct type PostStats (line 27) | type PostStats struct type PostViews (line 33) | type PostViews struct function Index (line 38) | func Index(posts []Post) templ.Component { function Posts (line 77) | func Posts(posts []Post) templ.Component { function Idle (line 111) | func Idle() templ.Component { function postView (line 135) | func postView(post Post) templ.Component { function PostStatsView (line 211) | func PostStatsView(stats PostStats) templ.Component { function reactionButton (line 276) | func reactionButton(postID string, reaction Reaction) templ.Component { function UpdatedButton (line 374) | func UpdatedButton(label string) templ.Component { FILE: _examples/real-world-examples/server-sent-events/schema.sql type example (line 1) | CREATE TABLE example.posts ( FILE: _examples/real-world-examples/server-sent-events/server/event_handlers.go constant PostCreatedTopic (line 16) | PostCreatedTopic = "post-created" constant PostUpdatedTopic (line 17) | PostUpdatedTopic = "post-updated" constant FeedUpdatedTopic (line 18) | FeedUpdatedTopic = "feed-updated" function SetupMessageRouter (line 21) | func SetupMessageRouter( function createFeedUpdatedEvents (line 145) | func createFeedUpdatedEvents(tags []string) ([]*message.Message, error) { type Publisher (line 167) | type Publisher struct method Publish (line 171) | func (p Publisher) Publish(topic string, event interface{}) error { FILE: _examples/real-world-examples/server-sent-events/server/feeds_storage.go constant collectionName (line 13) | collectionName = "feeds" type FeedsStorage (line 15) | type FeedsStorage struct method Add (line 59) | func (s FeedsStorage) Add(ctx context.Context, name string) error { method All (line 75) | func (s FeedsStorage) All(ctx context.Context) ([]Feed, error) { method ByName (line 91) | func (s FeedsStorage) ByName(ctx context.Context, name string) (Feed, ... method AppendPost (line 105) | func (s FeedsStorage) AppendPost(ctx context.Context, post Post) error { method UpdatePost (line 109) | func (s FeedsStorage) UpdatePost(ctx context.Context, post Post) error { method updatePostIfPresent (line 128) | func (s FeedsStorage) updatePostIfPresent(ctx context.Context, post Po... method appendPostIfNotPresent (line 150) | func (s FeedsStorage) appendPostIfNotPresent(ctx context.Context, post... method removePostIfNotInFeed (line 177) | func (s FeedsStorage) removePostIfNotInFeed(ctx context.Context, post ... function NewFeedsStorage (line 19) | func NewFeedsStorage() FeedsStorage { function isDuplicateError (line 206) | func isDuplicateError(err error) bool { FILE: _examples/real-world-examples/server-sent-events/server/http.go type Router (line 23) | type Router struct method Mux (line 31) | func (router Router) Mux() *chi.Mux { method CreatePost (line 136) | func (router Router) CreatePost(w http.ResponseWriter, r *http.Request) { method GeneratePost (line 160) | func (router Router) GeneratePost(w http.ResponseWriter, r *http.Reque... method addPost (line 186) | func (router Router) addPost(ctx context.Context, post Post) error { method UpdatePost (line 211) | func (router Router) UpdatePost(w http.ResponseWriter, r *http.Request) { type feedSummary (line 77) | type feedSummary struct type AllFeedsResponse (line 82) | type AllFeedsResponse struct type allFeedsStreamAdapter (line 86) | type allFeedsStreamAdapter struct method InitialStreamResponse (line 91) | func (f allFeedsStreamAdapter) InitialStreamResponse(w http.ResponseWr... method NextStreamResponse (line 101) | func (f allFeedsStreamAdapter) NextStreamResponse(r *http.Request, msg... method getResponse (line 110) | func (f allFeedsStreamAdapter) getResponse(r *http.Request) (interface... type CreatePostRequest (line 130) | type CreatePostRequest struct type UpdatePostRequest (line 205) | type UpdatePostRequest struct type feedStreamAdapter (line 253) | type feedStreamAdapter struct method InitialStreamResponse (line 258) | func (f feedStreamAdapter) InitialStreamResponse(w http.ResponseWriter... method NextStreamResponse (line 268) | func (f feedStreamAdapter) NextStreamResponse(r *http.Request, msg *me... method getResponse (line 290) | func (f feedStreamAdapter) getResponse(r *http.Request) (response inte... type postStreamAdapter (line 301) | type postStreamAdapter struct method InitialStreamResponse (line 306) | func (p postStreamAdapter) InitialStreamResponse(w http.ResponseWriter... method NextStreamResponse (line 316) | func (p postStreamAdapter) NextStreamResponse(r *http.Request, msg *me... method getResponse (line 338) | func (p postStreamAdapter) getResponse(r *http.Request) (response inte... function FileServer (line 349) | func FileServer(r chi.Router, path string, root http.FileSystem) { function logAndWriteError (line 367) | func logAndWriteError(logger watermill.LoggerAdapter, w http.ResponseWri... FILE: _examples/real-world-examples/server-sent-events/server/main.go function main (line 9) | func main() { FILE: _examples/real-world-examples/server-sent-events/server/models.go type Post (line 13) | type Post struct function NewPost (line 21) | func NewPost(id, title, content, author string) Post { type Feed (line 49) | type Feed struct type PostCreated (line 54) | type PostCreated struct type PostUpdated (line 60) | type PostUpdated struct type FeedUpdated (line 67) | type FeedUpdated struct FILE: _examples/real-world-examples/server-sent-events/server/posts_storage.go type PostsStorage (line 12) | type PostsStorage struct method ByID (line 43) | func (s PostsStorage) ByID(ctx context.Context, id string) (Post, erro... method Add (line 56) | func (s PostsStorage) Add(ctx context.Context, post Post) error { method Update (line 62) | func (s PostsStorage) Update(ctx context.Context, post Post) error { function NewPostsStorage (line 16) | func NewPostsStorage() PostsStorage { FILE: _examples/real-world-examples/synchronizing-databases/main.go function main (line 29) | func main() { function createMySQLConnection (line 88) | func createMySQLConnection() *stdSQL.DB { function createPostgresConnection (line 109) | func createPostgresConnection() *stdSQL.DB { function createSubscriber (line 124) | func createSubscriber(db *stdSQL.DB) message.Subscriber { function createPublisher (line 141) | func createPublisher(db *stdSQL.DB) message.Publisher { function simulateEvents (line 157) | func simulateEvents(db *stdSQL.DB) { FILE: _examples/real-world-examples/synchronizing-databases/mysql.go type mysqlUser (line 15) | type mysqlUser struct type mysqlSchemaAdapter (line 23) | type mysqlSchemaAdapter struct method SchemaInitializingQueries (line 27) | func (m mysqlSchemaAdapter) SchemaInitializingQueries(params sql.Schem... method InsertQuery (line 41) | func (m mysqlSchemaAdapter) InsertQuery(params sql.InsertQueryParams) ... method SelectQuery (line 64) | func (m mysqlSchemaAdapter) SelectQuery(params sql.SelectQueryParams) ... method UnmarshalMessage (line 84) | func (m mysqlSchemaAdapter) UnmarshalMessage(params sql.UnmarshalMessa... FILE: _examples/real-world-examples/synchronizing-databases/postgres.go type postgresUser (line 14) | type postgresUser struct type postgresSchemaAdapter (line 21) | type postgresSchemaAdapter struct method SchemaInitializingQueries (line 25) | func (p postgresSchemaAdapter) SchemaInitializingQueries(params sql.Sc... method InsertQuery (line 38) | func (p postgresSchemaAdapter) InsertQuery(params sql.InsertQueryParam... method SelectQuery (line 61) | func (p postgresSchemaAdapter) SelectQuery(params sql.SelectQueryParam... method UnmarshalMessage (line 66) | func (p postgresSchemaAdapter) UnmarshalMessage(params sql.UnmarshalMe... FILE: _examples/real-world-examples/transactional-events-forwarder/main.go constant projectID (line 21) | projectID = "transactional-events" constant forwarderSQLTopic (line 22) | forwarderSQLTopic = "eventsToForward" constant googleCloudEventTopic (line 23) | googleCloudEventTopic = "lottery-concluded" constant simulatedErrorProbability (line 25) | simulatedErrorProbability = 0.5 type LotteryConcludedEvent (line 33) | type LotteryConcludedEvent struct function main (line 37) | func main() { function runLotteryService (line 75) | func runLotteryService(logger watermill.LoggerAdapter) { function publishEventAndPersistData (line 105) | func publishEventAndPersistData(lotteryID int, pickedUser string, logger... function persistDataAndPublishEvent (line 141) | func persistDataAndPublishEvent(lotteryID int, pickedUser string, logger... function persistDataAndPublishEventInTransaction (line 179) | func persistDataAndPublishEventInTransaction(lotteryID int, pickedUser s... function runPrizeSenderService (line 236) | func runPrizeSenderService(logger watermill.LoggerAdapter) { function expectNoErr (line 272) | func expectNoErr(err error) { function simulateError (line 278) | func simulateError() error { function createDB (line 286) | func createDB() *stdSQL.DB { FILE: _examples/real-world-examples/transactional-events/main.go function main (line 26) | func main() { function createDB (line 69) | func createDB() *stdSQL.DB { function createSubscriber (line 89) | func createSubscriber(db *stdSQL.DB) message.Subscriber { function createPublisher (line 106) | func createPublisher() message.Publisher { type event (line 121) | type event struct function simulateEvents (line 126) | func simulateEvents(db *stdSQL.DB) { function publishEvent (line 158) | func publishEvent(tx *stdSQL.Tx) error { FILE: components/cqrs/command_bus.go type CommandBusConfig (line 13) | type CommandBusConfig struct method setDefaults (line 32) | func (c *CommandBusConfig) setDefaults() { method Validate (line 38) | func (c CommandBusConfig) Validate() error { type CommandBusGeneratePublishTopicFn (line 52) | type CommandBusGeneratePublishTopicFn type CommandBusGeneratePublishTopicParams (line 54) | type CommandBusGeneratePublishTopicParams struct type CommandBusOnSendFn (line 59) | type CommandBusOnSendFn type CommandBusOnSendParams (line 61) | type CommandBusOnSendParams struct type CommandBus (line 70) | type CommandBus struct method Send (line 116) | func (c CommandBus) Send(ctx context.Context, cmd any) error { method SendWithModifiedMessage (line 120) | func (c CommandBus) SendWithModifiedMessage(ctx context.Context, cmd a... method newMessage (line 139) | func (c CommandBus) newMessage(ctx context.Context, command any) (*mes... function NewCommandBusWithConfig (line 77) | func NewCommandBusWithConfig(publisher message.Publisher, config Command... function NewCommandBus (line 92) | func NewCommandBus( FILE: components/cqrs/command_bus_test.go function TestCommandBusConfig_Validate (line 15) | func TestCommandBusConfig_Validate(t *testing.T) { function TestNewCommandBus (line 66) | func TestNewCommandBus(t *testing.T) { type contextKey (line 90) | type contextKey function TestCommandBus_Send_ContextPropagation (line 92) | func TestCommandBus_Send_ContextPropagation(t *testing.T) { function TestCommandBus_Send_topic_name (line 114) | func TestCommandBus_Send_topic_name(t *testing.T) { function TestCommandBus_Send_OnSend (line 130) | func TestCommandBus_Send_OnSend(t *testing.T) { function TestCommandBus_SendWithModifiedMessage (line 154) | func TestCommandBus_SendWithModifiedMessage(t *testing.T) { function TestCommandBus_SendWithModifiedMessage_modify_error (line 177) | func TestCommandBus_SendWithModifiedMessage_modify_error(t *testing.T) { function TestCommandBus_Send_OnSend_error (line 203) | func TestCommandBus_Send_OnSend_error(t *testing.T) { FILE: components/cqrs/command_handler.go type CommandHandler (line 15) | type CommandHandler interface type genericCommandHandler (line 30) | type genericCommandHandler struct function NewCommandHandler (line 37) | func NewCommandHandler[Command any]( method HandlerName (line 47) | func (c genericCommandHandler[Command]) HandlerName() string { method NewCommand (line 51) | func (c genericCommandHandler[Command]) NewCommand() any { method Handle (line 56) | func (c genericCommandHandler[Command]) Handle(ctx context.Context, cmd ... FILE: components/cqrs/command_handler_test.go type SomeCommand (line 12) | type SomeCommand struct function TestNewCommandHandler (line 16) | func TestNewCommandHandler(t *testing.T) { FILE: components/cqrs/command_processor.go type CommandProcessorConfig (line 13) | type CommandProcessorConfig struct method setDefaults (line 63) | func (c *CommandProcessorConfig) setDefaults() { method Validate (line 69) | func (c CommandProcessorConfig) Validate() error { type CommandProcessorGenerateSubscribeTopicFn (line 86) | type CommandProcessorGenerateSubscribeTopicFn type CommandProcessorGenerateSubscribeTopicParams (line 88) | type CommandProcessorGenerateSubscribeTopicParams struct type CommandProcessorSubscriberConstructorFn (line 95) | type CommandProcessorSubscriberConstructorFn type CommandProcessorSubscriberConstructorParams (line 97) | type CommandProcessorSubscriberConstructorParams struct type CommandProcessorOnHandleFn (line 103) | type CommandProcessorOnHandleFn type CommandProcessorOnHandleParams (line 105) | type CommandProcessorOnHandleParams struct type CommandProcessor (line 116) | type CommandProcessor struct method AddHandlers (line 194) | func (p *CommandProcessor) AddHandlers(handlers ...CommandHandler) err... method AddHandler (line 222) | func (p *CommandProcessor) AddHandler(handler CommandHandler) (*messag... method AddHandlersToRouter (line 253) | func (p CommandProcessor) AddHandlersToRouter(r *message.Router) error { method addHandlerToRouter (line 269) | func (p CommandProcessor) addHandlerToRouter(r *message.Router, handle... method Handlers (line 311) | func (p CommandProcessor) Handlers() []CommandHandler { method routerHandlerFunc (line 315) | func (p CommandProcessor) routerHandlerFunc(handler CommandHandler, lo... method validateCommand (line 375) | func (p CommandProcessor) validateCommand(cmd interface{}) error { function NewCommandProcessorWithConfig (line 124) | func NewCommandProcessorWithConfig(router *message.Router, config Comman... function NewCommandProcessor (line 143) | func NewCommandProcessor( type CommandsSubscriberConstructor (line 191) | type CommandsSubscriberConstructor type DuplicateCommandHandlerError (line 240) | type DuplicateCommandHandlerError struct method Error (line 244) | func (d DuplicateCommandHandlerError) Error() string { FILE: components/cqrs/command_processor_test.go function TestCommandProcessorConfig_Validate (line 19) | func TestCommandProcessorConfig_Validate(t *testing.T) { function TestNewCommandProcessor (line 80) | func TestNewCommandProcessor(t *testing.T) { type nonPointerCommandHandler (line 107) | type nonPointerCommandHandler struct method HandlerName (line 110) | func (nonPointerCommandHandler) HandlerName() string { method NewCommand (line 114) | func (nonPointerCommandHandler) NewCommand() interface{} { method Handle (line 118) | func (nonPointerCommandHandler) Handle(ctx context.Context, cmd interf... function TestCommandProcessor_non_pointer_command (line 122) | func TestCommandProcessor_non_pointer_command(t *testing.T) { function TestCommandProcessor_multiple_same_command_handlers (line 150) | func TestCommandProcessor_multiple_same_command_handlers(t *testing.T) { type mockSubscriber (line 180) | type mockSubscriber struct method Subscribe (line 187) | func (m *mockSubscriber) Subscribe(ctx context.Context, topic string) ... method Close (line 203) | func (m mockSubscriber) Close() error { function TestCommandProcessor_AckCommandHandlingErrors_option_true (line 208) | func TestCommandProcessor_AckCommandHandlingErrors_option_true(t *testin... function TestCommandProcessor_AckCommandHandlingErrors_option_false (line 285) | func TestCommandProcessor_AckCommandHandlingErrors_option_false(t *testi... function TestNewCommandProcessor_OnHandle (line 345) | func TestNewCommandProcessor_OnHandle(t *testing.T) { function TestCommandProcessor_AddHandlersToRouter_without_disableRouterAutoAddHandlers (line 435) | func TestCommandProcessor_AddHandlersToRouter_without_disableRouterAutoA... function TestCommandProcessor_original_msg_set_to_ctx (line 460) | func TestCommandProcessor_original_msg_set_to_ctx(t *testing.T) { FILE: components/cqrs/cqrs.go type FacadeConfig (line 12) | type FacadeConfig struct method Validate (line 56) | func (c FacadeConfig) Validate() error { method EventsEnabled (line 95) | func (c FacadeConfig) EventsEnabled() bool { method CommandsEnabled (line 99) | func (c FacadeConfig) CommandsEnabled() bool { type Facade (line 108) | type Facade struct method CommandBus (line 118) | func (f Facade) CommandBus() *CommandBus { method EventBus (line 122) | func (f Facade) EventBus() *EventBus { method CommandEventMarshaler (line 126) | func (f Facade) CommandEventMarshaler() CommandEventMarshaler { function NewFacade (line 131) | func NewFacade(config FacadeConfig) (*Facade, error) { FILE: components/cqrs/cqrs_test.go function TestCQRS (line 19) | func TestCQRS(t *testing.T) { function createCqrsComponents (line 73) | func createCqrsComponents(t *testing.T, commandHandler *CaptureCommandHa... function createRouterAndFacade (line 185) | func createRouterAndFacade(t *testing.T, commandHandler *CaptureCommandH... type TestServices (line 243) | type TestServices struct function NewTestServices (line 250) | func NewTestServices() TestServices { type TestCommand (line 267) | type TestCommand struct type CaptureCommandHandler (line 271) | type CaptureCommandHandler struct method HandlerName (line 275) | func (h CaptureCommandHandler) HandlerName() string { method HandledCommands (line 279) | func (h CaptureCommandHandler) HandledCommands() []interface{} { method Reset (line 283) | func (h *CaptureCommandHandler) Reset() { method NewCommand (line 287) | func (CaptureCommandHandler) NewCommand() interface{} { method Handle (line 291) | func (h *CaptureCommandHandler) Handle(ctx context.Context, cmd interf... type TestEvent (line 296) | type TestEvent struct type AnotherTestEvent (line 301) | type AnotherTestEvent struct type CaptureEventHandler (line 305) | type CaptureEventHandler struct method HandlerName (line 309) | func (h CaptureEventHandler) HandlerName() string { method HandledEvents (line 313) | func (h CaptureEventHandler) HandledEvents() []interface{} { method Reset (line 317) | func (h *CaptureEventHandler) Reset() { method NewEvent (line 321) | func (CaptureEventHandler) NewEvent() interface{} { method Handle (line 325) | func (h *CaptureEventHandler) Handle(ctx context.Context, event interf... type assertPublishTopicPublisher (line 330) | type assertPublishTopicPublisher struct method Publish (line 335) | func (a assertPublishTopicPublisher) Publish(topic string, messages ..... method Close (line 340) | func (assertPublishTopicPublisher) Close() error { type publisherStub (line 344) | type publisherStub struct method Close (line 356) | func (*publisherStub) Close() error { method Publish (line 360) | func (p *publisherStub) Publish(topic string, messages ...*message.Mes... function newPublisherStub (line 350) | func newPublisherStub() *publisherStub { function TestFacadeConfig_Validate (line 369) | func TestFacadeConfig_Validate(t *testing.T) { function transformConfig (line 487) | func transformConfig(config cqrs.FacadeConfig, transformFn func(config *... FILE: components/cqrs/ctx.go type ctxKey (line 9) | type ctxKey constant originalMessage (line 12) | originalMessage ctxKey = "original_message" function OriginalMessageFromCtx (line 16) | func OriginalMessageFromCtx(ctx context.Context) *message.Message { function CtxWithOriginalMessage (line 25) | func CtxWithOriginalMessage(ctx context.Context, msg *message.Message) c... FILE: components/cqrs/event_bus.go type EventBusConfig (line 12) | type EventBusConfig struct method setDefaults (line 31) | func (c *EventBusConfig) setDefaults() { method Validate (line 37) | func (c EventBusConfig) Validate() error { type GenerateEventPublishTopicFn (line 51) | type GenerateEventPublishTopicFn type GenerateEventPublishTopicParams (line 53) | type GenerateEventPublishTopicParams struct type OnEventSendFn (line 58) | type OnEventSendFn type OnEventSendParams (line 60) | type OnEventSendParams struct type EventBus (line 69) | type EventBus struct method Publish (line 117) | func (c EventBus) Publish(ctx context.Context, event any) error { function NewEventBus (line 76) | func NewEventBus( function NewEventBusWithConfig (line 103) | func NewEventBusWithConfig(publisher message.Publisher, config EventBusC... FILE: components/cqrs/event_bus_test.go function TestEventBusConfig_Validate (line 14) | func TestEventBusConfig_Validate(t *testing.T) { function TestNewEventBus (line 65) | func TestNewEventBus(t *testing.T) { function TestEventBus_Send_ContextPropagation (line 89) | func TestEventBus_Send_ContextPropagation(t *testing.T) { function TestEventBus_Send_topic_name (line 109) | func TestEventBus_Send_topic_name(t *testing.T) { function TestEventBus_Send_OnPublish (line 123) | func TestEventBus_Send_OnPublish(t *testing.T) { function TestEventBus_Send_OnPublish_error (line 147) | func TestEventBus_Send_OnPublish_error(t *testing.T) { FILE: components/cqrs/event_handler.go type EventHandler (line 16) | type EventHandler interface type genericEventHandler (line 31) | type genericEventHandler struct function NewEventHandler (line 38) | func NewEventHandler[T any]( method HandlerName (line 48) | func (c genericEventHandler[T]) HandlerName() string { method NewEvent (line 52) | func (c genericEventHandler[T]) NewEvent() any { method Handle (line 57) | func (c genericEventHandler[T]) Handle(ctx context.Context, e any) error { type GroupEventHandler (line 62) | type GroupEventHandler interface function NewGroupEventHandler (line 69) | func NewGroupEventHandler[T any](handleFunc func(ctx context.Context, ev... FILE: components/cqrs/event_handler_test.go type SomeEvent (line 12) | type SomeEvent struct function TestNewEventHandler (line 16) | func TestNewEventHandler(t *testing.T) { function TestNewGroupEventHandler (line 34) | func TestNewGroupEventHandler(t *testing.T) { FILE: components/cqrs/event_processor.go type EventProcessorConfig (line 13) | type EventProcessorConfig struct method setDefaults (line 61) | func (c *EventProcessorConfig) setDefaults() { method Validate (line 67) | func (c EventProcessorConfig) Validate() error { type EventProcessorGenerateSubscribeTopicFn (line 84) | type EventProcessorGenerateSubscribeTopicFn type EventProcessorGenerateSubscribeTopicParams (line 86) | type EventProcessorGenerateSubscribeTopicParams struct type EventProcessorSubscriberConstructorFn (line 91) | type EventProcessorSubscriberConstructorFn type EventProcessorSubscriberConstructorParams (line 93) | type EventProcessorSubscriberConstructorParams struct type EventProcessorOnHandleFn (line 99) | type EventProcessorOnHandleFn type EventProcessorOnHandleParams (line 101) | type EventProcessorOnHandleParams struct type EventProcessor (line 112) | type EventProcessor struct method AddHandlers (line 196) | func (p *EventProcessor) AddHandlers(handlers ...EventHandler) error { method AddHandler (line 214) | func (p *EventProcessor) AddHandler(handler EventHandler) (*message.Ha... method AddHandlersToRouter (line 236) | func (p EventProcessor) AddHandlersToRouter(r *message.Router) error { method addHandlerToRouter (line 252) | func (p EventProcessor) addHandlerToRouter(r *message.Router, handler ... method Handlers (line 294) | func (p EventProcessor) Handlers() []EventHandler { method routerHandlerFunc (line 314) | func (p EventProcessor) routerHandlerFunc(handler EventHandler, logger... function NewEventProcessorWithConfig (line 119) | func NewEventProcessorWithConfig(router *message.Router, config EventPro... function NewEventProcessor (line 137) | func NewEventProcessor( type EventsSubscriberConstructor (line 193) | type EventsSubscriberConstructor function addHandlerToRouter (line 298) | func addHandlerToRouter(logger watermill.LoggerAdapter, r *message.Route... function validateEvent (line 373) | func validateEvent(event interface{}) error { FILE: components/cqrs/event_processor_group.go type EventGroupProcessorConfig (line 12) | type EventGroupProcessorConfig struct method setDefaults (line 54) | func (c *EventGroupProcessorConfig) setDefaults() { method Validate (line 60) | func (c EventGroupProcessorConfig) Validate() error { type EventGroupProcessorGenerateSubscribeTopicFn (line 77) | type EventGroupProcessorGenerateSubscribeTopicFn type EventGroupProcessorGenerateSubscribeTopicParams (line 79) | type EventGroupProcessorGenerateSubscribeTopicParams struct type EventGroupProcessorSubscriberConstructorFn (line 84) | type EventGroupProcessorSubscriberConstructorFn type EventGroupProcessorSubscriberConstructorParams (line 86) | type EventGroupProcessorSubscriberConstructorParams struct type EventGroupProcessorOnHandleFn (line 91) | type EventGroupProcessorOnHandleFn type EventGroupProcessorOnHandleParams (line 93) | type EventGroupProcessorOnHandleParams struct type EventGroupProcessor (line 106) | type EventGroupProcessor struct method AddHandlersGroup (line 143) | func (p *EventGroupProcessor) AddHandlersGroup(groupName string, handl... method addHandlerToRouter (line 160) | func (p EventGroupProcessor) addHandlerToRouter(r *message.Router, gro... method routerHandlerGroupFunc (line 204) | func (p EventGroupProcessor) routerHandlerGroupFunc(handlers []GroupEv... function NewEventGroupProcessorWithConfig (line 115) | func NewEventGroupProcessorWithConfig(router *message.Router, config Eve... FILE: components/cqrs/event_processor_group_test.go function TestEventGroupProcessorConfig_Validate (line 17) | func TestEventGroupProcessorConfig_Validate(t *testing.T) { function TestNewEventProcessor_OnGroupHandle (line 82) | func TestNewEventProcessor_OnGroupHandle(t *testing.T) { function TestNewEventProcessor_AckOnUnknownEvent_handler_group (line 174) | func TestNewEventProcessor_AckOnUnknownEvent_handler_group(t *testing.T) { function TestNewEventProcessor_AckOnUnknownEvent_disabled_handler_group (line 229) | func TestNewEventProcessor_AckOnUnknownEvent_disabled_handler_group(t *t... function TestEventProcessor_handler_group (line 283) | func TestEventProcessor_handler_group(t *testing.T) { function TestEventGroupProcessor_original_msg_set_to_ctx (line 395) | func TestEventGroupProcessor_original_msg_set_to_ctx(t *testing.T) { FILE: components/cqrs/event_processor_test.go function TestEventProcessorConfig_Validate (line 19) | func TestEventProcessorConfig_Validate(t *testing.T) { function TestNewEventProcessor (line 80) | func TestNewEventProcessor(t *testing.T) { type nonPointerEventProcessor (line 107) | type nonPointerEventProcessor struct method HandlerName (line 110) | func (nonPointerEventProcessor) HandlerName() string { method NewEvent (line 114) | func (nonPointerEventProcessor) NewEvent() interface{} { method Handle (line 118) | func (nonPointerEventProcessor) Handle(ctx context.Context, cmd interf... function TestEventProcessor_non_pointer_event (line 122) | func TestEventProcessor_non_pointer_event(t *testing.T) { type duplicateTestEventHandler1 (line 149) | type duplicateTestEventHandler1 struct method HandlerName (line 151) | func (h duplicateTestEventHandler1) HandlerName() string { method NewEvent (line 155) | func (duplicateTestEventHandler1) NewEvent() interface{} { method Handle (line 159) | func (h *duplicateTestEventHandler1) Handle(ctx context.Context, event... type duplicateTestEventHandler2 (line 161) | type duplicateTestEventHandler2 struct method HandlerName (line 163) | func (h duplicateTestEventHandler2) HandlerName() string { method NewEvent (line 167) | func (duplicateTestEventHandler2) NewEvent() interface{} { method Handle (line 171) | func (h *duplicateTestEventHandler2) Handle(ctx context.Context, event... function TestEventProcessor_multiple_same_event_handlers (line 173) | func TestEventProcessor_multiple_same_event_handlers(t *testing.T) { function TestNewEventProcessor_OnHandle (line 201) | func TestNewEventProcessor_OnHandle(t *testing.T) { type UnknownEvent (line 291) | type UnknownEvent struct function TestNewEventProcessor_AckOnUnknownEvent (line 294) | func TestNewEventProcessor_AckOnUnknownEvent(t *testing.T) { function TestNewEventProcessor_AckOnUnknownEvent_disabled (line 348) | func TestNewEventProcessor_AckOnUnknownEvent_disabled(t *testing.T) { function TestNewEventProcessor_backward_compatibility_of_AckOnUnknownEvent (line 402) | func TestNewEventProcessor_backward_compatibility_of_AckOnUnknownEvent(t... function TestEventProcessor_AddHandlersToRouter_without_disableRouterAutoAddHandlers (line 453) | func TestEventProcessor_AddHandlersToRouter_without_disableRouterAutoAdd... function TestEventProcessor_original_msg_set_to_ctx (line 479) | func TestEventProcessor_original_msg_set_to_ctx(t *testing.T) { FILE: components/cqrs/marshaler.go type CommandEventMarshaler (line 12) | type CommandEventMarshaler interface type CommandEventMarshalerDecorator (line 32) | type CommandEventMarshalerDecorator struct method Marshal (line 40) | func (c CommandEventMarshalerDecorator) Marshal(v any) (*message.Messa... FILE: components/cqrs/marshaler_json.go type JSONMarshaler (line 10) | type JSONMarshaler struct method Marshal (line 15) | func (m JSONMarshaler) Marshal(v interface{}) (*message.Message, error) { method newUUID (line 30) | func (m JSONMarshaler) newUUID() string { method Unmarshal (line 39) | func (JSONMarshaler) Unmarshal(msg *message.Message, v interface{}) (e... method Name (line 43) | func (m JSONMarshaler) Name(cmdOrEvent interface{}) string { method NameFromMessage (line 51) | func (m JSONMarshaler) NameFromMessage(msg *message.Message) string { FILE: components/cqrs/marshaler_json_test.go function TestJsonMarshaler (line 19) | func TestJsonMarshaler(t *testing.T) { function TestJSONMarshaler_Marshal_new_uuid_set (line 32) | func TestJSONMarshaler_Marshal_new_uuid_set(t *testing.T) { function TestJSONMarshaler_Marshal_generate_name (line 45) | func TestJSONMarshaler_Marshal_generate_name(t *testing.T) { FILE: components/cqrs/marshaler_protobuf.go type ProtoMarshaler (line 14) | type ProtoMarshaler struct method Marshal (line 34) | func (m ProtoMarshaler) Marshal(v interface{}) (*message.Message, erro... method newUUID (line 54) | func (m ProtoMarshaler) newUUID() string { method Unmarshal (line 64) | func (ProtoMarshaler) Unmarshal(msg *message.Message, v interface{}) (... method Name (line 74) | func (m ProtoMarshaler) Name(cmdOrEvent interface{}) string { method NameFromMessage (line 83) | func (m ProtoMarshaler) NameFromMessage(msg *message.Message) string { type NoProtoMessageError (line 20) | type NoProtoMessageError struct method Error (line 24) | func (e NoProtoMessageError) Error() string { FILE: components/cqrs/marshaler_protobuf_events_new_test.go constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type Status (line 24) | type Status method Enum (line 46) | func (x Status) Enum() *Status { method String (line 52) | func (x Status) String() string { method Descriptor (line 56) | func (Status) Descriptor() protoreflect.EnumDescriptor { method Type (line 60) | func (Status) Type() protoreflect.EnumType { method Number (line 64) | func (x Status) Number() protoreflect.EnumNumber { method EnumDescriptor (line 69) | func (Status) EnumDescriptor() ([]byte, []int) { constant Status_STATUS_UNSPECIFIED (line 27) | Status_STATUS_UNSPECIFIED Status = 0 constant Status_ACTIVE (line 28) | Status_ACTIVE Status = 1 constant Status_DELETED (line 29) | Status_DELETED Status = 2 type TestProtobufLegacyEvent (line 73) | type TestProtobufLegacyEvent struct method Reset (line 82) | func (x *TestProtobufLegacyEvent) Reset() { method String (line 91) | func (x *TestProtobufLegacyEvent) String() string { method ProtoMessage (line 95) | func (*TestProtobufLegacyEvent) ProtoMessage() {} method ProtoReflect (line 97) | func (x *TestProtobufLegacyEvent) ProtoReflect() protoreflect.Message { method Descriptor (line 110) | func (*TestProtobufLegacyEvent) Descriptor() ([]byte, []int) { method GetId (line 114) | func (x *TestProtobufLegacyEvent) GetId() string { method GetWhen (line 121) | func (x *TestProtobufLegacyEvent) GetWhen() *timestamppb.Timestamp { type SubEvent (line 128) | type SubEvent struct method Reset (line 137) | func (x *SubEvent) Reset() { method String (line 146) | func (x *SubEvent) String() string { method ProtoMessage (line 150) | func (*SubEvent) ProtoMessage() {} method ProtoReflect (line 152) | func (x *SubEvent) ProtoReflect() protoreflect.Message { method Descriptor (line 165) | func (*SubEvent) Descriptor() ([]byte, []int) { method GetTags (line 169) | func (x *SubEvent) GetTags() []string { method GetFlags (line 176) | func (x *SubEvent) GetFlags() map[string]bool { type TestComplexProtobufEvent (line 183) | type TestComplexProtobufEvent struct method Reset (line 202) | func (x *TestComplexProtobufEvent) Reset() { method String (line 211) | func (x *TestComplexProtobufEvent) String() string { method ProtoMessage (line 215) | func (*TestComplexProtobufEvent) ProtoMessage() {} method ProtoReflect (line 217) | func (x *TestComplexProtobufEvent) ProtoReflect() protoreflect.Message { method Descriptor (line 230) | func (*TestComplexProtobufEvent) Descriptor() ([]byte, []int) { method GetId (line 234) | func (x *TestComplexProtobufEvent) GetId() string { method GetData (line 241) | func (x *TestComplexProtobufEvent) GetData() []byte { method GetWhen (line 248) | func (x *TestComplexProtobufEvent) GetWhen() *timestamppb.Timestamp { method GetNestedMap (line 255) | func (x *TestComplexProtobufEvent) GetNestedMap() map[string]*SubEvent { method GetEvents (line 262) | func (x *TestComplexProtobufEvent) GetEvents() []*SubEvent { method GetResult (line 269) | func (m *TestComplexProtobufEvent) GetResult() isTestComplexProtobufEv... method GetSuccess (line 276) | func (x *TestComplexProtobufEvent) GetSuccess() *SubEvent { method GetError (line 283) | func (x *TestComplexProtobufEvent) GetError() string { method GetFallback (line 290) | func (x *TestComplexProtobufEvent) GetFallback() Status { type isTestComplexProtobufEvent_Result (line 297) | type isTestComplexProtobufEvent_Result interface type TestComplexProtobufEvent_Success (line 301) | type TestComplexProtobufEvent_Success struct method isTestComplexProtobufEvent_Result (line 313) | func (*TestComplexProtobufEvent_Success) isTestComplexProtobufEvent_Re... type TestComplexProtobufEvent_Error (line 305) | type TestComplexProtobufEvent_Error struct method isTestComplexProtobufEvent_Result (line 315) | func (*TestComplexProtobufEvent_Error) isTestComplexProtobufEvent_Resu... type TestComplexProtobufEvent_Fallback (line 309) | type TestComplexProtobufEvent_Fallback struct method isTestComplexProtobufEvent_Result (line 317) | func (*TestComplexProtobufEvent_Fallback) isTestComplexProtobufEvent_R... function file_events_proto_rawDescGZIP (line 382) | func file_events_proto_rawDescGZIP() []byte { function init (line 416) | func init() { file_events_proto_init() } function file_events_proto_init (line 417) | func file_events_proto_init() { FILE: components/cqrs/marshaler_protobuf_events_test.go constant _ (line 23) | _ = proto.ProtoPackageIsVersion3 type TestProtobufEvent (line 25) | type TestProtobufEvent struct method Reset (line 33) | func (m *TestProtobufEvent) Reset() { *m = TestProtobufEvent{} } method String (line 34) | func (m *TestProtobufEvent) String() string { return proto.CompactText... method ProtoMessage (line 35) | func (*TestProtobufEvent) ProtoMessage() {} method Descriptor (line 36) | func (*TestProtobufEvent) Descriptor() ([]byte, []int) { method XXX_Unmarshal (line 40) | func (m *TestProtobufEvent) XXX_Unmarshal(b []byte) error { method XXX_Marshal (line 43) | func (m *TestProtobufEvent) XXX_Marshal(b []byte, deterministic bool) ... method XXX_Merge (line 46) | func (m *TestProtobufEvent) XXX_Merge(src proto.Message) { method XXX_Size (line 49) | func (m *TestProtobufEvent) XXX_Size() int { method XXX_DiscardUnknown (line 52) | func (m *TestProtobufEvent) XXX_DiscardUnknown() { method GetId (line 58) | func (m *TestProtobufEvent) GetId() string { method GetWhen (line 65) | func (m *TestProtobufEvent) GetWhen() *timestamp.Timestamp { function init (line 72) | func init() { function init (line 76) | func init() { proto.RegisterFile("testdata/events.proto", fileDescriptor... FILE: components/cqrs/marshaler_protobuf_gogo.go type ProtobufMarshaler (line 24) | type ProtobufMarshaler struct method Marshal (line 35) | func (m ProtobufMarshaler) Marshal(v interface{}) (msg *message.Messag... method newUUID (line 74) | func (m ProtobufMarshaler) newUUID() string { method Unmarshal (line 84) | func (m ProtobufMarshaler) Unmarshal(msg *message.Message, v interface... method ToProtoMarshaler (line 108) | func (m ProtobufMarshaler) ToProtoMarshaler() ProtoMarshaler { method Name (line 116) | func (m ProtobufMarshaler) Name(cmdOrEvent interface{}) string { method NameFromMessage (line 125) | func (m ProtobufMarshaler) NameFromMessage(msg *message.Message) string { FILE: components/cqrs/marshaler_protobuf_gogo_test.go function TestProtobufMarshaler_with_fallback (line 11) | func TestProtobufMarshaler_with_fallback(t *testing.T) { function TestProtobufMarshaler_without_fallback_legacy_event (line 34) | func TestProtobufMarshaler_without_fallback_legacy_event(t *testing.T) { function TestProtobufMarshaler_Marshal_generated_name (line 51) | func TestProtobufMarshaler_Marshal_generated_name(t *testing.T) { function TestProtobufMarshaler_catch_panic (line 64) | func TestProtobufMarshaler_catch_panic(t *testing.T) { function TestProtobufMarshaler_compatible_with_ProtoMarshaler (line 96) | func TestProtobufMarshaler_compatible_with_ProtoMarshaler(t *testing.T) { FILE: components/cqrs/marshaler_protobuf_test.go function TestProtoMarshaler (line 17) | func TestProtoMarshaler(t *testing.T) { function TestProtoMarshaler_Marshal_generated_name (line 28) | func TestProtoMarshaler_Marshal_generated_name(t *testing.T) { function newProtoLegacyTestEvent (line 42) | func newProtoLegacyTestEvent() (*TestProtobufEvent, *TestProtobufLegacyE... function newProtoTestComplexEvent (line 59) | func newProtoTestComplexEvent() *TestComplexProtobufEvent { function assertProtoMarshalUnmarshal (line 90) | func assertProtoMarshalUnmarshal[T1, T2 fmt.Stringer]( FILE: components/cqrs/name.go function FullyQualifiedStructName (line 17) | func FullyQualifiedStructName(v interface{}) string { function StructName (line 33) | func StructName(v interface{}) string { type namedStruct (line 39) | type namedStruct interface function NamedStruct (line 50) | func NamedStruct(fallback func(v interface{}) string) func(v interface{}... FILE: components/cqrs/name_test.go function TestFullyQualifiedStructName (line 11) | func TestFullyQualifiedStructName(t *testing.T) { function BenchmarkFullyQualifiedStructName (line 18) | func BenchmarkFullyQualifiedStructName(b *testing.B) { function TestStructName (line 27) | func TestStructName(t *testing.T) { function TestNamedStruct (line 34) | func TestNamedStruct(t *testing.T) { type namedObject (line 45) | type namedObject struct method Name (line 47) | func (namedObject) Name() string { FILE: components/cqrs/object.go function isPointer (line 7) | func isPointer(v interface{}) error { type NonPointerError (line 17) | type NonPointerError struct method Error (line 21) | func (e NonPointerError) Error() string { FILE: components/delay/delay.go type Delay (line 16) | type Delay struct method IsZero (line 21) | func (d Delay) IsZero() bool { function Until (line 26) | func Until(delayedUntil time.Time) Delay { function For (line 34) | func For(delayedFor time.Duration) Delay { type contextKey (line 41) | type contextKey function WithContext (line 52) | func WithContext(ctx context.Context, delay Delay) context.Context { constant DelayedUntilKey (line 57) | DelayedUntilKey = "_watermill_delayed_until" constant DelayedForKey (line 58) | DelayedForKey = "_watermill_delayed_for" function Message (line 65) | func Message(msg *message.Message, delay Delay) { FILE: components/delay/publisher.go type DefaultDelayGeneratorParams (line 9) | type DefaultDelayGeneratorParams struct type PublisherConfig (line 15) | type PublisherConfig struct function NewPublisher (line 28) | func NewPublisher(pub message.Publisher, config PublisherConfig) (messag... type publisher (line 35) | type publisher struct method Publish (line 40) | func (p *publisher) Publish(topic string, messages ...*message.Message... method Close (line 50) | func (p *publisher) Close() error { method applyDelay (line 54) | func (p *publisher) applyDelay(topic string, msg *message.Message) err... FILE: components/delay/publisher_test.go function TestPublisher (line 17) | func TestPublisher(t *testing.T) { function assertMessage (line 154) | func assertMessage(t *testing.T, messages <-chan *message.Message, expec... FILE: components/fanin/fanin.go type Config (line 15) | type Config struct method setDefaults (line 34) | func (c *Config) setDefaults() { method Validate (line 40) | func (c *Config) Validate() error { type FanIn (line 28) | type FanIn struct method Run (line 113) | func (f *FanIn) Run(ctx context.Context) error { method Running (line 118) | func (f *FanIn) Running() chan struct{} { method Close (line 123) | func (f *FanIn) Close() error { function NewFanIn (line 61) | func NewFanIn( FILE: components/fanin/fanin_test.go function TestFanIn (line 18) | func TestFanIn(t *testing.T) { function TestNewFanIn (line 123) | func TestNewFanIn(t *testing.T) { FILE: components/forwarder/envelope.go type messageEnvelope (line 12) | type messageEnvelope struct method validate (line 35) | func (e *messageEnvelope) validate() error { function newMessageEnvelope (line 20) | func newMessageEnvelope(destTopic string, msg *message.Message) (*messag... function wrapMessageInEnvelope (line 43) | func wrapMessageInEnvelope(destinationTopic string, msg *message.Message... function unwrapMessageFromEnvelope (line 60) | func unwrapMessageFromEnvelope(msg *message.Message) (destinationTopic s... FILE: components/forwarder/envelope_test.go type contextKey (line 13) | type contextKey function TestEnvelope (line 15) | func TestEnvelope(t *testing.T) { FILE: components/forwarder/forwarder.go constant defaultForwarderTopic (line 12) | defaultForwarderTopic = "forwarder_topic" type Config (line 14) | type Config struct method setDefaults (line 35) | func (c *Config) setDefaults() { method Validate (line 44) | func (c *Config) Validate() error { type Forwarder (line 53) | type Forwarder struct method Run (line 105) | func (f *Forwarder) Run(ctx context.Context) error { method Close (line 110) | func (f *Forwarder) Close() error { method Running (line 115) | func (f *Forwarder) Running() chan struct{} { method forwardMessage (line 119) | func (f *Forwarder) forwardMessage(msg *message.Message) error { function NewForwarder (line 67) | func NewForwarder(subscriberIn message.Subscriber, publisherOut message.... FILE: components/forwarder/forwarder_test.go function TestForwarder (line 22) | func TestForwarder(t *testing.T) { type ForwarderSuite (line 27) | type ForwarderSuite struct method SetupTest (line 43) | func (s *ForwarderSuite) SetupTest() { method TearDownTest (line 56) | func (s *ForwarderSuite) TearDownTest() { method TestForwarder_publish_using_decorated_publisher (line 64) | func (s *ForwarderSuite) TestForwarder_publish_using_decorated_publish... method TestForwarder_publish_using_non_decorated_publisher (line 77) | func (s *ForwarderSuite) TestForwarder_publish_using_non_decorated_pub... method TestForwarder_publish_using_non_decorated_publisher_acking_enabled (line 94) | func (s *ForwarderSuite) TestForwarder_publish_using_non_decorated_pub... method setupForwarder (line 136) | func (s *ForwarderSuite) setupForwarder(config forwarder.Config) *forw... method listenOnOutTopic (line 153) | func (s *ForwarderSuite) listenOnOutTopic() { method requireFirstMessage (line 159) | func (s *ForwarderSuite) requireFirstMessage(expectedMessage *message.... method setupMessageAckedDetectorMiddleware (line 170) | func (s *ForwarderSuite) setupMessageAckedDetectorMiddleware() (messag... method requireFirstAckingResult (line 185) | func (s *ForwarderSuite) requireFirstAckingResult(msgAckedCh <-chan bo... method sampleMessage (line 194) | func (s *ForwarderSuite) sampleMessage() *message.Message { type PubSubInPublisher (line 112) | type PubSubInPublisher struct type PubSubInSubscriber (line 115) | type PubSubInSubscriber struct type PubSubOutPublisher (line 119) | type PubSubOutPublisher struct type PubSubOutSubscriber (line 122) | type PubSubOutSubscriber struct function newPubSubIn (line 126) | func newPubSubIn() (PubSubInPublisher, PubSubInSubscriber) { function newPubSubOut (line 131) | func newPubSubOut() (PubSubOutPublisher, PubSubOutSubscriber) { FILE: components/forwarder/publisher.go type PublisherConfig (line 8) | type PublisherConfig struct method setDefaults (line 14) | func (c *PublisherConfig) setDefaults() { method Validate (line 20) | func (c *PublisherConfig) Validate() error { type Publisher (line 30) | type Publisher struct method Publish (line 44) | func (p *Publisher) Publish(topic string, messages ...*message.Message... method Close (line 62) | func (p *Publisher) Close() error { function NewPublisher (line 35) | func NewPublisher(publisher message.Publisher, config PublisherConfig) *... FILE: components/metrics/builder.go type PrometheusMetricsBuilderConfig (line 10) | type PrometheusMetricsBuilderConfig struct function NewPrometheusMetricsBuilderWithConfig (line 16) | func NewPrometheusMetricsBuilderWithConfig(prometheusRegistry prometheus... function NewPrometheusMetricsBuilder (line 26) | func NewPrometheusMetricsBuilder(prometheusRegistry prometheus.Registere... type PrometheusMetricsBuilder (line 34) | type PrometheusMetricsBuilder struct method AddPrometheusRouterMetrics (line 52) | func (b PrometheusMetricsBuilder) AddPrometheusRouterMetrics(r *messag... method DecoratePublisher (line 59) | func (b PrometheusMetricsBuilder) DecoratePublisher(pub message.Publis... method DecorateSubscriber (line 84) | func (b PrometheusMetricsBuilder) DecorateSubscriber(sub message.Subsc... method register (line 113) | func (b PrometheusMetricsBuilder) register(c prometheus.Collector) (pr... method registerCounterVec (line 126) | func (b PrometheusMetricsBuilder) registerCounterVec(c *prometheus.Cou... method registerHistogramVec (line 134) | func (b PrometheusMetricsBuilder) registerHistogramVec(h *prometheus.H... FILE: components/metrics/ctx.go type contextValue (line 5) | type contextValue constant publishObserved (line 8) | publishObserved contextValue = iota constant subscribeObserved (line 9) | subscribeObserved function setPublishObservedToCtx (line 13) | func setPublishObservedToCtx(ctx context.Context) context.Context { function publishAlreadyObserved (line 17) | func publishAlreadyObserved(ctx context.Context) bool { function setSubscribeObservedToCtx (line 22) | func setSubscribeObservedToCtx(ctx context.Context) context.Context { function subscribeAlreadyObserved (line 26) | func subscribeAlreadyObserved(ctx context.Context) bool { FILE: components/metrics/handler.go type HandlerPrometheusMetricsMiddleware (line 36) | type HandlerPrometheusMetricsMiddleware struct method Middleware (line 42) | func (m HandlerPrometheusMetricsMiddleware) Middleware(h message.Handl... method NewRouterMiddleware (line 67) | func (b PrometheusMetricsBuilder) NewRouterMiddleware() HandlerPrometheu... FILE: components/metrics/http.go function CreateRegistryAndServeHTTP (line 14) | func CreateRegistryAndServeHTTP(addr string) (registry *prometheus.Regis... function ServeHTTP (line 21) | func ServeHTTP(addr string, registry *prometheus.Registry) (cancel func(... FILE: components/metrics/http_test.go function TestCreateRegistryAndServeHTTP_metrics_endpoint (line 15) | func TestCreateRegistryAndServeHTTP_metrics_endpoint(t *testing.T) { function TestCreateRegistryAndServeHTTP_unknown_endpoint (line 35) | func TestCreateRegistryAndServeHTTP_unknown_endpoint(t *testing.T) { function waitServerReady (line 56) | func waitServerReady(t *testing.T, addr string) { FILE: components/metrics/labels.go constant labelKeyHandlerName (line 12) | labelKeyHandlerName = "handler_name" constant labelKeyPublisherName (line 13) | labelKeyPublisherName = "publisher_name" constant labelKeySubscriberName (line 14) | labelKeySubscriberName = "subscriber_name" constant labelSuccess (line 15) | labelSuccess = "success" constant labelAcked (line 16) | labelAcked = "acked" constant labelValueNoHandler (line 18) | labelValueNoHandler = "" function labelsFromCtx (line 29) | func labelsFromCtx(ctx context.Context, labels ...string) prometheus.Lab... type LabelComputeValueFn (line 50) | type LabelComputeValueFn type MetricLabel (line 52) | type MetricLabel struct function toLabelsSlice (line 57) | func toLabelsSlice(baseLabels []string, customs []MetricLabel) []string { FILE: components/metrics/publisher.go type PublisherPrometheusMetricsDecorator (line 19) | type PublisherPrometheusMetricsDecorator struct method Publish (line 27) | func (m PublisherPrometheusMetricsDecorator) Publish(topic string, mes... method Close (line 68) | func (m PublisherPrometheusMetricsDecorator) Close() error { FILE: components/metrics/subscriber.go type SubscriberPrometheusMetricsDecorator (line 16) | type SubscriberPrometheusMetricsDecorator struct method recordMetrics (line 24) | func (s SubscriberPrometheusMetricsDecorator) recordMetrics(msg *messa... FILE: components/requestreply/backend_pubsub.go type PubSubBackend (line 15) | type PubSubBackend struct function NewPubSubBackend (line 23) | func NewPubSubBackend[Result any]( type PubSubBackendSubscribeParams (line 42) | type PubSubBackendSubscribeParams struct type PubSubBackendSubscriberConstructorFn (line 48) | type PubSubBackendSubscriberConstructorFn type PubSubBackendGenerateSubscribeTopicFn (line 50) | type PubSubBackendGenerateSubscribeTopicFn type PubSubBackendPublishParams (line 52) | type PubSubBackendPublishParams struct type PubSubBackendGeneratePublishTopicFn (line 60) | type PubSubBackendGeneratePublishTopicFn type PubSubBackendOnCommandProcessedParams (line 62) | type PubSubBackendOnCommandProcessedParams struct type PubSubBackendModifyNotificationMessageFn (line 68) | type PubSubBackendModifyNotificationMessageFn type PubSubBackendOnListenForReplyFinishedFn (line 70) | type PubSubBackendOnListenForReplyFinishedFn type ReplyPublishErrorHandler (line 72) | type ReplyPublishErrorHandler type PubSubBackendConfig (line 74) | type PubSubBackendConfig struct method setDefaults (line 101) | func (p *PubSubBackendConfig) setDefaults() { method Validate (line 107) | func (p *PubSubBackendConfig) Validate() error { method ListenForNotifications (line 126) | func (p PubSubBackend[Result]) ListenForNotifications( constant OperationIDMetadataKey (line 215) | OperationIDMetadataKey = "_watermill_requestreply_op_id" method OnCommandProcessed (line 217) | func (p PubSubBackend[Result]) OnCommandProcessed(ctx context.Context, p... function operationIDFromMetadata (line 275) | func operationIDFromMetadata(msg *message.Message) (OperationID, error) { method handleNotifyMsg (line 284) | func (p PubSubBackend[Result]) handleNotifyMsg( FILE: components/requestreply/backend_pubsub_marshaler.go type BackendPubsubMarshaler (line 11) | type BackendPubsubMarshaler interface constant ErrorMetadataKey (line 17) | ErrorMetadataKey = "_watermill_requestreply_error" constant HasErrorMetadataKey (line 18) | HasErrorMetadataKey = "_watermill_requestreply_has_error" type BackendPubsubJSONMarshaler (line 21) | type BackendPubsubJSONMarshaler struct method MarshalReply (line 23) | func (m BackendPubsubJSONMarshaler[Result]) MarshalReply( method UnmarshalReply (line 44) | func (m BackendPubsubJSONMarshaler[Result]) UnmarshalReply(msg *message.... FILE: components/requestreply/command_bus.go type CommandBus (line 11) | type CommandBus interface function SendWithReply (line 43) | func SendWithReply[Result any]( function SendWithReplies (line 96) | func SendWithReplies[Result any]( FILE: components/requestreply/handler.go function NewCommandHandler (line 16) | func NewCommandHandler[Command any]( function NewCommandHandlerWithResult (line 47) | func NewCommandHandlerWithResult[Command any, Result any]( function originalCommandMsgFromCtx (line 69) | func originalCommandMsgFromCtx(ctx context.Context) (*message.Message, e... FILE: components/requestreply/requestreply.go type Reply (line 14) | type Reply struct type Backend (line 36) | type Backend interface type BackendListenForNotificationsParams (line 41) | type BackendListenForNotificationsParams struct type BackendOnCommandProcessedParams (line 46) | type BackendOnCommandProcessedParams struct type OperationID (line 56) | type OperationID type ReplyTimeoutError (line 59) | type ReplyTimeoutError struct method Error (line 64) | func (e ReplyTimeoutError) Error() string { type ReplyUnmarshalError (line 68) | type ReplyUnmarshalError struct method Error (line 72) | func (r ReplyUnmarshalError) Error() string { method Unwrap (line 76) | func (r ReplyUnmarshalError) Unwrap() error { type CommandHandlerError (line 81) | type CommandHandlerError struct method Error (line 85) | func (e CommandHandlerError) Error() string { method Unwrap (line 89) | func (e CommandHandlerError) Unwrap() error { FILE: components/requestreply/requestreply_test.go type TestServices (line 21) | type TestServices struct type TestServicesConfig (line 34) | type TestServicesConfig struct function NewTestServices (line 43) | func NewTestServices[Result any](t *testing.T, c TestServicesConfig) Tes... method RunRouter (line 139) | func (ts TestServices[Result]) RunRouter() { type TestCommand (line 150) | type TestCommand struct type TestCommand2 (line 154) | type TestCommand2 struct type TestCommandResult (line 158) | type TestCommandResult struct function TestRequestReply_without_result_no_error (line 162) | func TestRequestReply_without_result_no_error(t *testing.T) { function TestRequestReply_without_result_with_error (line 203) | func TestRequestReply_without_result_with_error(t *testing.T) { function TestRequestReply_with_result_no_error (line 249) | func TestRequestReply_with_result_no_error(t *testing.T) { function TestRequestReply_with_result_with_error (line 291) | func TestRequestReply_with_result_with_error(t *testing.T) { function TestSendWithReply (line 333) | func TestSendWithReply(t *testing.T) { function TestRequestReply_without_result_multiple_replies (line 368) | func TestRequestReply_without_result_multiple_replies(t *testing.T) { function TestRequestReply_timeout (line 446) | func TestRequestReply_timeout(t *testing.T) { function TestRequestReply_context_cancellation (line 491) | func TestRequestReply_context_cancellation(t *testing.T) { function TestRequestReply_fn_cancellation (line 540) | func TestRequestReply_fn_cancellation(t *testing.T) { function TestRequestReply_parallel_different_handlers (line 587) | func TestRequestReply_parallel_different_handlers(t *testing.T) { function TestRequestReply_parallel_same_handler (line 690) | func TestRequestReply_parallel_same_handler(t *testing.T) { function TestNewPubSubBackend_missing_values (line 746) | func TestNewPubSubBackend_missing_values(t *testing.T) { FILE: components/requeuer/requeuer.go constant RetriesKey (line 14) | RetriesKey = "_watermill_requeuer_retries" type Requeuer (line 18) | type Requeuer struct method handler (line 123) | func (r *Requeuer) handler(msg *message.Message) error { method Run (line 156) | func (r *Requeuer) Run(ctx context.Context) error { type GeneratePublishTopicParams (line 23) | type GeneratePublishTopicParams struct type Config (line 28) | type Config struct method setDefaults (line 56) | func (c *Config) setDefaults(logger watermill.LoggerAdapter) error { method validate (line 69) | func (c *Config) validate() error { function NewRequeuer (line 91) | func NewRequeuer( FILE: components/requeuer/requeuer_test.go function TestRequeue (line 21) | func TestRequeue(t *testing.T) { FILE: dev/consolidate-gomods/main.go function main (line 13) | func main() { function getGomods (line 63) | func getGomods() []string { FILE: dev/update-examples-deps/main.go function main (line 17) | func main() { function getGomods (line 66) | func getGomods() []string { function getLatestGoVersionFromWebsite (line 83) | func getLatestGoVersionFromWebsite() string { function goModTidy (line 104) | func goModTidy(dir string, file string) error { function replaceGoInDockerCompose (line 119) | func replaceGoInDockerCompose(dir string) error { function updateWatermill (line 148) | func updateWatermill(dir string, file string) error { function updateDeps (line 162) | func updateDeps(dir string, file string) error { FILE: dev/validate-examples/main.go type Config (line 18) | type Config struct method LoadFrom (line 26) | func (c *Config) LoadFrom(path string) error { function main (line 38) | func main() { function validate (line 74) | func validate(path string) error { function readLines (line 163) | func readLines(reader io.Reader, output chan<- string) { FILE: docs/content/docs/message/receiving-ack.go function main (line 10) | func main() { FILE: docs/content/docs/snippets/amqp-consumer-groups/main.go function createSubscriber (line 14) | func createSubscriber(queueSuffix string) *amqp.Subscriber { function main (line 35) | func main() { function publishMessages (line 65) | func publishMessages(publisher message.Publisher) { function process (line 75) | func process(subscriber string, messages <-chan *message.Message) { FILE: docs/content/docs/snippets/tail-log-file/main.go function main (line 15) | func main() { function criterion (line 50) | func criterion(line string) bool { FILE: docs/extract_middleware_godocs.py class MiddlewareSourceFile (line 6) | class MiddlewareSourceFile: method __init__ (line 7) | def __init__(self, filepath: str): method add_func_with_godoc (line 21) | def add_func_with_godoc(self, line_no: int): method format (line 42) | def format(self) -> str: function capitalize (line 56) | def capitalize(s: str) -> str: FILE: internal/channel.go function IsChannelClosed (line 5) | func IsChannelClosed(channel chan struct{}) bool { FILE: internal/channel_test.go function TestIsChannelClosed (line 10) | func TestIsChannelClosed(t *testing.T) { FILE: internal/name.go function StructName (line 9) | func StructName(v interface{}) string { FILE: internal/name_test.go type testStruct (line 10) | type testStruct struct type stringerStruct (line 12) | type stringerStruct struct method String (line 14) | func (stringerStruct) String() string { function TestStructName (line 18) | func TestStructName(t *testing.T) { FILE: internal/norace.go constant RaceEnabled (line 6) | RaceEnabled = false FILE: internal/publisher/errors.go type ErrCouldNotPublish (line 9) | type ErrCouldNotPublish struct method addMsg (line 13) | func (e *ErrCouldNotPublish) addMsg(msg *message.Message, reason error) { method Len (line 21) | func (e ErrCouldNotPublish) Len() int { method Error (line 25) | func (e ErrCouldNotPublish) Error() string { method Reasons (line 37) | func (e ErrCouldNotPublish) Reasons() map[string]error { function NewErrCouldNotPublish (line 17) | func NewErrCouldNotPublish() *ErrCouldNotPublish { FILE: internal/publisher/retry.go type RetryPublisherConfig (line 17) | type RetryPublisherConfig struct method setDefaults (line 24) | func (c *RetryPublisherConfig) setDefaults() { method validate (line 38) | func (c RetryPublisherConfig) validate() error { type RetryPublisher (line 50) | type RetryPublisher struct method Publish (line 68) | func (p RetryPublisher) Publish(topic string, messages ...*message.Mes... method Close (line 86) | func (p RetryPublisher) Close() error { method send (line 91) | func (p RetryPublisher) send(topic string, msg *message.Message) error { function NewRetryPublisher (line 55) | func NewRetryPublisher(pub message.Publisher, config RetryPublisherConfi... FILE: internal/publisher/retry_test.go type FailingPublisher (line 20) | type FailingPublisher struct method Publish (line 25) | func (p *FailingPublisher) Publish(topic string, messages ...*message.... method publish (line 39) | func (p *FailingPublisher) publish(msg *message.Message) { method Close (line 47) | func (p *FailingPublisher) Close() error { function TestRetryPublisher_Publish_after_retries (line 51) | func TestRetryPublisher_Publish_after_retries(t *testing.T) { function TestRetryPublisher_Publish_too_many_retries (line 79) | func TestRetryPublisher_Publish_too_many_retries(t *testing.T) { function TestPublishEachMessageOnlyOnce (line 113) | func TestPublishEachMessageOnlyOnce(t *testing.T) { type ClosingPublisher (line 150) | type ClosingPublisher struct method Publish (line 155) | func (ClosingPublisher) Publish(topic string, messages ...*message.Mes... method Close (line 159) | func (p *ClosingPublisher) Close() error { function TestRetryPublisher_Close (line 167) | func TestRetryPublisher_Close(t *testing.T) { function TestRetryPublisher_Close_failed (line 183) | func TestRetryPublisher_Close_failed(t *testing.T) { FILE: internal/race.go constant RaceEnabled (line 6) | RaceEnabled = true FILE: internal/subscriber/multiplier.go type Constructor (line 13) | type Constructor type multiplier (line 15) | type multiplier struct method Subscribe (line 30) | func (s *multiplier) Subscribe(ctx context.Context, topic string) (msg... method Close (line 73) | func (s *multiplier) Close() error { function NewMultiplier (line 23) | func NewMultiplier(constructor Constructor, subscribersCount int) messag... FILE: log.go type LogFields (line 19) | type LogFields method Add (line 22) | func (l LogFields) Add(newFields LogFields) LogFields { method Copy (line 32) | func (l LogFields) Copy() LogFields { type LoggerAdapter (line 41) | type LoggerAdapter interface type NopLogger (line 50) | type NopLogger struct method Error (line 52) | func (NopLogger) Error(msg string, err error, fields LogFields) {} method Info (line 53) | func (NopLogger) Info(msg string, fields LogFields) {} method Debug (line 54) | func (NopLogger) Debug(msg string, fields LogFields) {} method Trace (line 55) | func (NopLogger) Trace(msg string, fields LogFields) {} method With (line 56) | func (l NopLogger) With(fields LogFields) LoggerAdapter { retu... type StdLoggerAdapter (line 59) | type StdLoggerAdapter struct method Error (line 88) | func (l *StdLoggerAdapter) Error(msg string, err error, fields LogFiel... method Info (line 92) | func (l *StdLoggerAdapter) Info(msg string, fields LogFields) { method Debug (line 96) | func (l *StdLoggerAdapter) Debug(msg string, fields LogFields) { method Trace (line 100) | func (l *StdLoggerAdapter) Trace(msg string, fields LogFields) { method With (line 104) | func (l *StdLoggerAdapter) With(fields LogFields) LoggerAdapter { method log (line 114) | func (l *StdLoggerAdapter) log(logger *log.Logger, level string, msg s... function NewStdLogger (line 69) | func NewStdLogger(debug, trace bool) LoggerAdapter { function NewStdLoggerWithOut (line 74) | func NewStdLoggerWithOut(out io.Writer, debug bool, trace bool) LoggerAd... type LogLevel (line 152) | type LogLevel constant TraceLogLevel (line 155) | TraceLogLevel LogLevel = iota + 1 constant DebugLogLevel (line 156) | DebugLogLevel constant InfoLogLevel (line 157) | InfoLogLevel constant ErrorLogLevel (line 158) | ErrorLogLevel type CapturedMessage (line 161) | type CapturedMessage struct method ContentEquals (line 169) | func (c CapturedMessage) ContentEquals(other CapturedMessage) bool { type CaptureLoggerAdapter (line 178) | type CaptureLoggerAdapter struct method With (line 191) | func (c *CaptureLoggerAdapter) With(fields LogFields) LoggerAdapter { method capture (line 202) | func (c *CaptureLoggerAdapter) capture(level LogLevel, msg string, err... method Captured (line 217) | func (c *CaptureLoggerAdapter) Captured() map[LogLevel][]CapturedMessa... method PrintCaptured (line 228) | func (c *CaptureLoggerAdapter) PrintCaptured(t Logfer) { method Has (line 239) | func (c *CaptureLoggerAdapter) Has(msg CapturedMessage) bool { method HasError (line 246) | func (c *CaptureLoggerAdapter) HasError(err error) bool { method Error (line 258) | func (c *CaptureLoggerAdapter) Error(msg string, err error, fields Log... method Info (line 262) | func (c *CaptureLoggerAdapter) Info(msg string, fields LogFields) { method Debug (line 266) | func (c *CaptureLoggerAdapter) Debug(msg string, fields LogFields) { method Trace (line 270) | func (c *CaptureLoggerAdapter) Trace(msg string, fields LogFields) { function NewCaptureLogger (line 184) | func NewCaptureLogger() *CaptureLoggerAdapter { type Logfer (line 224) | type Logfer interface FILE: log_test.go function TestLogFields_Copy (line 13) | func TestLogFields_Copy(t *testing.T) { function TestStdLogger_with (line 23) | func TestStdLogger_with(t *testing.T) { type stringer (line 46) | type stringer struct method String (line 48) | func (s stringer) String() string { function TestStdLoggerAdapter_stringer_field (line 52) | func TestStdLoggerAdapter_stringer_field(t *testing.T) { function TestStdLoggerAdapter_field_with_space (line 62) | func TestStdLoggerAdapter_field_with_space(t *testing.T) { function TestCaptureLoggerAdapter (line 72) | func TestCaptureLoggerAdapter(t *testing.T) { FILE: message/decorator.go function MessageTransformSubscriberDecorator (line 10) | func MessageTransformSubscriberDecorator(transform func(*Message)) Subsc... function MessageTransformPublisherDecorator (line 24) | func MessageTransformPublisherDecorator(transform func(*Message)) Publis... type messageTransformSubscriberDecorator (line 36) | type messageTransformSubscriberDecorator struct method Subscribe (line 43) | func (t *messageTransformSubscriberDecorator) Subscribe(ctx context.Co... method Close (line 63) | func (t *messageTransformSubscriberDecorator) Close() error { type messageTransformPublisherDecorator (line 70) | type messageTransformPublisherDecorator struct method Publish (line 76) | func (d messageTransformPublisherDecorator) Publish(topic string, mess... FILE: message/decorator_bench_test.go type benchSubscriber (line 13) | type benchSubscriber struct method Subscribe (line 19) | func (b *benchSubscriber) Subscribe(ctx context.Context, topic string)... method Close (line 23) | func (b *benchSubscriber) Close() error { function newBenchSubscriber (line 31) | func newBenchSubscriber() *benchSubscriber { function BenchmarkMessageTransformSubscriberDecorator (line 55) | func BenchmarkMessageTransformSubscriberDecorator(b *testing.B) { function benchmarkNoDecorator (line 61) | func benchmarkNoDecorator(b *testing.B) { function benchmarkMessageTransformSubscriberDecorator (line 74) | func benchmarkMessageTransformSubscriberDecorator(b *testing.B) { FILE: message/decorator_test.go type mockSubscriber (line 24) | type mockSubscriber struct method Subscribe (line 28) | func (m mockSubscriber) Subscribe(context.Context, string) (<-chan *me... method Close (line 32) | func (m mockSubscriber) Close() error { function TestMessageTransformSubscriberDecorator_transparent (line 37) | func TestMessageTransformSubscriberDecorator_transparent(t *testing.T) { type closingSubscriber (line 59) | type closingSubscriber struct method Subscribe (line 63) | func (closingSubscriber) Subscribe(context.Context, string) (<-chan *m... method Close (line 67) | func (c *closingSubscriber) Close() error { function TestMessageTransformSubscriberDecorator_Close (line 72) | func TestMessageTransformSubscriberDecorator_Close(t *testing.T) { function TestMessageTransformSubscriberDecorator_Subscribe (line 98) | func TestMessageTransformSubscriberDecorator_Subscribe(t *testing.T) { type mockPublisher (line 139) | type mockPublisher struct method Publish (line 143) | func (m *mockPublisher) Publish(topic string, messages ...*message.Mes... method Close (line 148) | func (m mockPublisher) Close() error { function TestMessageTransformPublisherDecorator_transparent (line 152) | func TestMessageTransformPublisherDecorator_transparent(t *testing.T) { type closingPublisher (line 167) | type closingPublisher struct method Publish (line 171) | func (c *closingPublisher) Publish(topic string, messages ...*message.... method Close (line 175) | func (c *closingPublisher) Close() error { function TestMessageTransformPublisherDecorator_Close (line 180) | func TestMessageTransformPublisherDecorator_Close(t *testing.T) { function TestMessageTransformPublisherDecorator_Subscribe (line 206) | func TestMessageTransformPublisherDecorator_Subscribe(t *testing.T) { function TestMessageTransformer_nil_panics (line 233) | func TestMessageTransformer_nil_panics(t *testing.T) { FILE: message/message.go function init (line 11) | func init() { type Payload (line 16) | type Payload type Message (line 25) | type Message struct method Equals (line 81) | func (m *Message) Equals(toCompare *Message) bool { method Ack (line 101) | func (m *Message) Ack() bool { method Nack (line 127) | func (m *Message) Nack() bool { method Acked (line 159) | func (m *Message) Acked() <-chan struct{} { method Nacked (line 173) | func (m *Message) Nacked() <-chan struct{} { method Context (line 182) | func (m *Message) Context() context.Context { method SetContext (line 190) | func (m *Message) SetContext(ctx context.Context) { method Copy (line 196) | func (m *Message) Copy() *Message { method CopyWithContext (line 206) | func (m *Message) CopyWithContext() *Message { function NewMessage (line 55) | func NewMessage(uuid string, payload Payload) *Message { function NewMessageWithContext (line 66) | func NewMessageWithContext(ctx context.Context, uuid string, payload Pay... type ackType (line 72) | type ackType constant noAckSent (line 75) | noAckSent ackType = iota constant ack (line 76) | ack constant nack (line 77) | nack FILE: message/message_test.go function TestMessage_Equals (line 13) | func TestMessage_Equals(t *testing.T) { function TestMessage_Ack (line 59) | func TestMessage_Ack(t *testing.T) { function TestMessage_Ack_idempotent (line 67) | func TestMessage_Ack_idempotent(t *testing.T) { function TestMessage_Ack_already_Nack (line 75) | func TestMessage_Ack_already_Nack(t *testing.T) { function TestMessage_Nack (line 82) | func TestMessage_Nack(t *testing.T) { function TestMessage_Nack_idempotent (line 90) | func TestMessage_Nack_idempotent(t *testing.T) { function TestMessage_Nack_already_Ack (line 98) | func TestMessage_Nack_already_Ack(t *testing.T) { function TestMessage_Copy (line 105) | func TestMessage_Copy(t *testing.T) { type ctxKey (line 116) | type ctxKey function TestMessage_CopyWithContext (line 118) | func TestMessage_CopyWithContext(t *testing.T) { function TestMessage_CopyWithContextAndMetadata (line 131) | func TestMessage_CopyWithContextAndMetadata(t *testing.T) { function TestMessage_CopyMetadata (line 146) | func TestMessage_CopyMetadata(t *testing.T) { function assertAcked (line 156) | func assertAcked(t *testing.T, msg *message.Message) { function assertNacked (line 165) | func assertNacked(t *testing.T, msg *message.Message) { function assertNoAck (line 174) | func assertNoAck(t *testing.T, msg *message.Message) { function assertNoNack (line 183) | func assertNoNack(t *testing.T, msg *message.Message) { FILE: message/messages.go type Messages (line 4) | type Messages method IDs (line 7) | func (m Messages) IDs() []string { FILE: message/messages_test.go function TestMessages_IDs (line 10) | func TestMessages_IDs(t *testing.T) { FILE: message/metadata.go type Metadata (line 4) | type Metadata method Get (line 7) | func (m Metadata) Get(key string) string { method Set (line 16) | func (m Metadata) Set(key, value string) { FILE: message/pubsub.go type Publisher (line 8) | type Publisher interface type Subscriber (line 26) | type Subscriber interface type SubscribeInitializer (line 42) | type SubscribeInitializer interface FILE: message/router.go type HandlerFunc (line 32) | type HandlerFunc type NoPublishHandlerFunc (line 35) | type NoPublishHandlerFunc type HandlerMiddleware (line 59) | type HandlerMiddleware type RouterPlugin (line 62) | type RouterPlugin type PublisherDecorator (line 65) | type PublisherDecorator type SubscriberDecorator (line 68) | type SubscriberDecorator type RouterConfig (line 71) | type RouterConfig struct method setDefaults (line 76) | func (c *RouterConfig) setDefaults() { method Validate (line 83) | func (c RouterConfig) Validate() error { function NewRouter (line 88) | func NewRouter(config RouterConfig, logger watermill.LoggerAdapter) (*Ro... function NewDefaultRouter (line 98) | func NewDefaultRouter(logger watermill.LoggerAdapter) *Router { function newRouter (line 105) | func newRouter(config RouterConfig, logger watermill.LoggerAdapter) *Rou... type middleware (line 134) | type middleware struct type Router (line 144) | type Router struct method Logger (line 177) | func (r *Router) Logger() watermill.LoggerAdapter { method AddMiddleware (line 184) | func (r *Router) AddMiddleware(m ...HandlerMiddleware) { method addRouterLevelMiddleware (line 190) | func (r *Router) addRouterLevelMiddleware(m ...HandlerMiddleware) { method addHandlerLevelMiddleware (line 201) | func (r *Router) addHandlerLevelMiddleware(handlerName string, m ...Ha... method AddPlugin (line 218) | func (r *Router) AddPlugin(p ...RouterPlugin) { method AddPublisherDecorators (line 226) | func (r *Router) AddPublisherDecorators(dec ...PublisherDecorator) { method AddSubscriberDecorators (line 234) | func (r *Router) AddSubscriberDecorators(dec ...SubscriberDecorator) { method Handlers (line 241) | func (r *Router) Handlers() map[string]HandlerFunc { method AddHandler (line 272) | func (r *Router) AddHandler( method AddConsumerHandler (line 342) | func (r *Router) AddConsumerHandler( method AddNoPublisherHandler (line 367) | func (r *Router) AddNoPublisherHandler( method Run (line 386) | func (r *Router) Run(ctx context.Context) (err error) { method RunHandlers (line 426) | func (r *Router) RunHandlers(ctx context.Context) error { method watchAllHandlersStopped (line 497) | func (r *Router) watchAllHandlersStopped(ctx context.Context) { method Running (line 545) | func (r *Router) Running() chan struct{} { method IsRunning (line 553) | func (r *Router) IsRunning() bool { method Close (line 563) | func (r *Router) Close() error { method waitForHandlers (line 592) | func (r *Router) waitForHandlers() bool { method IsClosed (line 611) | func (r *Router) IsClosed() bool { method decorateHandlerPublisher (line 724) | func (r *Router) decorateHandlerPublisher(h *handler) error { method decorateHandlerSubscriber (line 740) | func (r *Router) decorateHandlerSubscriber(h *handler) error { type DuplicateHandlerNameError (line 252) | type DuplicateHandlerNameError struct method Error (line 256) | func (d DuplicateHandlerNameError) Error() string { type handler (line 618) | type handler struct method run (line 645) | func (h *handler) run(ctx context.Context, middlewares []middleware) { method addHandlerContext (line 767) | func (h *handler) addHandlerContext(messages ...*Message) { method handleClose (line 790) | func (h *handler) handleClose(ctx context.Context) { method handleMessage (line 805) | func (h *handler) handleMessage(msg *Message, handler HandlerFunc) { method publishProducedMessages (line 843) | func (h *handler) publishProducedMessages(producedMessages Messages, m... type Handler (line 683) | type Handler struct method AddMiddleware (line 691) | func (h *Handler) AddMiddleware(m ...HandlerMiddleware) { method Started (line 702) | func (h *Handler) Started() chan struct{} { method Stop (line 709) | func (h *Handler) Stop() { method Stopped (line 718) | func (h *Handler) Stopped() chan struct{} { type disabledPublisher (line 868) | type disabledPublisher struct method Publish (line 870) | func (disabledPublisher) Publish(topic string, messages ...*Message) e... method Close (line 874) | func (disabledPublisher) Close() error { FILE: message/router/middleware/circuit_breaker.go type CircuitBreaker (line 11) | type CircuitBreaker struct method Middleware (line 24) | func (c CircuitBreaker) Middleware(h message.HandlerFunc) message.Hand... function NewCircuitBreaker (line 17) | func NewCircuitBreaker(settings gobreaker.Settings) CircuitBreaker { FILE: message/router/middleware/circuit_breaker_test.go function TestCircuitBreaker (line 14) | func TestCircuitBreaker(t *testing.T) { FILE: message/router/middleware/correlation.go constant CorrelationIDMetadataKey (line 8) | CorrelationIDMetadataKey = "correlation_id" function SetCorrelationID (line 15) | func SetCorrelationID(id string, msg *message.Message) { function MessageCorrelationID (line 24) | func MessageCorrelationID(message *message.Message) string { function CorrelationID (line 32) | func CorrelationID(h message.HandlerFunc) message.HandlerFunc { FILE: message/router/middleware/correlation_test.go function TestCorrelationID (line 15) | func TestCorrelationID(t *testing.T) { function TestSetCorrelationID_already_set (line 32) | func TestSetCorrelationID_already_set(t *testing.T) { FILE: message/router/middleware/deduplicator.go constant MessageHasherReadLimitMinimum (line 21) | MessageHasherReadLimitMinimum = 64 type ExpiringKeyRepository (line 26) | type ExpiringKeyRepository interface type MessageHasher (line 37) | type MessageHasher type Deduplicator (line 64) | type Deduplicator struct method IsDuplicate (line 72) | func (d *Deduplicator) IsDuplicate(m *message.Message) (bool, error) { method Middleware (line 112) | func (d *Deduplicator) Middleware(h message.HandlerFunc) message.Handl... method PublisherDecorator (line 303) | func (d *Deduplicator) PublisherDecorator() message.PublisherDecorator { function applyDefaultsToDeduplicator (line 82) | func applyDefaultsToDeduplicator(d *Deduplicator) *Deduplicator { type mapExpiringKeyRepository (line 126) | type mapExpiringKeyRepository struct method IsDuplicate (line 161) | func (kr *mapExpiringKeyRepository) IsDuplicate( method cleanOutLoop (line 180) | func (kr *mapExpiringKeyRepository) cleanOutLoop(ctx context.Context, ... method cleanOut (line 191) | func (kr *mapExpiringKeyRepository) cleanOut(tagsBefore time.Time) { method Len (line 204) | func (kr *mapExpiringKeyRepository) Len() (count int) { function NewMapExpiringKeyRepository (line 145) | func NewMapExpiringKeyRepository(window time.Duration) (ExpiringKeyRepos... function NewMessageHasherAdler32 (line 219) | func NewMessageHasherAdler32(readLimit int64) MessageHasher { function NewMessageHasherSHA256 (line 241) | func NewMessageHasherSHA256(readLimit int64) MessageHasher { function NewMessageHasherFromMetadataField (line 260) | func NewMessageHasherFromMetadataField(field string) MessageHasher { type deduplicatingPublisherDecorator (line 270) | type deduplicatingPublisherDecorator struct method Publish (line 275) | func (d *deduplicatingPublisherDecorator) Publish( FILE: message/router/middleware/deduplicator_test.go function TestDeduplicatorMiddleware (line 15) | func TestDeduplicatorMiddleware(t *testing.T) { function TestDeduplicatorPublisherDecorator (line 50) | func TestDeduplicatorPublisherDecorator(t *testing.T) { function TestMessageHasherAdler32 (line 100) | func TestMessageHasherAdler32(t *testing.T) { function TestMessageHasherSHA256 (line 117) | func TestMessageHasherSHA256(t *testing.T) { function TestMessageHasherFromMetadataField (line 134) | func TestMessageHasherFromMetadataField(t *testing.T) { function TestMapExpiringKeyRepositoryCleanup (line 152) | func TestMapExpiringKeyRepositoryCleanup(t *testing.T) { FILE: message/router/middleware/delay_on_error.go type DelayOnError (line 14) | type DelayOnError struct method Middleware (line 23) | func (d *DelayOnError) Middleware(h message.HandlerFunc) message.Handl... method applyDelay (line 34) | func (d *DelayOnError) applyDelay(msg *message.Message) { FILE: message/router/middleware/delay_on_error_test.go function TestDelayOnError (line 15) | func TestDelayOnError(t *testing.T) { FILE: message/router/middleware/duplicator.go function Duplicator (line 8) | func Duplicator(h message.HandlerFunc) message.HandlerFunc { FILE: message/router/middleware/duplicator_test.go function TestDuplicator (line 17) | func TestDuplicator(t *testing.T) { function TestDuplicator_errors (line 31) | func TestDuplicator_errors(t *testing.T) { FILE: message/router/middleware/ignore_errors.go type IgnoreErrors (line 9) | type IgnoreErrors struct method Middleware (line 25) | func (i IgnoreErrors) Middleware(h message.HandlerFunc) message.Handle... function NewIgnoreErrors (line 14) | func NewIgnoreErrors(errs []error) IgnoreErrors { FILE: message/router/middleware/ignore_errors_test.go function TestIgnoreErrors_Middleware (line 12) | func TestIgnoreErrors_Middleware(t *testing.T) { FILE: message/router/middleware/instant_ack.go function InstantAck (line 9) | func InstantAck(h message.HandlerFunc) message.HandlerFunc { FILE: message/router/middleware/instant_ack_test.go function TestInstantAck (line 11) | func TestInstantAck(t *testing.T) { FILE: message/router/middleware/message_test.go type mockPublisherBehaviour (line 9) | type mockPublisherBehaviour constant BehaviourAlwaysOK (line 12) | BehaviourAlwaysOK mockPublisherBehaviour = iota + 1 constant BehaviourAlwaysFail (line 13) | BehaviourAlwaysFail constant BehaviourAlwaysPanic (line 14) | BehaviourAlwaysPanic type mockPublisher (line 23) | type mockPublisher struct method Publish (line 30) | func (mp *mockPublisher) Publish(topic string, messages ...*message.Me... method Close (line 47) | func (mp *mockPublisher) Close() error { method PopMessages (line 52) | func (mp *mockPublisher) PopMessages() []*message.Message { function handlerFuncAlwaysOK (line 62) | func handlerFuncAlwaysOK(*message.Message) ([]*message.Message, error) { function handlerFuncAlwaysFailing (line 66) | func handlerFuncAlwaysFailing(*message.Message) ([]*message.Message, err... FILE: message/router/middleware/poison.go constant ReasonForPoisonedKey (line 15) | ReasonForPoisonedKey = "reason_poisoned" constant PoisonedTopicKey (line 16) | PoisonedTopicKey = "topic_poisoned" constant PoisonedHandlerKey (line 17) | PoisonedHandlerKey = "handler_poisoned" constant PoisonedSubscriberKey (line 18) | PoisonedSubscriberKey = "subscriber_poisoned" type poisonQueue (line 21) | type poisonQueue struct method publishPoisonMessage (line 62) | func (pq poisonQueue) publishPoisonMessage(msg *message.Message, err e... method Middleware (line 78) | func (pq poisonQueue) Middleware(h message.HandlerFunc) message.Handle... function PoisonQueue (line 30) | func PoisonQueue(pub message.Publisher, topic string) (message.HandlerMi... function PoisonQueueWithFilter (line 47) | func PoisonQueueWithFilter(pub message.Publisher, topic string, shouldGo... FILE: message/router/middleware/poison_test.go constant topic (line 20) | topic = "testing_poison_queue_topic" function TestPoisonQueue_handler_ok (line 24) | func TestPoisonQueue_handler_ok(t *testing.T) { function TestPoisonQueue_handler_failing (line 62) | func TestPoisonQueue_handler_failing(t *testing.T) { function TestPoisonQueue_context_values (line 113) | func TestPoisonQueue_context_values(t *testing.T) { function TestPoisonQueue_handler_failing_publisher_failing (line 160) | func TestPoisonQueue_handler_failing_publisher_failing(t *testing.T) { function TestPoisonQueueWithFilter_poison_queue (line 205) | func TestPoisonQueueWithFilter_poison_queue(t *testing.T) { function TestPoisonQueueWithFilter_non_poison_queue (line 224) | func TestPoisonQueueWithFilter_non_poison_queue(t *testing.T) { FILE: message/router/middleware/randomfail.go function shouldFail (line 10) | func shouldFail(probability float32) bool { function RandomFail (line 16) | func RandomFail(errorProbability float32) message.HandlerMiddleware { function RandomPanic (line 29) | func RandomPanic(panicProbability float32) message.HandlerMiddleware { FILE: message/router/middleware/randomfail_test.go function TestRandomFail (line 11) | func TestRandomFail(t *testing.T) { function TestRandomPanic (line 20) | func TestRandomPanic(t *testing.T) { FILE: message/router/middleware/recoverer.go type RecoveredPanicError (line 12) | type RecoveredPanicError struct method Error (line 17) | func (p RecoveredPanicError) Error() string { function Recoverer (line 23) | func Recoverer(h message.HandlerFunc) message.HandlerFunc { FILE: message/router/middleware/recoverer_test.go function TestRecoverer_Panic (line 13) | func TestRecoverer_Panic(t *testing.T) { function TestRecoverer_PanicNil (line 23) | func TestRecoverer_PanicNil(t *testing.T) { function TestRecoverer_NoPanic (line 32) | func TestRecoverer_NoPanic(t *testing.T) { FILE: message/router/middleware/retry.go type RetryParams (line 14) | type RetryParams struct type Retry (line 25) | type Retry struct method Middleware (line 60) | func (r Retry) Middleware(h message.HandlerFunc) message.HandlerFunc { FILE: message/router/middleware/retry_test.go function TestRetry_retry (line 17) | func TestRetry_retry(t *testing.T) { function TestRetry_max_retries (line 41) | func TestRetry_max_retries(t *testing.T) { function TestRetry_retry_hook (line 60) | func TestRetry_retry_hook(t *testing.T) { function TestRetry_logger (line 78) | func TestRetry_logger(t *testing.T) { function TestRetry_ctx_cancel (line 96) | func TestRetry_ctx_cancel(t *testing.T) { function TestRetry_max_elapsed (line 149) | func TestRetry_max_elapsed(t *testing.T) { function TestRetry_max_interval (line 178) | func TestRetry_max_interval(t *testing.T) { function TestRetry_first_run_no_delay (line 206) | func TestRetry_first_run_no_delay(t *testing.T) { function TestRetry_should_retry (line 227) | func TestRetry_should_retry(t *testing.T) { function TestRetry_should_retry_second_attempt (line 258) | func TestRetry_should_retry_second_attempt(t *testing.T) { function TestRetry_backoff_backoff_permanent (line 293) | func TestRetry_backoff_backoff_permanent(t *testing.T) { function TestRetry_uncancel_context (line 324) | func TestRetry_uncancel_context(t *testing.T) { FILE: message/router/middleware/throttle.go type Throttle (line 11) | type Throttle struct method Middleware (line 24) | func (t Throttle) Middleware(h message.HandlerFunc) message.HandlerFunc { function NewThrottle (line 17) | func NewThrottle(count int64, duration time.Duration) *Throttle { FILE: message/router/middleware/throttle_test.go constant perSecond (line 16) | perSecond = 10 constant testTimeout (line 17) | testTimeout = time.Second constant concurrentHandlers (line 18) | concurrentHandlers = 10 function TestThrottle_Middleware (line 21) | func TestThrottle_Middleware(t *testing.T) { FILE: message/router/middleware/timeout.go function Timeout (line 12) | func Timeout(timeout time.Duration) func(message.HandlerFunc) message.Ha... FILE: message/router/middleware/timeout_test.go function TestTimeout (line 14) | func TestTimeout(t *testing.T) { FILE: message/router/plugin/signals.go function SignalsHandler (line 13) | func SignalsHandler(r *message.Router) error { FILE: message/router_context.go type ctxKey (line 7) | type ctxKey constant handlerNameKey (line 10) | handlerNameKey ctxKey = "handler_name" constant publisherNameKey (line 11) | publisherNameKey ctxKey = "publisher_name" constant subscriberNameKey (line 12) | subscriberNameKey ctxKey = "subscriber_name" constant subscribeTopicKey (line 13) | subscribeTopicKey ctxKey = "subscribe_topic" constant publishTopicKey (line 14) | publishTopicKey ctxKey = "publish_topic" function valFromCtx (line 17) | func valFromCtx(ctx context.Context, key ctxKey) string { function HandlerNameFromCtx (line 26) | func HandlerNameFromCtx(ctx context.Context) string { function PublisherNameFromCtx (line 32) | func PublisherNameFromCtx(ctx context.Context) string { function SubscriberNameFromCtx (line 38) | func SubscriberNameFromCtx(ctx context.Context) string { function SubscribeTopicFromCtx (line 43) | func SubscribeTopicFromCtx(ctx context.Context) string { function PublishTopicFromCtx (line 48) | func PublishTopicFromCtx(ctx context.Context) string { FILE: message/router_context_test.go type namedMockPublisher (line 13) | type namedMockPublisher struct method Publish (line 15) | func (namedMockPublisher) Publish(topic string, messages ...*message.M... method Close (line 16) | func (namedMockPublisher) Close() error ... method String (line 17) | func (namedMockPublisher) String() string { type namedMockSubscriber (line 21) | type namedMockSubscriber struct method Subscribe (line 23) | func (s namedMockSubscriber) Subscribe(context.Context, string) (<-cha... method Close (line 26) | func (s *namedMockSubscriber) Close() error { close(s.ch); return nil } method String (line 27) | func (namedMockSubscriber) String() string { function TestRouter_Context_Stringer (line 31) | func TestRouter_Context_Stringer(t *testing.T) { type unnamedMockPublisher (line 78) | type unnamedMockPublisher struct method Publish (line 80) | func (unnamedMockPublisher) Publish(topic string, messages ...*message... method Close (line 81) | func (unnamedMockPublisher) Close() error ... type unnamedMockSubscriber (line 83) | type unnamedMockSubscriber struct method Subscribe (line 85) | func (s unnamedMockSubscriber) Subscribe(context.Context, string) (<-c... method Close (line 88) | func (s *unnamedMockSubscriber) Close() error { close(s.ch); return nil } function TestRouter_Context_TypeName (line 90) | func TestRouter_Context_TypeName(t *testing.T) { function setupPubsubNameTests (line 135) | func setupPubsubNameTests(t *testing.T, capturedMessages chan (*message.... FILE: message/router_test.go function TestRouter_functional (line 22) | func TestRouter_functional(t *testing.T) { function TestRouter_functional_nack (line 122) | func TestRouter_functional_nack(t *testing.T) { function TestRouter_ack_on_publishing_success (line 172) | func TestRouter_ack_on_publishing_success(t *testing.T) { function TestRouter_nack_on_publishing_failure (line 220) | func TestRouter_nack_on_publishing_failure(t *testing.T) { function TestRouter_nack_on_panic (line 268) | func TestRouter_nack_on_panic(t *testing.T) { function TestRouter_nack_on_handler_failure (line 316) | func TestRouter_nack_on_handler_failure(t *testing.T) { function TestRouter_AddMiddleware_to_router (line 361) | func TestRouter_AddMiddleware_to_router(t *testing.T) { function TestRouter_AddMiddleware_to_handler (line 441) | func TestRouter_AddMiddleware_to_handler(t *testing.T) { function TestRouter_AddMiddleware_to_handler_many (line 520) | func TestRouter_AddMiddleware_to_handler_many(t *testing.T) { function TestRouter_RunHandlers (line 614) | func TestRouter_RunHandlers(t *testing.T) { function TestRouter_close_handler (line 678) | func TestRouter_close_handler(t *testing.T) { type subscriberMock (line 762) | type subscriberMock struct method Subscribe (line 766) | func (s *subscriberMock) Subscribe(ctx context.Context, topic string) ... method Close (line 770) | func (s *subscriberMock) Close() error { type failingPublisherMock (line 775) | type failingPublisherMock struct method Publish (line 780) | func (p *failingPublisherMock) Publish(topic string, messages ...*mess... method Close (line 790) | func (p *failingPublisherMock) Close() error { return nil } function TestRouter_stop_when_all_handlers_stopped (line 792) | func TestRouter_stop_when_all_handlers_stopped(t *testing.T) { type benchMockSubscriber (line 853) | type benchMockSubscriber struct method Subscribe (line 857) | func (m benchMockSubscriber) Subscribe(_ context.Context, topic string... method Close (line 872) | func (benchMockSubscriber) Close() error { type nopPublisher (line 876) | type nopPublisher struct method Publish (line 878) | func (nopPublisher) Publish(topic string, messages ...*message.Message... method Close (line 879) | func (nopPublisher) Close() error ... function BenchmarkRouterHandler (line 881) | func BenchmarkRouterHandler(b *testing.B) { function TestRouterNoPublisherHandler (line 917) | func TestRouterNoPublisherHandler(t *testing.T) { function BenchmarkRouterNoPublisherHandler (line 966) | func BenchmarkRouterNoPublisherHandler(b *testing.B) { function TestRouterDecoratorsOrder (line 1001) | func TestRouterDecoratorsOrder(t *testing.T) { function TestRouter_concurrent_close (line 1071) | func TestRouter_concurrent_close(t *testing.T) { function TestRouter_concurrent_close_on_handlers_closed (line 1086) | func TestRouter_concurrent_close_on_handlers_closed(t *testing.T) { function createBenchSubscriber (line 1119) | func createBenchSubscriber(b *testing.B) benchMockSubscriber { function publishMessagesForHandler (line 1131) | func publishMessagesForHandler(t *testing.T, messagesCount int, pub mess... function createPubSub (line 1148) | func createPubSub() (message.Publisher, message.Subscriber) { function readMessages (line 1156) | func readMessages(messagesCh <-chan *message.Message, limit int, timeout... function TestRouter_Handlers (line 1180) | func TestRouter_Handlers(t *testing.T) { function TestRouter_wait_for_handlers_before_shutdown (line 1224) | func TestRouter_wait_for_handlers_before_shutdown(t *testing.T) { function TestRouter_wait_for_handlers_before_shutdown_timeout (line 1278) | func TestRouter_wait_for_handlers_before_shutdown_timeout(t *testing.T) { function TestRouter_context_cancel_does_not_log_error (line 1323) | func TestRouter_context_cancel_does_not_log_error(t *testing.T) { function TestRouter_nack_on_context_canceled (line 1366) | func TestRouter_nack_on_context_canceled(t *testing.T) { function TestRouter_stopping_all_handlers_logs_error (line 1433) | func TestRouter_stopping_all_handlers_logs_error(t *testing.T) { FILE: message/subscriber/read.go function BulkRead (line 10) | func BulkRead(messagesCh <-chan *message.Message, limit int, timeout tim... function BulkReadWithDeduplication (line 31) | func BulkReadWithDeduplication(messagesCh <-chan *message.Message, limit... FILE: message/subscriber/read_test.go type bulkReadFunc (line 15) | type bulkReadFunc function TestBulkRead (line 17) | func TestBulkRead(t *testing.T) { function TestBulkRead_timeout (line 54) | func TestBulkRead_timeout(t *testing.T) { function TestBulkRead_with_limit (line 94) | func TestBulkRead_with_limit(t *testing.T) { function TestBulkRead_return_on_channel_close (line 129) | func TestBulkRead_return_on_channel_close(t *testing.T) { function TestBulkReadWithDeduplication (line 172) | func TestBulkReadWithDeduplication(t *testing.T) { FILE: pubsub/gochannel/fanout.go type FanOut (line 23) | type FanOut struct method AddSubscription (line 67) | func (f *FanOut) AddSubscription(topic string) { method Run (line 94) | func (f *FanOut) Run(ctx context.Context) error { method Running (line 99) | func (f *FanOut) Running() chan struct{} { method IsClosed (line 103) | func (f *FanOut) IsClosed() bool { method Subscribe (line 108) | func (f *FanOut) Subscribe(ctx context.Context, topic string) (<-chan ... method Close (line 113) | func (f *FanOut) Close() error { function NewFanOut (line 36) | func NewFanOut( FILE: pubsub/gochannel/fanout_test.go function TestFanOut (line 17) | func TestFanOut(t *testing.T) { function TestFanOut_RouterClosed (line 97) | func TestFanOut_RouterClosed(t *testing.T) { FILE: pubsub/gochannel/pubsub.go type Config (line 15) | type Config struct type GoChannel (line 43) | type GoChannel struct method Publish (line 90) | func (g *GoChannel) Publish(topic string, messages ...*message.Message... method waitForAckFromSubscribers (line 140) | func (g *GoChannel) waitForAckFromSubscribers(msg *message.Message, ac... method sendMessage (line 152) | func (g *GoChannel) sendMessage(topic string, message *message.Message... method Subscribe (line 188) | func (g *GoChannel) Subscribe(ctx context.Context, topic string) (<-ch... method addSubscriber (line 266) | func (g *GoChannel) addSubscriber(topic string, s *subscriber) { method removeSubscriber (line 273) | func (g *GoChannel) removeSubscriber(topic string, toRemove *subscribe... method topicSubscribers (line 298) | func (g *GoChannel) topicSubscribers(topic string) []*subscriber { method isClosed (line 311) | func (g *GoChannel) isClosed() bool { method Close (line 319) | func (g *GoChannel) Close() error { function NewGoChannel (line 64) | func NewGoChannel(config Config, logger watermill.LoggerAdapter) *GoChan... type subscriber (line 339) | type subscriber struct method Close (line 354) | func (s *subscriber) Close() { method sendMessageToSubscriber (line 372) | func (s *subscriber) sendMessageToSubscriber(msg *message.Message, log... FILE: pubsub/gochannel/pubsub_bench_test.go function BenchmarkSubscriber (line 14) | func BenchmarkSubscriber(b *testing.B) { function BenchmarkSubscriberPersistent (line 23) | func BenchmarkSubscriberPersistent(b *testing.B) { FILE: pubsub/gochannel/pubsub_internal_test.go function TestSubscribe_clean_subscriber_data (line 15) | func TestSubscribe_clean_subscriber_data(t *testing.T) { function TestPublish_clean_lock_data (line 44) | func TestPublish_clean_lock_data(t *testing.T) { FILE: pubsub/gochannel/pubsub_stress_test.go function TestPublishSubscribe_stress (line 12) | func TestPublishSubscribe_stress(t *testing.T) { FILE: pubsub/gochannel/pubsub_test.go function createPersistentPubSub (line 21) | func createPersistentPubSub(t *testing.T) (message.Publisher, message.Su... function createPersistentPubSubWithContextPreserved (line 32) | func createPersistentPubSubWithContextPreserved(t *testing.T) (message.P... function TestPublishSubscribe_persistent (line 44) | func TestPublishSubscribe_persistent(t *testing.T) { function TestPublishSubscribe_context_preserved (line 59) | func TestPublishSubscribe_context_preserved(t *testing.T) { function TestPublishSubscribe_not_persistent (line 75) | func TestPublishSubscribe_not_persistent(t *testing.T) { function TestPublishSubscribe_not_persistent_with_context (line 94) | func TestPublishSubscribe_not_persistent_with_context(t *testing.T) { function TestPublishSubscribe_block_until_ack (line 119) | func TestPublishSubscribe_block_until_ack(t *testing.T) { function TestPublishSubscribe_race_condition_on_subscribe (line 163) | func TestPublishSubscribe_race_condition_on_subscribe(t *testing.T) { function TestSubscribe_race_condition_when_closing (line 177) | func TestSubscribe_race_condition_when_closing(t *testing.T) { function TestPublish_race_condition_when_closing (line 200) | func TestPublish_race_condition_when_closing(t *testing.T) { function TestPublishSubscribe_do_not_block_other_subscribers (line 223) | func TestPublishSubscribe_do_not_block_other_subscribers(t *testing.T) { function TestPublishSubscribe_flush_output_channel (line 261) | func TestPublishSubscribe_flush_output_channel(t *testing.T) { function testPublishSubscribeSubRace (line 336) | func testPublishSubscribeSubRace(t *testing.T) { FILE: pubsub/sync/waitgroup.go function WaitGroupTimeout (line 10) | func WaitGroupTimeout(wg *sync.WaitGroup, timeout time.Duration) bool { FILE: pubsub/sync/waitgroup_test.go function TestWaitGroupTimeout_no_timeout (line 11) | func TestWaitGroupTimeout_no_timeout(t *testing.T) { function TestWaitGroupTimeout_timeout (line 18) | func TestWaitGroupTimeout_timeout(t *testing.T) { FILE: pubsub/tests/bench_pubsub.go type BenchmarkPubSubConstructor (line 13) | type BenchmarkPubSubConstructor function BenchSubscriber (line 16) | func BenchSubscriber(b *testing.B, pubSubConstructor BenchmarkPubSubCons... FILE: pubsub/tests/test_asserts.go function difference (line 12) | func difference(a, b []string) []string { function MissingMessages (line 27) | func MissingMessages(expected message.Messages, received message.Message... function AssertAllMessagesReceived (line 39) | func AssertAllMessagesReceived(t *testing.T, sent message.Messages, rece... function AssertMessagesPayloads (line 62) | func AssertMessagesPayloads( function AssertMessagesMetadata (line 85) | func AssertMessagesMetadata(t *testing.T, key string, expectedValues map... function AssertAllMessagesHaveSameContext (line 99) | func AssertAllMessagesHaveSameContext(t *testing.T, contextKeyString str... FILE: pubsub/tests/test_pubsub.go function TestPubSub (line 34) | func TestPubSub( type Features (line 95) | type Features struct function RunOnlyFastTests (line 141) | func RunOnlyFastTests() bool { type PubSubConstructor (line 146) | type PubSubConstructor type ConsumerGroupPubSubConstructor (line 149) | type ConsumerGroupPubSubConstructor type SimpleMessage (line 152) | type SimpleMessage struct function getTestName (line 156) | func getTestName(testFunc interface{}) string { type TestID (line 164) | type TestID method String (line 166) | func (t TestID) String() string { function NewTestID (line 171) | func NewTestID() TestID { function NewTestULID (line 176) | func NewTestULID() TestID { type TestContext (line 181) | type TestContext struct function runTest (line 189) | func runTest( constant defaultStressTestTestsCount (line 213) | defaultStressTestTestsCount = 10 function TestPubSubStressTest (line 216) | func TestPubSubStressTest( function TestPublishSubscribe (line 236) | func TestPublishSubscribe( function TestConcurrentSubscribe (line 284) | func TestConcurrentSubscribe( function TestConcurrentSubscribeMultipleTopics (line 327) | func TestConcurrentSubscribeMultipleTopics( function TestPublishSubscribeInOrder (line 405) | func TestPublishSubscribeInOrder( function TestResendOnError (line 484) | func TestResendOnError( function TestNoAck (line 533) | func TestNoAck( function TestContinueAfterSubscribeClose (line 607) | func TestContinueAfterSubscribeClose( function TestConcurrentClose (line 704) | func TestConcurrentClose( function TestContinueAfterErrors (line 755) | func TestContinueAfterErrors( function TestConsumerGroups (line 817) | func TestConsumerGroups( function TestPublisherClose (line 845) | func TestPublisherClose( function TestTopic (line 873) | func TestTopic( function TestMessageCtx (line 914) | func TestMessageCtx( type contextKey (line 970) | type contextKey function TestSubscribeCtx (line 973) | func TestSubscribeCtx( function TestReconnect (line 1042) | func TestReconnect( function TestNewSubscriberReceivesOldMessages (line 1126) | func TestNewSubscriberReceivesOldMessages( function restartServer (line 1202) | func restartServer(t *testing.T, features Features) { function assertConsumerGroupReceivedMessages (line 1215) | func assertConsumerGroupReceivedMessages( function testTopicName (line 1235) | func testTopicName(tCtx TestContext) string { function newTestID (line 1243) | func newTestID(tCtx TestContext) TestID { function closePubSub (line 1251) | func closePubSub(t *testing.T, pub message.Publisher, sub message.Subscr... function generateConsumerGroup (line 1259) | func generateConsumerGroup(t *testing.T, pubSubConstructor ConsumerGroup... function PublishSimpleMessages (line 1276) | func PublishSimpleMessages(t *testing.T, messagesCount int, publisher me... function PublishSimpleMessagesWithContext (line 1293) | func PublishSimpleMessagesWithContext(t *testing.T, messagesCount int, c... function AddSimpleMessagesParallel (line 1312) | func AddSimpleMessagesParallel(t *testing.T, messagesCount int, publishe... function assertMessagesChannelClosed (line 1344) | func assertMessagesChannelClosed(t *testing.T, messages <-chan *message.... function publishWithRetry (line 1354) | func publishWithRetry(publisher message.Publisher, topic string, message... function bulkRead (line 1372) | func bulkRead(testCtx TestContext, messagesCh <-chan *message.Message, l... function createMultipliedSubscriber (line 1393) | func createMultipliedSubscriber(t *testing.T, pubSubConstructor PubSubCo... FILE: pubsub/tests/test_pubsub_stress.go function init (line 10) | func init() { FILE: slog.go constant LevelTrace (line 9) | LevelTrace = slog.LevelDebug - 4 function slogAttrsFromFields (line 11) | func slogAttrsFromFields(fields LogFields) []any { type SlogLoggerAdapter (line 22) | type SlogLoggerAdapter struct method Error (line 29) | func (s *SlogLoggerAdapter) Error(msg string, err error, fields LogFie... method Info (line 34) | func (s *SlogLoggerAdapter) Info(msg string, fields LogFields) { method Debug (line 39) | func (s *SlogLoggerAdapter) Debug(msg string, fields LogFields) { method Trace (line 44) | func (s *SlogLoggerAdapter) Trace(msg string, fields LogFields) { method log (line 52) | func (s *SlogLoggerAdapter) log(level slog.Level, msg string, args ...... method With (line 73) | func (s *SlogLoggerAdapter) With(fields LogFields) LoggerAdapter { function NewSlogLogger (line 78) | func NewSlogLogger(logger *slog.Logger) LoggerAdapter { function NewSlogLoggerWithLevelMapping (line 90) | func NewSlogLoggerWithLevelMapping(logger *slog.Logger, watermillLevelTo... FILE: slog_test.go function TestSlogLoggerAdapter (line 14) | func TestSlogLoggerAdapter(t *testing.T) { function TestSlogLoggerAdapter_level_mapping (line 55) | func TestSlogLoggerAdapter_level_mapping(t *testing.T) { FILE: tools/mill/cmd/amqp.go function amqpConsumerConfig (line 42) | func amqpConsumerConfig() amqp.Config { function amqpProducerConfig (line 76) | func amqpProducerConfig() amqp.Config { function init (line 103) | func init() { function configureAmqpCmd (line 112) | func configureAmqpCmd() { function configureConsumeCmd (line 137) | func configureConsumeCmd(consumeCmd *cobra.Command) { function configureProduceCmd (line 156) | func configureProduceCmd(produceCmd *cobra.Command) { FILE: tools/mill/cmd/consume.go function addConsumeCmd (line 20) | func addConsumeCmd(parent *cobra.Command, topicKey string) *cobra.Command { FILE: tools/mill/cmd/googlecloud.go function generateTempSubscription (line 185) | func generateTempSubscription() (id string, err error) { function addSubscription (line 206) | func addSubscription( function removeTempSubscription (line 248) | func removeTempSubscription() (err error) { function removeSubscription (line 259) | func removeSubscription(id string) error { function listSubscriptions (line 281) | func listSubscriptions(topic string, adapter watermill.LoggerAdapter, ve... function listSubscriptionsForTopic (line 319) | func listSubscriptionsForTopic(ctx context.Context, client *pubsub.Clien... function printSubscriptionInfo (line 360) | func printSubscriptionInfo(name string, config pubsub.SubscriptionConfig... type subscriptionConfig (line 381) | type subscriptionConfig struct type subscriptionConfigPushConfig (line 390) | type subscriptionConfigPushConfig struct function projectID (line 395) | func projectID() string { function init (line 404) | func init() { FILE: tools/mill/cmd/internal/indent.go function Indent (line 6) | func Indent(s, prefix string) string { FILE: tools/mill/cmd/kafka.go function init (line 66) | func init() { FILE: tools/mill/cmd/produce.go function addProduceCmd (line 20) | func addProduceCmd(parent *cobra.Command, topicKey string) *cobra.Command { FILE: tools/mill/cmd/root.go function Execute (line 65) | func Execute() { function init (line 72) | func init() { function initConfig (line 95) | func initConfig() { function ensure (line 120) | func ensure(err error) { function checkRequiredFlags (line 126) | func checkRequiredFlags(flags *pflag.FlagSet) error { FILE: tools/mill/main.go function main (line 5) | func main() { FILE: tools/pq/backend/postgres.go type PostgresMessage (line 17) | type PostgresMessage struct type PostgresBackend (line 24) | type PostgresBackend struct method AllMessages (line 46) | func (r *PostgresBackend) AllMessages(ctx context.Context) ([]cli.Mess... method Requeue (line 73) | func (r *PostgresBackend) Requeue(ctx context.Context, msg cli.Message... method Ack (line 84) | func (r *PostgresBackend) Ack(ctx context.Context, msg cli.Message) er... method topic (line 93) | func (r *PostgresBackend) topic() string { function NewPostgresBackend (line 29) | func NewPostgresBackend(ctx context.Context, config cli.BackendConfig) (... FILE: tools/pq/cli/backend.go type BackendConfig (line 9) | type BackendConfig struct method Validate (line 14) | func (c BackendConfig) Validate() error { type BackendConstructor (line 26) | type BackendConstructor type Backend (line 28) | type Backend interface FILE: tools/pq/cli/message.go type Message (line 10) | type Message struct function NewMessage (line 23) | func NewMessage(id string, uuid string, payload string, metadata map[str... FILE: tools/pq/cli/model.go type MessagesUpdated (line 37) | type MessagesUpdated struct type DialogResult (line 41) | type DialogResult struct type Model (line 72) | type Model struct method FetchMessages (line 45) | func (m Model) FetchMessages() tea.Cmd { method WaitForMessages (line 62) | func (m Model) WaitForMessages() tea.Cmd { method Init (line 89) | func (m Model) Init() tea.Cmd { method Update (line 96) | func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 288) | func (m Model) View() string { function NewModel (line 364) | func NewModel(backend Backend) Model { type Dialog (line 398) | type Dialog struct FILE: tools/pq/main.go function main (line 20) | func main() { FILE: uuid.go function NewUUID (line 12) | func NewUUID() string { function NewShortUUID (line 17) | func NewShortUUID() string { function NewULID (line 22) | func NewULID() string { FILE: uuid_test.go function testUniqueness (line 10) | func testUniqueness(t *testing.T, genFunc func() string) { function TestUUID (line 47) | func TestUUID(t *testing.T) { function TestShortUUID (line 51) | func TestShortUUID(t *testing.T) { function TestULID (line 55) | func TestULID(t *testing.T) {