Need help with NsqSharp?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

152 Stars 41 Forks MIT License 386 Commits 47 Opened issues


A .NET library for NSQ, a realtime distributed messaging platform

Services available


Need anything else?

Contributors list

# 43,800
372 commits


Build status  License  NuGet version  Nuget

A .NET client library for NSQ, a realtime distributed messaging platform.

Check out this slide deck for a quick intro to NSQ.

Watch Spray Some NSQ On It by co-author Matt Reiferson for an under 30-minute intro to NSQ as a messaging platform.

Project Status

  • Used in Production.
  • Maintained. Issues and Pull Requests will be responded to.

Quick Install

NsqSharp is a client library that talks to the

(message queue) and
(topic discovery service). See the slides above for more information about their roles.


and run them from the command line:


nsqd -lookupd-tcp-address=

Or, to install as Windows Services:

mkdir c:\nsq\data

copy /y nsqd.exe c:\nsq copy /y nsqlookupd.exe c:\nsq

sc create nsqlookupd binpath= "c:\nsq\nsqlookupd.exe" start= auto DisplayName= "nsqlookupd" sc description nsqlookupd "nsqlookupd 0.3.2" sc start nsqlookupd

sc create nsqd binpath= "c:\nsq\nsqd.exe -mem-queue-size=0 -lookupd-tcp-address= -data-path=c:\nsq\data" start= auto DisplayName= "nsqd" sc description nsqd "nsqd 0.3.2" sc start nsqd

You can also build these files from source: (official), or (fork) to add the ability to run as a Windows Service.

C# Examples

PM> Install-Package NsqSharp

More examples are in the Examples folder.

Simple Producer

using System;
using NsqSharp;

class Program { static void Main()
{ var producer = new Producer(""); producer.Publish("test-topic-name", "Hello!");

    Console.WriteLine("Enter your message (blank line to quit):");
    string line = Console.ReadLine();
    while (!string.IsNullOrEmpty(line))
        producer.Publish("test-topic-name", line);
        line = Console.ReadLine();



Simple Consumer

using System;
using System.Text;
using NsqSharp;

class Program { static void Main()
{ // Create a new Consumer for each topic/channel var consumer = new Consumer("test-topic-name", "channel-name"); consumer.AddHandler(new MessageHandler()); consumer.ConnectToNsqLookupd("");

    Console.WriteLine("Listening for messages. If this is the first execution, it " +
                      "could take up to 60s for topic producers to be discovered.");
    Console.WriteLine("Press enter to stop...");



public class MessageHandler : IHandler { ///

Handles a message. public void HandleMessage(IMessage message) { string msg = Encoding.UTF8.GetString(message.Body); Console.WriteLine(msg); }

/// <summary>
/// Called when a message has exceeded the specified <see cref="Config.MaxAttempts"></see>.
/// </summary>
/// <param name="message">The failed message.
public void LogFailedMessage(IMessage message)
    // Log failed messages



The classes in the

namespace provide conveniences for large scale applications: - Interoperating with dependency injection containers. - Separation of concerns with regards to message routing, serialization, and error handling. - Abstracting the details of
from message sending and handling.

The PingPong and PointOfSale examples highlight using:

Applications initiated with

can be installed as a Windows Service using

sc create
. When in console mode the application will gracefully shutdown with
. When running as a Windows Service stopping the service or rebooting/shutting down the machine will do a graceful shutdown.

NsqSharp has no external dependencies. StructureMap, Autofac, and Newtonsoft.Json are supported through convenience classes which use reflection for the initial wire-up. Other containers and serializers can be used by implementing

wrappers in your code.

NsqSharp Project Goals

  • Structurally similar to the official go-nsq client.
  • Up to date with the latest stable release of go-nsq.
  • Provide similar behavior and semantics as the official package.
  • Unobtrusive. No external dependencies. Publishing message contracts does not require a reference to NsqSharp.

Pull Requests

Pull requests and issues are very welcome and appreciated.

When submitting a pull request please keep in mind we're trying to stay as close to go-nsq as possible. This sometimes means writing C# which looks more like Go and follows their file layout. Code in the

namespace should follow C# conventions and more or less look like other code in this namespace.


This project is open source and released under the MIT license.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.