Supported Environments for the PubSub+ Go API

The PubSub+ Messaging API for Go is compatible and supported with any version of Go that is in active support and also has security update support. For information about supported versions of Go, see https://go.dev/doc/devel/release. The PubSub+ Go API is compatible with the following platforms:

  • Linux (x86/x86_64) variants that are in active support and also have security update support
    • compatible with glibc (desktop/server) and musl-c (Alpine Linux)
  • Linux (ARM) variants (linux-arm64)
    • compatible with glibc (desktop/server) only
  • Windows WSL 2.0
  • macOS 10.15 and later [x86_64 and ARM (M-Series processors)] 
    • If you use a non-standard OpenSSL installation, you may get an error message that contains ld: library not found for -lssl. This error means the linker cannot locate the OpenSSL library. To correct this, specify a path for OpenSSL with the following command: export CGO_LDFLAGS="-L/path/to/your/openssl@1.1/lib". This command exports the CGO_LDFLAGS variable to a specific OpenSSL distribution to support non-standard OpenSSL installations.

The Go API is not supported on Windows except when using Windows Subsystem for Linux 2.0 (WSL)

Installing the PubSub+ Go API

To retrieve the Solace PubSub+ Messaging API for go visit: https://pkg.go.dev/solace.dev/go/messaging. Alternatively, you can use the following command in your project directory:

go get solace.dev/go/messaging

This retrieves and installs the latest version of the PubSub+ Messaging API for Go.

Due to a known issue in Go on Alpine Linux platforms, Solace recommends you only use Go versions up to 1.22.4 with the PubSub+ Go API. Applications that use Go versions 1.22.5 and later may encounter unexpected issues on Alpine Linux environments. For information about this Go issue and its impact, see runtime: update and restore g0 stack bounds at cgocallback.

OpenSSL Compatibility

The PubSub+ Go API is compatible with OpenSSL 3.0 and OpenSSL 1.1. The PubSub+ Go API bundles OpenSSL libraries for developer convenience only, these libraries are unsuitable for production environments. OpenSSL binaries are bundled with the following:

  • for macOS, all versions of the PubSub+ Go API
  • for Linux, versions 1.6 and earlier of the PubSub+ Go API

OpenSSL is required for encrypted (TLS) connections to PubSub+ event brokers. For production environments, we recommend you install OpenSSL directly to ensure that you have the most recent version. To install OpenSSL:

  • Use your preferred package manager for Go.
  • Download, build, and install OpenSSL from www.openssl.org.

TLS and SSL Support

Transport Layer Security (TLS) provides secure connections between PubSub+ Go APIs and event brokers. The PubSub+ Go API supports the following TLS versions. The recommended version to use is the most recent version of TLS:

The PubSub+ Go API now supports TLS 1.3 connections when connecting to event brokers that request TLS 1.3, allowing you to prepare your client applications in advance. Full end-to-end testing capabilities will be enabled with the upcoming event broker release 10.25.0, planned for June 2025. For more information, see Event Broker Releases. After 10.25.0 is available, you can then perform end-to-end testing and deployment of TLS 1.3.

  • TLS 1.2
  • TLS 1.3—Requires PubSub+ Go API, version 1.10 or later.

In this documentation, the term TLS/SSL refers to Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols used for securing data transmission. We don't recommend that you use SSL unless it's required for backwards compatibility.