diff --git a/controller/nucleus/deviceService.go b/controller/nucleus/deviceService.go
index c96496f3940f5eaff25180d552166ee112b54721..e6aad402f96afa4efae770f8f13eaaed42e9b29d 100644
--- a/controller/nucleus/deviceService.go
+++ b/controller/nucleus/deviceService.go
@@ -82,7 +82,12 @@ func (s *DeviceService) Add(deviceToAdd device.Device) error {
 
 	pubEvent := event.NewAddEvent(deviceToAdd.ID())
 	if err := s.eventService.PublishEvent(DeviceEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(DeviceEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(DeviceEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -116,7 +121,12 @@ func (s *DeviceService) UpdateModel(deviceToUpdate device.Device, modelAsString
 
 	pubEvent := event.NewUpdateEvent(deviceToUpdate.ID())
 	if err := s.eventService.PublishEvent(DeviceEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(DeviceEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(DeviceEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -133,7 +143,12 @@ func (s *DeviceService) Update(deviceToUpdate device.Device) error {
 
 	pubEvent := event.NewUpdateEvent(deviceToUpdate.ID())
 	if err := s.eventService.PublishEvent(DeviceEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(DeviceEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(DeviceEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -156,7 +171,12 @@ func (s *DeviceService) Delete(deviceToDelete device.Device) error {
 
 	pubEvent := event.NewDeleteEvent(deviceToDelete.ID())
 	if err := s.eventService.PublishEvent(DeviceEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(DeviceEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(DeviceEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
diff --git a/controller/nucleus/sbiService.go b/controller/nucleus/sbiService.go
index 50d4f4e77ac55d6bc8525fac6f022a807f680b92..8a2442c0b1f9026583e1c1947089d260921f12e3 100644
--- a/controller/nucleus/sbiService.go
+++ b/controller/nucleus/sbiService.go
@@ -75,7 +75,12 @@ func (s *SbiService) Add(sbiToAdd southbound.SouthboundInterface) error {
 
 	pubEvent := event.NewAddEvent(sbiToAdd.ID())
 	if err := s.eventService.PublishEvent(SbiEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(SbiEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(SbiEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -99,7 +104,12 @@ func (s *SbiService) Delete(sbiToDelete southbound.SouthboundInterface) error {
 
 	pubEvent := event.NewDeleteEvent(sbiToDelete.ID())
 	if err := s.eventService.PublishEvent(SbiEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(SbiEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(SbiEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
diff --git a/controller/rbac/rbacService.go b/controller/rbac/rbacService.go
index 37499c35b60cea21bbfb6c5b122ed95311c1f900..19c5d25577cba5f406e2c3565b5751735bcedae8 100644
--- a/controller/rbac/rbacService.go
+++ b/controller/rbac/rbacService.go
@@ -42,7 +42,12 @@ func (s *UserService) Add(userToAdd rbac.User) error {
 
 	pubEvent := event.NewAddEvent(userToAdd.ID())
 	if err := s.eventService.PublishEvent(UserEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(UserEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(UserEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -59,7 +64,12 @@ func (s *UserService) Delete(userToDelete rbac.User) error {
 
 	pubEvent := event.NewDeleteEvent(userToDelete.ID())
 	if err := s.eventService.PublishEvent(UserEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(UserEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(UserEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -76,7 +86,12 @@ func (s *UserService) Update(userToUpdate rbac.User) error {
 
 	pubEvent := event.NewUpdateEvent(userToUpdate.ID())
 	if err := s.eventService.PublishEvent(UserEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(UserEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(UserEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -137,7 +152,12 @@ func (s *RoleService) Add(roleToAdd rbac.Role) error {
 
 	pubEvent := event.NewAddEvent(roleToAdd.ID())
 	if err := s.eventService.PublishEvent(RoleEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(RoleEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(RoleEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -154,7 +174,12 @@ func (s *RoleService) Delete(roleToDelete rbac.Role) error {
 
 	pubEvent := event.NewDeleteEvent(roleToDelete.ID())
 	if err := s.eventService.PublishEvent(RoleEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(RoleEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(RoleEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -170,7 +195,12 @@ func (s *RoleService) Update(roleToUpdate rbac.Role) error {
 
 	pubEvent := event.NewUpdateEvent(roleToUpdate.ID())
 	if err := s.eventService.PublishEvent(RoleEventTopic, pubEvent); err != nil {
-		if retryErr := s.eventService.RetryPublish(RoleEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = s.eventService.RetryPublish(RoleEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
diff --git a/controller/topology/nodes/nodeService.go b/controller/topology/nodes/nodeService.go
index 9de0bc3b3d843dc4e4f2c2457fdff261b2f6506d..c77e804213bb80b60f2e23a26ad09a42c7c24e76 100644
--- a/controller/topology/nodes/nodeService.go
+++ b/controller/topology/nodes/nodeService.go
@@ -62,7 +62,12 @@ func (n *NodeService) createNode(node Node) (Node, error) {
 
 	pubEvent := event.NewAddEvent(node.ID)
 	if err := n.eventService.PublishEvent(NodeEventTopic, pubEvent); err != nil {
-		if retryErr := n.eventService.RetryPublish(NodeEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = n.eventService.RetryPublish(NodeEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -79,7 +84,12 @@ func (n *NodeService) Update(node Node) error {
 
 	pubEvent := event.NewUpdateEvent(node.ID)
 	if err := n.eventService.PublishEvent(NodeEventTopic, pubEvent); err != nil {
-		if retryErr := n.eventService.RetryPublish(NodeEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = n.eventService.RetryPublish(NodeEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -96,7 +106,12 @@ func (n *NodeService) Delete(node Node) error {
 
 	pubEvent := event.NewDeleteEvent(node.ID)
 	if err := n.eventService.PublishEvent(NodeEventTopic, pubEvent); err != nil {
-		if retryErr := n.eventService.RetryPublish(NodeEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = n.eventService.RetryPublish(NodeEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
diff --git a/controller/topology/ports/portService.go b/controller/topology/ports/portService.go
index 1f8f99847a3ac0262d35c72a4f4cc9ccb51edc72..971a98eb8f01e89acc0c2e58f3b4e9b278677b81 100644
--- a/controller/topology/ports/portService.go
+++ b/controller/topology/ports/portService.go
@@ -60,7 +60,12 @@ func (p *PortService) createPort(port Port) (Port, error) {
 
 	pubEvent := event.NewAddEvent(port.ID)
 	if err := p.eventService.PublishEvent(PortEventTopic, pubEvent); err != nil {
-		if retryErr := p.eventService.RetryPublish(PortEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = p.eventService.RetryPublish(PortEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -77,7 +82,12 @@ func (p *PortService) Update(port Port) error {
 
 	pubEvent := event.NewUpdateEvent(port.ID)
 	if err := p.eventService.PublishEvent(PortEventTopic, pubEvent); err != nil {
-		if retryErr := p.eventService.RetryPublish(PortEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = p.eventService.RetryPublish(PortEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -94,7 +104,12 @@ func (p *PortService) Delete(port Port) error {
 
 	pubEvent := event.NewDeleteEvent(port.ID)
 	if err := p.eventService.PublishEvent(PortEventTopic, pubEvent); err != nil {
-		if retryErr := p.eventService.RetryPublish(PortEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = p.eventService.RetryPublish(PortEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
diff --git a/controller/topology/routing-tables/routingTableService.go b/controller/topology/routing-tables/routingTableService.go
index 43c13f1d718f254ab331cdeff9a7560d0e1620e5..eefebff39105307d5f33a7c498ec5fa7119aa1f5 100644
--- a/controller/topology/routing-tables/routingTableService.go
+++ b/controller/topology/routing-tables/routingTableService.go
@@ -70,7 +70,12 @@ func (r *RoutingTableService) createRoutingTable(routingTable RoutingTable) (Rou
 
 	pubEvent := event.NewAddEvent(routingTable.ID)
 	if err := r.eventService.PublishEvent(RoutingTableEventTopic, pubEvent); err != nil {
-		if retryErr := r.eventService.RetryPublish(RoutingTableEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = r.eventService.RetryPublish(RoutingTableEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -87,7 +92,12 @@ func (r *RoutingTableService) Update(routingTable RoutingTable) error {
 
 	pubEvent := event.NewUpdateEvent(routingTable.ID)
 	if err := r.eventService.PublishEvent(RoutingTableEventTopic, pubEvent); err != nil {
-		if retryErr := r.eventService.RetryPublish(RoutingTableEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = r.eventService.RetryPublish(RoutingTableEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -104,7 +114,12 @@ func (r *RoutingTableService) Delete(routingTable RoutingTable) error {
 
 	pubEvent := event.NewDeleteEvent(routingTable.ID)
 	if err := r.eventService.PublishEvent(RoutingTableEventTopic, pubEvent); err != nil {
-		if retryErr := r.eventService.RetryPublish(RoutingTableEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = r.eventService.RetryPublish(RoutingTableEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
diff --git a/controller/topology/topologyService.go b/controller/topology/topologyService.go
index 41546f085e33667b43996df946e0f5cfb31fd08b..6bda2fd5c19a07322d91d4357dc3f3b5da7f1fa0 100644
--- a/controller/topology/topologyService.go
+++ b/controller/topology/topologyService.go
@@ -76,7 +76,12 @@ func (t *service) AddLink(link links.Link) error {
 
 	pubEvent := event.NewAddEvent(link.ID)
 	if err := t.eventService.PublishEvent(LinkEventTopic, pubEvent); err != nil {
-		if retryErr := t.eventService.RetryPublish(LinkEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = t.eventService.RetryPublish(LinkEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -93,7 +98,12 @@ func (t *service) UpdateLink(link links.Link) error {
 
 	pubEvent := event.NewUpdateEvent(link.ID)
 	if err := t.eventService.PublishEvent(LinkEventTopic, pubEvent); err != nil {
-		if retryErr := t.eventService.RetryPublish(LinkEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = t.eventService.RetryPublish(LinkEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}
@@ -112,7 +122,12 @@ func (t *service) DeleteLink(link links.Link) error {
 
 	pubEvent := event.NewDeleteEvent(link.ID)
 	if err := t.eventService.PublishEvent(LinkEventTopic, pubEvent); err != nil {
-		if retryErr := t.eventService.RetryPublish(LinkEventTopic, pubEvent); retryErr != nil {
+		var retryErr error
+		go func() {
+			retryErr = t.eventService.RetryPublish(LinkEventTopic, pubEvent)
+		}()
+
+		if retryErr != nil {
 			log.Error(retryErr)
 		}
 	}