Skip to main content

SubscribeOptions

The SubscribeOptions class is used to define options for subscribing to topics in the HiveMQ MQTT client. It allows you to specify topic filters, user properties, subscription identifiers, and handlers for processing messages.

Constructor

SubscribeOptions()

Initializes a new instance of the SubscribeOptions class.

SubscribeOptions();

Example:

var options = new SubscribeOptions();

Properties

SubscriptionIdentifier

Gets or sets the subscription identifier.

int? SubscriptionIdentifier { get; set; }

Description:
A unique identifier for the subscription.

Example:

options.SubscriptionIdentifier = 12345;

UserProperties

Gets or sets the user properties for the subscription.

Dictionary<string, string> UserProperties { get; set; }

Description:
Custom key-value pairs for metadata associated with the subscription.

Example:

options.UserProperties["key"] = "value";

TopicFilters

Gets or sets the topic filters for the subscription.

List<TopicFilter> TopicFilters { get; set; }

Description:
Specifies the list of topic filters to subscribe to.

Example:

options.TopicFilters.Add(new TopicFilter { Topic = "home/sensors/temperature", QoS = QualityOfService.AtLeastOnce });

Handlers

Gets or sets the handlers for message processing.

Dictionary<string, EventHandler<OnMessageReceivedEventArgs>> Handlers { get; set; }

Description:
Defines per-topic message processing callbacks. The key is the topic filter, and the value is the handler function.

Example:

options.Handlers["home/sensors/temperature"] = (sender, args) =>
{
Console.WriteLine($"Received message: {args.Message.PayloadAsString}");
};

Methods

Validate()

Validates the options for correctness.

void Validate();

Description:
Ensures that the SubscribeOptions instance contains at least one valid topic filter.

Exceptions:

  • HiveMQttClientException: Thrown if no topic filters are specified.

Example:

try
{
options.Validate();
}
catch (HiveMQttClientException ex)
{
Console.WriteLine($"Validation failed: {ex.Message}");
}