hsnsq-0.1.2.0: Haskell NSQ client.

Safe HaskellNone
LanguageHaskell2010

Network.NSQ.Types

Description

 

Synopsis

Documentation

type MsgId = ByteString Source

Message Id, it is a 16-byte hexdecimal string encoded as ASCII

type Topic = Text Source

NSQ Topic, the only allowed character in a topic is \.a-zA-Z0-9_-

type Channel = Text Source

NSQ Channel, the only allowed character in a channel is \.a-zA-Z0-9_- A channel can be marked as ephemeral by toggling the Bool value to true in Sub

type LogName = String Source

Logger Name for a connection (hslogger format)

data Message Source

The message and replies back from the server.

Constructors

OK

Everything is allright.

Heartbeat

Heartbeat, reply with the NOP Command.

CloseWait

Server has closed the connection.

Error ErrorType

The server sent back an error.

Message Int64 Word16 MsgId ByteString

A message to be processed. The values are: Nanosecond Timestamp, number of attempts, Message Id, and the content of the message to be processed.

CatchAllMessage FrameType ByteString

Catch-all message for future expansion. This currently includes the reply from Identify if feature negotiation is set.

Instances

data Command Source

NSQ Command

Constructors

Protocol

The protocol version

NOP

No-op, usually used in reply to a Heartbeat request from the server.

Identify IdentifyMetadata

Client Identification + possible features negotiation.

Sub Topic Channel Bool

Subscribe to a specified 'Topic'/'Channel', use True if its an ephemeral channel.

Pub Topic ByteString

Publish a message to the specified Topic.

MPub Topic [ByteString]

Publish multiple messages to a specified Topic.

Rdy Word64

Update RDY state (ready to recieve messages). Number of message you can process at once.

Fin MsgId

Finish a message.

Req MsgId Word64

Re-queue a message (failure to process), Timeout is in milliseconds.

Touch MsgId

Reset the timeout for an in-flight message.

Cls

Cleanly close the connection to the NSQ daemon.

Command ByteString

Catch-all command for future expansion/custom commands.

Instances

data FrameType Source

Frame Type of the incoming data from the NSQ daemon.

Constructors

FTResponse

Response to a Command from the server.

FTError

An error in response to a Command.

FTMessage

Messages.

FTUnknown Int32

For future extension for handling new Frame Types.

Instances

data ErrorType Source

Types of error that the server can return in response to an Command

Constructors

Invalid

Something went wrong with the command (IDENTIFY, SUB, PUB, MPUB, RDY, FIN, REQ, TOUCH, CLS)

BadBody

Bad Body (IDENTIFY, MPUB)

BadTopic

Bad Topic (most likely used disallowed characters) (SUB, PUB, MPUB)

BadChannel

Bad channel (Like BadTopic probably used an disallowed character) (SUB)

BadMessage

Bad Message (PUB, MPUB)

PubFailed

Publishing a message failed (PUB)

MPubFailed

Same as PubFailed (MPUB)

FinFailed

Finish failed (Probably already finished or non-existant message-id) (FIN)

ReqFailed

Requeue failed (REQ)

TouchFailed

Touch failed (TOUCH)

Unknown ByteString

New unknown type of error (ANY)

Instances

data OptionalSetting Source

Optional settings, if Disabled then this setting will be put in the json as disabled specifically vs "not being listed".

Constructors

Disabled 
Custom Word64 

data TLS Source

TLS version supported

Constructors

NoTLS 
TLSV1 

Instances

data Compression Source

For Deflate its the compression level from 0-9

Instances

data Identification Source

The client identification

Constructors

Identification 

Fields

clientId :: Text

An identifier of this consumer, something specific to this consumer

hostname :: Text

Hostname of the machine the client is running on

shortId :: Maybe Text

Deprecated in favor of client_id

longId :: Maybe Text

Deprecated in favor of hostname

userAgent :: Maybe Text

Default (client_library_name/version)

Instances

data IdentifyMetadata Source

Metadata for feature negotiation, if any of the values are set it will be sent to the server otherwise they will be omitted. If the setting is set to Nothing it will not be sent to the server, and if its set to Just Disabled it will be sent to the server as disabled explicitly.

Constructors

IdentifyMetadata 

Fields

ident :: Identification

Client identification

tls :: Maybe TLS

TLS

compression :: Maybe Compression

Compression

heartbeatInterval :: Maybe OptionalSetting

The time between each heartbeat (disabled = -1)

outputBufferSize :: Maybe OptionalSetting

The size of the buffer (disabled = -1)

outputBufferTimeout :: Maybe OptionalSetting

The timeout for the buffer (disabled = -1)

sampleRate :: Maybe OptionalSetting

Sampling of the message will be sent to the client (disabled = 0)

custom :: Maybe (Map Text Text)

Map of possible key -> value for future protocol expansion

customNegotiation :: Bool

Set if there are any custom values to send

data NSQConnection Source

Per Connection configuration such as: per nsqd state (rdy, load balance), per topic state (channel)