Direct: маршрутизация по точному совпадению routing key. Topic: по паттерну (например, "user.*.created"). Fanout: игнорирует ключ, рассылает во все привязанные очереди. Headers: по заголовкам. В Go при Publish указывают exchange и routing key; при Bind очереди к exchange задают ключ или паттерн. Выбор типа определяет гибкость маршрутизации.
ch.ExchangeDeclare("logs", "fanout", true, false, false, false, nil)
ch.QueueBind("q1", "", "logs", false, nil)