SoFunction
Updated on 2025-04-07

.Net uses RabbitMQ to reset SMS passwords

Use RabbitMQ in C# to send the reset password to the user's mobile phone number through text messages. You can follow the steps below

1. Install the RabbitMQ client library

First, make sure you have the RabbitMQ client library installed. You can install it through the NuGet package manager:

dotnet add package 

2. Create RabbitMQ connections and channels

Create a RabbitMQ connection and channel for sending messages.

using ;
using System;
using ;
public class RabbitMQHelper
{
    private readonly string _hostName;
    private readonly string _userName;
    private readonly string _password;
    private readonly string _queueName;
public RabbitMQHelper(string hostName, string userName, string password, string queueName)
{
    _hostName = hostName;
    _userName = userName;
    _password = password;
    _queueName = queueName;
}
public void SendMessage(string message)
{
    var factory = new ConnectionFactory()
    {
        HostName = _hostName,
        UserName = _userName,
        Password = _password
    };
    using (var connection = ())
    using (var channel = ())
    {
        (queue: _queueName,
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
        var body = Encoding.(message);
        (exchange: "",
                             routingKey: _queueName,
                             basicProperties: null,
                             body: body);
        ($" [x] Sent {message}");
    }
}
}

3. Create a SMS Send Service

Create a SMS sending service that processes messages received from RabbitMQ and sends SMS messages.

public class SmsService
{
    public void SendSms(string phoneNumber, string message)
    {
        // Implement SMS sending logic here        ($"Sending SMS to {phoneNumber}: {message}");
    }
}

4. Create RabbitMQ Consumer

Create a RabbitMQ consumer that receives messages from the queue and calls the SMS sending service.

using ;
using ;
using System;
using ;
public class RabbitMQConsumer
{
private readonly string _hostName;
private readonly string _userName;
private readonly string _password;
private readonly string _queueName;
private readonly SmsService _smsService;
public RabbitMQConsumer(string hostName, string userName, string password, string queueName, SmsService smsService)
{
    _hostName = hostName;
    _userName = userName;
    _password = password;
    _queueName = queueName;
    _smsService = smsService;
}
public void StartConsuming()
{
    var factory = new ConnectionFactory()
    {
        HostName = _hostName,
        UserName = _userName,
        Password = _password
    };
    using (var connection = ())
    using (var channel = ())
    {
        (queue: _queueName,
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
        var consumer = new EventingBasicConsumer(channel);
         += (model, ea) =>
        {
            var body = ();
            var message = Encoding.(body);
            var phoneNumber = "user_phone_number"; // parse the mobile phone number from the message            _smsService.SendSms(phoneNumber, message);
        };
        (queue: _queueName,
                             autoAck: true,
                             consumer: consumer);
        (" Press [enter] to exit.");
        ();
    }
}
}

5. Integrate into user password reset process

During your user password reset process, generate a new password and send it to the RabbitMQ queue.

public class UserService
{
private readonly RabbitMQHelper _rabbitMQHelper;
public UserService(RabbitMQHelper rabbitMQHelper)
{
    _rabbitMQHelper = rabbitMQHelper;
}
public void ResetPassword(Guid userId)
{
    // Generate a new password    string newPassword = GeneratePassword();
    // Send a new password to the RabbitMQ queue    string message = $"Your new password is: {newPassword}";
    _rabbitMQHelper.SendMessage(message);
    // Other logic, such as updating passwords in database}
private string GeneratePassword()
{
    // Logic for generating random passwords    return "random_password";
}
}

6. Launch RabbitMQ Consumer

At the start of the application, start the RabbitMQ consumer to process the message.

public class Program
{
public static void Main(string[] args)
{
    string hostName = "localhost";
    string userName = "guest";
    string password = "guest";
    string queueName = "sms_queue";
    var smsService = new SmsService();
    var rabbitMQConsumer = new RabbitMQConsumer(hostName, userName, password, queueName, smsService);
    // Start the consumer    ();
}
}

7. Configure RabbitMQ connection information

Make sure your RabbitMQ connection information (hostname, username, password, queuename) is correct and that the RabbitMQ server is running.

Sample code
Here is a complete sample code showing how to use RabbitMQ to send the reset password to the user's mobile number via SMS:

using ;
using ;
using System;
using ;
public class RabbitMQHelper
{
private readonly string _hostName;
private readonly string _userName;
private readonly string _password;
private readonly string _queueName;
public RabbitMQHelper(string hostName, string userName, string password, string queueName)
{
    _hostName = hostName;
    _userName = userName;
    _password = password;
    _queueName = queueName;
}
public void SendMessage(string message)
{
    var factory = new ConnectionFactory()
    {
        HostName = _hostName,
        UserName = _userName,
        Password = _password
    };
    using (var connection = ())
    using (var channel = ())
    {
        (queue: _queueName,
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
        var body = Encoding.(message);
        (exchange: "",
                             routingKey: _queueName,
                             basicProperties: null,
                             body: body);
        ($" [x] Sent {message}");
    }
}
}
public class SmsService
{
public void SendSms(string phoneNumber, string message)
{
    // Implement SMS sending logic here    ($"Sending SMS to {phoneNumber}: {message}");
}
}
public class RabbitMQConsumer
{
private readonly string _hostName;
private readonly string _userName;
private readonly string _password;
private readonly string _queueName;
private readonly SmsService _smsService;
public RabbitMQConsumer(string hostName, string userName, string password, string queueName, SmsService smsService)
{
    _hostName = hostName;
    _userName = userName;
    _password = password;
    _queueName = queueName;
    _smsService = smsService;
}
public void StartConsuming()
{
    var factory = new ConnectionFactory()
    {
        HostName = _hostName,
        UserName = _userName,
        Password = _password
    };
    using (var connection = ())
    using (var channel = ())
    {
        (queue: _queueName,
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
        var consumer = new EventingBasicConsumer(channel);
         += (model, ea) =>
        {
            var body = ();
            var message = Encoding.(body);
            var phoneNumber = "user_phone_number"; // parse the mobile phone number from the message            _smsService.SendSms(phoneNumber, message);
        };
        (queue: _queueName,
                             autoAck: true,
                             consumer: consumer);
        (" Press [enter] to exit.");
        ();
    }
}
}
public class UserService
{
private readonly RabbitMQHelper _rabbitMQHelper;
public UserService(RabbitMQHelper rabbitMQHelper)
{
    _rabbitMQHelper = rabbitMQHelper;
}
public void ResetPassword(Guid userId)
{
    // Generate a new password    string newPassword = GeneratePassword();
    // Send a new password to the RabbitMQ queue    string message = $"Your new password is: {newPassword}";
    _rabbitMQHelper.SendMessage(message);
    // Other logic, such as updating passwords in database}
private string GeneratePassword()
{
    // Logic for generating random passwords    return "random_password";
}
}
public class Program
{
public static void Main(string[] args)
{
    string hostName = "localhost";
    string userName = "guest";
    string password = "guest";
    string queueName = "sms_queue";
    var smsService = new SmsService();
    var rabbitMQConsumer = new RabbitMQConsumer(hostName, userName, password, queueName, smsService);
    // Start the consumer    ();
}
}

This is the end of this article about .Net using RabbitMQ to realize SMS password reset. For more related content on .Net RabbitMQ password reset, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!