ASP.NET 操作消息队列

 1 public   partial   class  _Default : System.Web.UI.Page
 2 {
 3    private string queuePath = @".\Private$\mydemoqueues";
 4    protected void Page_Load(object sender, EventArgs e)
 5    {
 6        //异步获取消息
 7        GetQueueMessage();
 8    }

 9    protected void Button1_Click(object sender, EventArgs e)
10    {
11        MessageQueue mq;
12        if(MessageQueue.Exists(@".\Private$\mydemoqueues"))
13        {
14            mq=new MessageQueue(@".\Private$\mydemoqueues");
15        }

16        else
17        {
18            mq = MessageQueue.Create(@".\Private$\mydemoqueues");    
19        }

20        BinaryWriter writer=new BinaryWriter(new MemoryStream());
21        writer.Write(this.TextBox1.Text.Trim());
22        Message msg=new Message();
23        msg.BodyStream = writer.BaseStream;
24        msg.Label = "发送信息,飘渺峰测试";
25        mq.Send(msg);
26
27    }

28    protected void Button2_Click(object sender, EventArgs e)
29    {
30        MessageQueue mq;
31        Message msg=new Message();
32        string result;
33        if (MessageQueue.Exists(queuePath))
34        {
35            mq=new MessageQueue(queuePath);
36        }

37        else
38        {
39            mq = MessageQueue.Create(queuePath);
40        }

41        try
42        {
43            mq.MaximumQueueSize = 1000000;
44            msg = mq.Receive(new TimeSpan(003));
45            BinaryReader br=new BinaryReader(msg.BodyStream);
46            result=new string(br.ReadChars(Convert.ToInt32(msg.BodyStream.Length)));
47            this.TextBox2.Text = result;
48            mq.Close();
49        }

50        catch (Exception)
51        {
52            Response.Write("没有消息可以接收!");
53        }

54    }

55    /**//// <summary>
56    /// 异步获取消息队列
57    /// </summary>

58    private void GetQueueMessage()
59    {
60        MessageQueue mq=new MessageQueue(queuePath);
61        mq.Formatter = new XmlMessageFormatter(new Type[] {typeof (string)});
62        mq.PeekCompleted+=new PeekCompletedEventHandler(MyMessageCompleted);
63        mq.BeginPeek();
64        return;
65    }

66
67    private void MyMessageCompleted(object sender, PeekCompletedEventArgs e)
68    {
69        MessageQueue mq = (MessageQueue) sender;
70        Message msg = mq.EndPeek(e.AsyncResult);
71        BinaryReader reader=new BinaryReader(msg.BodyStream);
72        string temp=new string(reader.ReadChars(Convert.ToInt32(msg.BodyStream.Length)));
73        //Response.Write("这是异步队列信息:"+temp);
74        this.TextBox2.Text = temp;
75        mq.BeginPeek();
76        return;
77    }

78
79    private void SendMessage()
80    {
81        MessageQueue mq;
82        if (MessageQueue.Exists(@".\Private$\mydemoqueues"))
83        {
84            mq = new MessageQueue(@".\Private$\mydemoqueues");
85        }

86        else
87        {
88            mq = MessageQueue.Create(@".\Private$\mydemoqueues");
89        }

90        BinaryWriter writer = new BinaryWriter(new MemoryStream());
91        writer.Write("sdfsdfsd");
92        Message msg = new Message();
93        msg.BodyStream = writer.BaseStream;
94        msg.Label = "发送信息,飘渺峰测试";
95        mq.Send(msg);
96    }

转载于:https://www.cnblogs.com/rainnight/archive/2008/03/21/1115892.html

ASP.NET MVC中使用消息队列可以通过RabbitMQ来实现。在ASP.NET MVC中使用消息队列的步骤如下: 1. 在MessageController类中注入IModel实例,并在SendMessage方法中使用BasicPublish方法发送消息到队列。具体代码如下: ```csharp [Route("api/[controller]")] [ApiController] public class MessageController : ControllerBase { private readonly IModel _rabbitMQChannel; private readonly RabbitMQOptions _rabbitMQOptions; public MessageController(IModel rabbitMQChannel, IOptions<RabbitMQOptions> rabbitMqOptions) { _rabbitMQChannel = rabbitMQChannel; _rabbitMQOptions = rabbitMqOptions.Value; } [HttpPost] public IActionResult SendMessage([FromBody] string message) { var body = Encoding.UTF8.GetBytes(message); _rabbitMQChannel.BasicPublish( exchange: "", routingKey: _rabbitMQOptions.QueueName, basicProperties: null, body: body); return Ok(); } } ``` 2. 在Startup.cs文件的ConfigureServices方法中,进行RabbitMQ配置信息的注册。具体代码如下: ```csharp public void ConfigureServices(IServiceCollection services) { // ... services.Configure<RabbitMQOptions>(Configuration.GetSection("RabbitMQ")); // 注册RabbitMQ连接和通道 services.AddSingleton<IConnection>(provider => { var options = provider.GetRequiredService<IOptions<RabbitMQOptions>>().Value; var factory = new ConnectionFactory { HostName = options.Host, Port = options.Port, UserName = options.User, Password = options.Password }; return factory.CreateConnection(); }); services.AddScoped<IModel>(provider => { var connection = provider.GetRequiredService<IConnection>(); return connection.CreateModel(); }); // ... } ``` 以上是在ASP.NET MVC中使用消息队列的步骤。通过使用RabbitMQ,你可以在ASP.NET MVC应用程序中轻松实现消息队列的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值