11package main
22
33import (
4- "math/rand"
5- "time"
6-
7- "github.com/m110/webhooks/pkg"
4+ "github.com/ThreeDotsLabs/event-driven-example/pkg"
85
96"github.com/ThreeDotsLabs/watermill"
107"github.com/ThreeDotsLabs/watermill/components/metrics"
118"github.com/ThreeDotsLabs/watermill/message"
12- "github.com/ThreeDotsLabs/watermill/message/infrastructure/amqp"
13- "github.com/ThreeDotsLabs/watermill/message/infrastructure/http"
14- "github.com/ThreeDotsLabs/watermill/message/infrastructure/kafka"
159"github.com/ThreeDotsLabs/watermill/message/router/middleware"
1610)
1711
@@ -31,7 +25,7 @@ func main() {
3125metricsBuilder := metrics .NewPrometheusMetricsBuilder (prometheusRegistry , "" , "" )
3226metricsBuilder .AddPrometheusRouterMetrics (router )
3327
34- err = setupRouter (router , config , logger )
28+ err = pkg . SetupRouter (router , config , logger )
3529if err != nil {
3630panic (err )
3731}
@@ -41,132 +35,3 @@ func main() {
4135panic (err )
4236}
4337}
44-
45- func setupRouter (router * message.Router , c pkg.Config , logger watermill.LoggerAdapter ) error {
46- amqpPublisher , err := amqp .NewPublisher (amqp .NewDurableQueueConfig (c .AMQPURI ), logger )
47- if err != nil {
48- return err
49- }
50-
51- amqpConfig := amqp .NewDurableQueueConfig (c .AMQPURI )
52- amqpSubscriber , err := amqp .NewSubscriber (amqpConfig , logger )
53- if err != nil {
54- return err
55- }
56-
57- httpConfig := http.SubscriberConfig {
58- UnmarshalMessageFunc : http .DefaultUnmarshalMessageFunc ,
59- }
60- httpSubscriber , err := http .NewSubscriber (c .BindAddr , httpConfig , logger )
61- if err != nil {
62- return err
63- }
64-
65- kafkaPublisher , err := kafka .NewPublisher (
66- c .KafkaBrokers ,
67- kafka.DefaultMarshaler {},
68- nil ,
69- logger )
70- if err != nil {
71- return err
72- }
73-
74- kafkaConfig := kafka.SubscriberConfig {
75- Brokers : c .KafkaBrokers ,
76- }
77- kafkaSubscriber , err := kafka .NewSubscriber (
78- kafkaConfig ,
79- nil ,
80- kafka.DefaultMarshaler {},
81- logger )
82- if err != nil {
83- return err
84- }
85-
86- grafanaPublisher , err := http .NewPublisher (
87- http.PublisherConfig {
88- MarshalMessageFunc : pkg .GrafanaMarshaller (c .GrafanaCredentials ),
89- }, logger )
90- if err != nil {
91- return err
92- }
93-
94- router .AddHandler (
95- "http-to-kafka" ,
96- "/" ,
97- httpSubscriber ,
98- c .KafkaTopic ,
99- kafkaPublisher ,
100- pkg .GithubWebhookHandler ,
101- )
102-
103- router .AddHandler (
104- "rabbitmq-to-kafka" ,
105- c .AMQPQueue ,
106- amqpSubscriber ,
107- c .KafkaTopic ,
108- kafkaPublisher ,
109- pkg .AMQPHandler ,
110- )
111-
112- router .AddHandler (
113- "kafka-to-grafana" ,
114- c .KafkaTopic ,
115- kafkaSubscriber ,
116- c .GrafanaURL + "/api/annotations" ,
117- grafanaPublisher ,
118- pkg .GrafanaHandler ,
119- )
120-
121- // Simulate commit deploys with delays
122- stagingDelay := time .Second * time .Duration (rand .Intn (60 )+ 30 )
123- productionDelay := stagingDelay + time .Second * time .Duration (rand .Intn (120 )+ 60 )
124-
125- router .AddHandler (
126- "deploy-staging-simulator" ,
127- c .KafkaTopic ,
128- kafkaSubscriber ,
129- c .AMQPQueue ,
130- amqpPublisher ,
131- pkg.DeploySimulator {"staging" , stagingDelay }.Handle ,
132- )
133-
134- router .AddHandler (
135- "deploy-production-simulator" ,
136- c .KafkaTopic ,
137- kafkaSubscriber ,
138- c .AMQPQueue ,
139- amqpPublisher ,
140- pkg.DeploySimulator {"production" , productionDelay }.Handle ,
141- )
142-
143- if c .SlackWebhookURL != "" {
144- slackPublisher , err := http .NewPublisher (
145- http.PublisherConfig {
146- MarshalMessageFunc : pkg .SlackMarshaller ,
147- }, logger )
148- if err != nil {
149- return err
150- }
151-
152- router .AddHandler (
153- "kafka-to-slack" ,
154- c .KafkaTopic ,
155- kafkaSubscriber ,
156- c .SlackWebhookURL ,
157- slackPublisher ,
158- pkg .SlackHandler ,
159- )
160- }
161-
162- go func () {
163- // Start HTTP server only after the router is running
164- <- router .Running ()
165- err = httpSubscriber .StartHTTPServer ()
166- if err != nil {
167- panic (err )
168- }
169- }()
170-
171- return nil
172- }
0 commit comments