for reference, here is a very basic Qt-style signal / slot style subscribe / publish model in Go, just using a map of receivers and their receiver callback functions: https://github.com/goki/ki/blob/master/ki/signal.go
- Randy > On Mar 10, 2019, at 11:07 PM, Kasun Vithanage <alanka...@gmail.com> wrote: > > Yes, when a publisher publish for a topic it should be routed to all > subscribers to that topic :) > > On Monday, March 11, 2019 at 10:28:17 AM UTC+5:30, Burak Serdar wrote: > On Sun, Mar 10, 2019 at 10:41 PM Kasun Vithanage <alan...@gmail.com> wrote: > > > > Hi all, > > > > I've experience implementing event buses in Java. > > In Java, I used a singleton where I can register callbacks to methods and > > fire event from a publisher(maybe from another thread) and propagate it to > > subscribers. > > > > In Go what would be the best pattern to implement a pub/sub event bus? > > Are channels are a better choice than using callbacks in this scenario(one > > to many event propagation)? > > Are you talking about the event listeners in Java where all listeners > are called synchronously? You can't use channels for something like > this, and a list of callbacks would be the simplest solution. But you > mentioned you might be calling listeners in another thread. Do you > need a synchronous call where publish() will make sure all subscribers > get the event? If so, maybe you can use a mix of channels and > callbacks. You can keep a list of callbacks for listeners in the same > goroutine, and a list of channels for listeners in other goroutines, > and call/write to elements of both list. > > > Or callbacks are better for this? > > > > (I need to propagate events only to subscribers of the topic) > > > > Regards, > > Kasun > > > > -- > > You received this message because you are subscribed to the Google Groups > > "golang-nuts" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to golang-nuts...@googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.