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

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

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

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

1.安裝 RabbitMQ 客戶端庫

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

dotnet add package RabbitMQ.Client

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

創(chuàng)建一個(gè) 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)建一個(gè)短信發(fā)送服務(wù),用于處理從 RabbitMQ 接收到的消息并發(fā)送短信。

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

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

創(chuàng)建一個(gè) RabbitMQ 消費(fèi)者,用于從隊(duì)列中接收消息并調(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"; // 從消息中解析出手機(jī)號
            _smsService.SendSms(phoneNumber, message);
        };
        channel.BasicConsume(queue: _queueName,
                             autoAck: true,
                             consumer: consumer);
        Console.WriteLine(" Press [enter] to exit.");
        Console.ReadLine();
    }
}
}

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

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

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

6.啟動 RabbitMQ 消費(fèi)者

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

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

7.配置 RabbitMQ 連接信息

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

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

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)
{
    // 在這里實(shí)現(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"; // 從消息中解析出手機(jī)號
            _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 隊(duì)列
    string message = $"Your new password is: {newPassword}";
    _rabbitMQHelper.SendMessage(message);
    // 其他邏輯,例如更新數(shù)據(jù)庫中的密碼
}
private string GeneratePassword()
{
    // 生成隨機(jī)密碼的邏輯
    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);
    // 啟動消費(fèi)者
    rabbitMQConsumer.StartConsuming();
}
}

到此這篇關(guān)于 .Net使用RabbitMQ實(shí)現(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)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ASP.NET具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • ASP.NET MVC下Ajax.BeginForm方式無刷新提交表單實(shí)例

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

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

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

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

    VS2015使用scanf報(bào)錯(cuò)的解決方法

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

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

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

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

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

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

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

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

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

    在AspNetCore中使用極驗(yàn)做行為認(rèn)證的驗(yàn)證流程

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

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

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

最新評論

涿州市| 金平| 木里| 石棉县| 革吉县| 读书| 搜索| 曲靖市| 光泽县| 凤阳县| 太仆寺旗| 陇南市| 弥勒县| 定陶县| 白山市| 仪征市| 孝昌县| 昌平区| 天长市| 贵阳市| 云南省| 永川市| 织金县| 常宁市| 师宗县| 平阴县| 巴彦淖尔市| 习水县| 自治县| 聂拉木县| 上思县| 赤水市| 阜新市| 津南区| 盐津县| 福建省| 宜昌市| 绍兴县| 寿阳县| 玛纳斯县| 长白|