nsq-cluster
Easily start up a local NSQ cluster. This is great for testing.
# Start a cluster of 3 nsqd's and 2 nsqlookupd's.
# This will block execution until all components are fully up and running.
cluster = NsqCluster.new(nsqd_count: 3, nsqlookupd_count: 2)
# Stop the 3rd nsqd instance and wait for it to come down.
cluster.nsqd.last.stop
# Start it back up again and wait for it to fully start.
cluster.nsqd.last.start
# Tear down the whole cluster.
cluster.destroy
Flags for nsqd and nsqlookupd
Optionally, you can pass in flags for nsqd and nsqlookupd like this:
NsqCluster.new(
nsqd_count: 1,
nsqlookupd_count: 1,
nsqd_options: { verbose: true },
nsqlookupd_options: { verbose: true }
)
Send commands to nsqd
Available methods that map to nsqd
's HTTP endpoints.
# nsqd
nsqd = cluster.nsqd.first
# Publish a message to a topic
nsqd.pub('stats', 'a message')
# Publish multiple messages to a topic
nsqd.mpub('stats', 'a message', 'a second message', 'last message')
# Create a topic
nsqd.create(topic: 'stats')
# Create a channel for a known topic
nsqd.create(topic: 'stats', channel: 'default')
# Follow the same argument pattern for #delete, #empty, #pause, and #unpause
# Get stats in JSON format
nsqd.stats
# Ping nsqd
nsqd.ping
# Get general information
nsqd.info
Send commands to nsqlookup
Available methods that map to nsqlookupd
's HTTP endpoints.
#nsqlookupd
nsqlookupd = cluster.nsqlookupd.first
# Look up list of producers by topic
nsqlookupd.lookup('stats')
# Get a list of known topics
nsqlookupd.topics
# Get a list of known channels for a topic
nsqlookupd.channels('stats')
# Get a list of known nodes
nsqlookupd.nodes
# Delete a topic
nsqlookupd.delete(topic: 'stats')
# Delete a channel for a known topic
nsqlookupd.delete(topic: 'stats', channel: 'default')
# Ping nsqlookupd
nsqlookupd.ping
# Get general info
nsqlookupd.info