Skip to content

Commit e1c8c10

Browse files
committed
handle send event in a local setup (dev. localhost)
1 parent b3c2181 commit e1c8c10

2 files changed

Lines changed: 29 additions & 9 deletions

File tree

api/pkg/di/container.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,10 @@ func (container *Container) EventsQueueConfiguration() (config services.PushQueu
305305
func (container *Container) EventsQueue() (queue services.PushQueue) {
306306
container.logger.Debug("creating events services.PushQueue")
307307

308+
if isLocal() {
309+
return nil
310+
}
311+
308312
return services.NewGooglePushQueue(
309313
container.Logger(),
310314
container.Tracer(),

api/pkg/services/event_dispatcher_service.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/NdoleStudio/httpsms/pkg/telemetry"
1414
cloudevents "github.com/cloudevents/sdk-go/v2"
1515
"github.com/palantir/stacktrace"
16+
"github.com/google/uuid"
1617
)
1718

1819
// EventDispatcher dispatches a new event
@@ -72,15 +73,30 @@ func (dispatcher *EventDispatcher) DispatchWithTimeout(ctx context.Context, even
7273
return queueID, dispatcher.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
7374
}
7475

75-
task, err := dispatcher.createCloudTask(event)
76-
if err != nil {
77-
msg := fmt.Sprintf("cannot create cloud task for event [%s] with id [%s]", event.Type(), event.ID())
78-
return queueID, dispatcher.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
79-
}
80-
81-
if queueID, err = dispatcher.queue.Enqueue(ctx, task, timeout); err != nil {
82-
msg := fmt.Sprintf("cannot enqueue event with ID [%s] and type [%s]", event.ID(), event.Type())
83-
return queueID, dispatcher.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
76+
if dispatcher.queue == nil {
77+
ctxLogger := dispatcher.tracer.CtxLogger(dispatcher.logger, span)
78+
queueID := uuid.New()
79+
go func() {
80+
time.Sleep(timeout)
81+
dispatcher.DispatchSync(ctx, event)
82+
}()
83+
ctxLogger.Info(fmt.Sprintf(
84+
"item added to [%s] queue with id [%s] and schedule [%s]",
85+
dispatcher.queueConfig.Name,
86+
queueID,
87+
time.Now().UTC().Add(timeout),
88+
))
89+
} else {
90+
task, err := dispatcher.createCloudTask(event)
91+
if err != nil {
92+
msg := fmt.Sprintf("cannot create cloud task for event [%s] with id [%s]", event.Type(), event.ID())
93+
return queueID, dispatcher.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
94+
}
95+
96+
if queueID, err = dispatcher.queue.Enqueue(ctx, task, timeout); err != nil {
97+
msg := fmt.Sprintf("cannot enqueue event with ID [%s] and type [%s]", event.ID(), event.Type())
98+
return queueID, dispatcher.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
99+
}
84100
}
85101

86102
return queueID, nil

0 commit comments

Comments
 (0)