最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.Net使用RabbitMQ實現(xiàn)短信密碼重置的操作步驟

 更新時間:2024年09月10日 09:39:44   作者:似夢亦非夢  
在C#開發(fā)中,通過RabbitMQ實現(xiàn)短信服務(wù)可增強應(yīng)用的消息通知能力,本文介紹了使用RabbitMQ發(fā)送短信的步驟,包括安裝RabbitMQ客戶端庫、創(chuàng)建連接和通道、實現(xiàn)短信發(fā)送服務(wù)、配置RabbitMQ消費者,并集成到用戶密碼重置流程中,通過示例代碼,可以快速理解整個實現(xiàn)過程

在 C# 中使用 RabbitMQ 通過短信發(fā)送重置后的密碼到用戶的手機號上,你可以按照以下步驟進行

1.安裝 RabbitMQ 客戶端庫

首先,確保你已經(jīng)安裝了 RabbitMQ 客戶端庫。你可以通過 NuGet 包管理器來安裝:

dotnet add package RabbitMQ.Client

2.創(chuàng)建 RabbitMQ 連接和通道

創(chuàng)建一個 RabbitMQ 連接和通道,用于發(fā)送消息。

using RabbitMQ.Client;
using System;
using System.Text;
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 = factory.CreateConnection())
    using (var channel = connection.CreateModel())
    {
        channel.QueueDeclare(queue: _queueName,
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
        var body = Encoding.UTF8.GetBytes(message);
        channel.BasicPublish(exchange: "",
                             routingKey: _queueName,
                             basicProperties: null,
                             body: body);
        Console.WriteLine($" [x] Sent {message}");
    }
}
}

3.創(chuàng)建短信發(fā)送服務(wù)

創(chuàng)建一個短信發(fā)送服務(wù),用于處理從 RabbitMQ 接收到的消息并發(fā)送短信。

public class SmsService
{
    public void SendSms(string phoneNumber, string message)
    {
        // 在這里實現(xiàn)短信發(fā)送邏輯
        Console.WriteLine($"Sending SMS to {phoneNumber}: {message}");
    }
}

4.創(chuàng)建 RabbitMQ 消費者

創(chuàng)建一個 RabbitMQ 消費者,用于從隊列中接收消息并調(diào)用短信發(fā)送服務(wù)。

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
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 = factory.CreateConnection())
    using (var channel = connection.CreateModel())
    {
        channel.QueueDeclare(queue: _queueName,
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
        var consumer = new EventingBasicConsumer(channel);
        consumer.Received += (model, ea) =>
        {
            var body = ea.Body.ToArray();
            var message = Encoding.UTF8.GetString(body);
            var phoneNumber = "user_phone_number"; // 從消息中解析出手機號
            _smsService.SendSms(phoneNumber, message);
        };
        channel.BasicConsume(queue: _queueName,
                             autoAck: true,
                             consumer: consumer);
        Console.WriteLine(" Press [enter] to exit.");
        Console.ReadLine();
    }
}
}

5.集成到用戶密碼重置流程

在你的用戶密碼重置流程中,生成新的密碼并將其發(fā)送到 RabbitMQ 隊列。

public class UserService
{
private readonly RabbitMQHelper _rabbitMQHelper;
public UserService(RabbitMQHelper rabbitMQHelper)
{
    _rabbitMQHelper = rabbitMQHelper;
}
public void ResetPassword(Guid userId)
{
    // 生成新的密碼
    string newPassword = GeneratePassword();
    // 將新密碼發(fā)送到 RabbitMQ 隊列
    string message = $"Your new password is: {newPassword}";
    _rabbitMQHelper.SendMessage(message);
    // 其他邏輯,例如更新數(shù)據(jù)庫中的密碼
}
private string GeneratePassword()
{
    // 生成隨機密碼的邏輯
    return "random_password";
}
}

6.啟動 RabbitMQ 消費者

在應(yīng)用程序啟動時,啟動 RabbitMQ 消費者以處理消息。

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);
    // 啟動消費者
    rabbitMQConsumer.StartConsuming();
}
}

7.配置 RabbitMQ 連接信息

確保你的 RabbitMQ 連接信息(主機名、用戶名、密碼、隊列名)是正確的,并且 RabbitMQ 服務(wù)器正在運行。

示例代碼
以下是一個完整的示例代碼,展示如何使用 RabbitMQ 通過短信發(fā)送重置后的密碼到用戶的手機號上:

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
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 = factory.CreateConnection())
    using (var channel = connection.CreateModel())
    {
        channel.QueueDeclare(queue: _queueName,
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
        var body = Encoding.UTF8.GetBytes(message);
        channel.BasicPublish(exchange: "",
                             routingKey: _queueName,
                             basicProperties: null,
                             body: body);
        Console.WriteLine($" [x] Sent {message}");
    }
}
}
public class SmsService
{
public void SendSms(string phoneNumber, string message)
{
    // 在這里實現(xiàn)短信發(fā)送邏輯
    Console.WriteLine($"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 = factory.CreateConnection())
    using (var channel = connection.CreateModel())
    {
        channel.QueueDeclare(queue: _queueName,
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
        var consumer = new EventingBasicConsumer(channel);
        consumer.Received += (model, ea) =>
        {
            var body = ea.Body.ToArray();
            var message = Encoding.UTF8.GetString(body);
            var phoneNumber = "user_phone_number"; // 從消息中解析出手機號
            _smsService.SendSms(phoneNumber, message);
        };
        channel.BasicConsume(queue: _queueName,
                             autoAck: true,
                             consumer: consumer);
        Console.WriteLine(" Press [enter] to exit.");
        Console.ReadLine();
    }
}
}
public class UserService
{
private readonly RabbitMQHelper _rabbitMQHelper;
public UserService(RabbitMQHelper rabbitMQHelper)
{
    _rabbitMQHelper = rabbitMQHelper;
}
public void ResetPassword(Guid userId)
{
    // 生成新的密碼
    string newPassword = GeneratePassword();
    // 將新密碼發(fā)送到 RabbitMQ 隊列
    string message = $"Your new password is: {newPassword}";
    _rabbitMQHelper.SendMessage(message);
    // 其他邏輯,例如更新數(shù)據(jù)庫中的密碼
}
private string GeneratePassword()
{
    // 生成隨機密碼的邏輯
    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);
    // 啟動消費者
    rabbitMQConsumer.StartConsuming();
}
}

到此這篇關(guān)于 .Net使用RabbitMQ實現(xiàn)短信密碼重置的文章就介紹到這了,更多相關(guān) .Net RabbitMQ密碼重置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ASP.NET第一次訪問慢的完美解決方案(MVC,Web Api)

    ASP.NET第一次訪問慢的完美解決方案(MVC,Web Api)

    這篇文章主要給大家介紹了關(guān)于ASP.NET第一次訪問慢的完美解決方案(MVC,Web Api)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用ASP.NET具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • ASP.NET MVC下Ajax.BeginForm方式無刷新提交表單實例

    ASP.NET MVC下Ajax.BeginForm方式無刷新提交表單實例

    下面小編就為大家分享一篇ASP.NET MVC下Ajax.BeginForm方式無刷新提交表單實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • .NET Core單元測試的兩種方法介紹

    .NET Core單元測試的兩種方法介紹

    這篇文章介紹了.NET Core單元測試的兩種方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • VS2015使用scanf報錯的解決方法

    VS2015使用scanf報錯的解決方法

    這篇文章主要為大家詳細介紹了VS2015使用scanf報錯的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 配置Spring.Net框架開發(fā)環(huán)境

    配置Spring.Net框架開發(fā)環(huán)境

    這篇文章介紹了配置Spring.Net框架開發(fā)環(huán)境的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Asp.Net模擬表單提交數(shù)據(jù)和上傳文件的實現(xiàn)代碼

    Asp.Net模擬表單提交數(shù)據(jù)和上傳文件的實現(xiàn)代碼

    這篇文章主要介紹了Asp.Net模擬表單提交數(shù)據(jù)和上傳文件的實現(xiàn)代碼,本文對3種情況都做了介紹,只有普通數(shù)據(jù)的表單、只上傳文件的表單、包含普通數(shù)據(jù)和上傳文件表單,需要的朋友可以參考下
    2014-08-08
  • ASP.NET?Core依賴注入(DI)講解

    ASP.NET?Core依賴注入(DI)講解

    本文詳細講解了ASP.NET?Core依賴注入(DI),文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Log4net日志記錄組件的使用步驟詳解和下載

    Log4net日志記錄組件的使用步驟詳解和下載

    Log4net日志記錄組件的使用步驟詳解,需要的朋友可以參考一下
    2013-02-02
  • 在AspNetCore中使用極驗做行為認證的驗證流程

    在AspNetCore中使用極驗做行為認證的驗證流程

    這篇文章主要介紹了在AspNetCore中使用極驗做行為認證的驗證流程 ,本文有圖文介紹有實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • 基于.NET的FluentValidation數(shù)據(jù)驗證實現(xiàn)

    基于.NET的FluentValidation數(shù)據(jù)驗證實現(xiàn)

    這篇文章主要介紹了基于.NET的FluentValidation數(shù)據(jù)驗證實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論

东至县| 镇平县| 林甸县| 遂宁市| 任丘市| 揭西县| 丰镇市| 酒泉市| 海盐县| 新密市| 乌鲁木齐县| 大丰市| 二手房| 科技| 呼和浩特市| 集贤县| 大英县| 瑞丽市| 大港区| 阿拉善左旗| 全椒县| 达拉特旗| 桦甸市| 岳普湖县| 毕节市| 明光市| 英超| 仲巴县| 河池市| 天台县| 乌恰县| 黔西| 沂源县| 东乌珠穆沁旗| 沽源县| 肃北| 石家庄市| 富顺县| 河津市| 拜泉县| 区。|