View hetzner-load-balancer.yaml
service: | |
enabled: true | |
type: LoadBalancer | |
# Additional annotations (e.g. for cloud provider specific config) | |
annotations: | |
load-balancer.hetzner.cloud/location: nbg1 | |
# ensure that the load balancer communicates via private network | |
load-balancer.hetzner.cloud/use-private-ip: "true" | |
# ensures that the load balancer is not removed | |
load-balancer.hetzner.cloud/name: "traefik" |
View algolia-places-hook.js
// ################### | |
// #### React hook ###### | |
// ################### | |
import { useEffect, useRef, useState } from 'react'; | |
/* eslint-disable global-require */ | |
const Places = typeof window !== 'undefined' && require('places.js'); | |
export default function useAlgoliaPlaces({ options, events }) { |
View command_publish.go
func (c *CommandBus) HandleCommand(cmd Command) { | |
events := c.CommandHandler.HandleCommand(cmd) | |
c.stan.Publish("eventstore.events", events) | |
} |
View tracker_tanle
id | last_processed_event_id | processor_name | |
+--------------------+----------------------------+-----------------+ | |
517800172974768129 | 01DXRWAVGFZ46AV38EA2CYXFQJ | reactor | |
517800173095550977 | 01DXRWAVGFZ46AV38EA2CYXFQJ | order-projector |
View tracker.go
sub, err := sc.Subscribe("eventstore.events", func(m *stan.Msg) { | |
// check if event was already processed | |
if p.tracker.IsDuplicateOperation(p.name, event.ID) { | |
log.WithFields(eventLogFields).WithFields(subLogFields).Trace("duplicate") | |
if err := m.Ack(); err != nil { | |
log.WithFields(eventLogFields).WithFields(subLogFields).WithError(err).Error("ack duplicate event") | |
} | |
return | |
} | |
View dump
id | version | data | timestamp | |
+----+---------+----------------------------------------------------------------+---------------------+ | |
1 | 1 | {"PositionID": "Auftragsfreigabe", "PositionOrderID": "A1212"} | 1578079632531167629 | |
1 | 2 | {"PositionID": "Abteilung A", "PositionOrderID": "A1213"} | 1578079669618870080 |
View proxy.go
sub, err := sc.Subscribe("eventstore.events", func(m *stan.Msg) { | |
// TODO check if event was already processed | |
stan.PublishAsync("eventstore.events.order-projection", m.Data) | |
stan.PublishAsync("eventstore.events.order-reactor", m.Data) | |
// TODO track event as processed | |
// ack message | |
if err := m.Ack(); err != nil { | |
log.WithFields(eventLogFields).WithFields(r.baseLogFields).WithError(err).Error("ack event") |
View sub.go
sub, err := sc.Subscribe("eventstore.events", func(m *stan.Msg) { | |
fmt.Printf("Received a message: %s\n", string(m.Data)) | |
// your code | |
if err := m.Ack(); err != nil { | |
// event is redelivered | |
return | |
} | |
}, | |
stan.maxInFlight(1), | |
stan.AckWait("30s"), |
View replay-events.go
// Subscribe starting with most recently published value | |
sub, err := sc.Subscribe("eventstore.events", func(m *stan.Msg) { | |
fmt.Printf("Received a message: %s\n", string(m.Data)) | |
}, stan.StartWithLastReceived()) | |
// Receive all stored values in order | |
sub, err := sc.Subscribe("eventstore.events", func(m *stan.Msg) { | |
fmt.Printf("Received a message: %s\n", string(m.Data)) | |
}, stan.DeliverAllAvailable()) |
View config.hcl
max_payload: 10485760 | |
streaming { | |
store: "SQL" | |
sql_options: { | |
no_caching: true | |
driver: "postgres" | |
source: "dbname=mydb host=roach1 port=26257 user=test sslmode=disable readTimeout=5s writeTimeout=5s" | |
} | |
store_limits { | |
max_subs: 100 |
NewerOlder