Xbus - Go client

A Go client for Xbus.


This is a regular Go library:

go get bitbucket.org/orus-io/go-xbus

See the Xbus project for more info.



  • Implements the new actor protocol (see xbus-api README). Consumers and workers must be adapted. See the demo actors for an example.

  • Actor subscription now auto-call ActorLeaving on Unsubscribe.

  • Client: If a 'service' is not found, the client is no longer started

  • Add a function to validate event type names

  • Add a nats-timeout option to xbus-client.

  • cmd: - Add a emit command that emit a single envelope and does not start the

    services. Useful for debugging purpose or as a basic integration tool.

3.0.0-beta.11 (2017-04-13)


This version is NOT protocol compatible with former versions of xbusd. xbusd and the clients must all be upgraded simultaneously.

  • Reimplement all the nats calls based on nrpc and the xbus-api files. The clients should have very little (if any) adaptations to do.
  • Add a GraphGet function
  • Cleanup

3.0.0-beta.10 (2017-10-19)

  • Add RavenLogger that can send logs to Sentry
  • Add a 'sentry.dsn' setting. If set, xbus.Client will send errors to sentry.

3.0.0-beta.9 (2017-09-19)

  • EnvelopeSender: add GetID
  • Fix: configuration file entry 'persistent-store' was ignored
  • Add a TLSTimeout setting (default 4s)
  • tools: cleanup cert-related functions
  • API
    • Clarify Item type: it is no longer a JsonRawMessage, but a []byte
    • Add 'control.process.export'
    • Add 'control.process.purge'
    • Better process filtering API
    • Add 'control.envelope.purge'
    • Add 'control.logs.purge'
    • Add 'Expire' attribute to AccountUpdateReq for specifying client certificate validity range.

3.0.0-beta.8 (2017-06-03)

  • API
    • New 'postmortem' APIs allow post mortem inspection of failed process
    • Cleaner 'graph' handling API
    • Add a 'Gateway' account type
    • Add 'AccountRenewAPIKey'
    • Add 'GetActors'
    • Add 'WhoAmI'
  • Client:
    • Try harder to send processingend:
      • Log the processingend occurences in a persistent store
      • Retry calling processingend until server replies
    • Add ActorFind, ActorDelete, AccountFind, AccountDelete
  • Add a 'UnregisterActorService' for removing actor services from the registry
  • Add a 'counter' demo emitter
  • Add a constructor for EnvelopeSender that takes envelope and event IDs

3.0.0-beta.7 (2017-03-09)

  • Add support for fragmented envelopes:
    • Drop EnvelopeReader in favor of EnvelopeReceiver for receiving envelopes as streams of Items
    • Add EnvelopeSender for writing envelopes as streams of Items
    • Add Actor.OpenOutput
  • EnvelopeValidator: Add EventTypesKnown field
  • EnvelopeValidator: Better error handling in Add()
  • ProcessingEnd, ProcessingSuccess & ProcessingError now takes a context & ID instead of an envelope

3.0.0-beta.6 (2017-02-03)

  • Client.Startup & Shutdown now handle the connection to the bus:
    • 'Connect' should not be called before calling Startup()
    • On disconnection, the connection will be attempted until success
  • Fix demo actors

3.0.0-beta.5 (2017-01-26)

  • Add a 'demo' package, which contains some demonstration actor services:
    • A 'demo.helloword' emitter
    • A 'demo.relay' worker
    • A 'demo.print-to-console' consumer
  • Adjust some logs levels
  • Add Actor.GetIntSettingD for reading integer settings with a default value.
  • Add Actor.SendItemsContext for sending items within a context.
  • Allow custom hostDefs in CreateServerRootCA

3.0.0-beta.4 (2017-01-20)

  • Rename client.XBusClient to xbus.Client
  • xbus.Client can start/stop actors given the proper configuration
  • Provides a serve command that start a Client and its actors.
  • Merge Consumer, Emiter & Worker in Actor
  • Actor.Subscribe now have handler arg and returns the subscription that is no longer help by the Actor itself
  • Actor options 'type' and 'settings' are now in a sub-option 'service'
  • Fix configuration writeback so it preserves non-xbus settings
  • Fix validation of events with 0 items


  • Extracted client, lib, tools and xbus-client/cmd from xbus 3.0.0-beta.3