zoukankan      html  css  js  c++  java
  • 消息队列-rabbitmq

    //生产者
    using System;
    using System.Text;
    using Microsoft.AspNetCore.Mvc;
    using RabbitMQ.Client;
    
    namespace App.Controllers
    {
        public class ProducerController:Controller
        {
            public void SendMessage(string message)
            {
                var factory = new ConnectionFactory(){HostName = "localhost"};
                using(var connection = factory.CreateConnection())
                {
                    using(var channel = connection.CreateModel())
                    {
                        channel.QueueDeclare(queue: "demo",
                                     durable: true,
                                     exclusive: false,
                                     autoDelete: false,
                                     arguments: null);
                        var body = Encoding.UTF8.GetBytes(message);
                        var properties = channel.CreateBasicProperties();
                        properties.Persistent = true;//持久化设置,配合durable: true可以保证队列挂了之后队列中的消息不回丢失
                        channel.BasicPublish(exchange: "",
                                            routingKey: "demo",
                                            basicProperties: properties,
                                            body: body);
                    }
                }
            }
        }
    }
    //消费者
    using System;
    using System.Text;
    using System.Threading;
    using RabbitMQ.Client;
    using RabbitMQ.Client.Events;
    
    namespace consumer
    {
        class Program
        {
            static void Main(string[] args)
            {
                var factory = new ConnectionFactory() { HostName = "localhost" };
                using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "demo",
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
                    channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);//一次接受一个消息来消费
                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var body = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine(" [2222222x] Received {0}", message);
                        Thread.Sleep(8000);
                        channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                    };
                    channel.BasicConsume(queue: "demo",
                                         autoAck: false,
                                         consumer: consumer);
    
                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadKey();
                }
            }
        }
    }
  • 相关阅读:
    解决Warning: mysql_connect(): Headers and client library minor version mismatch. 警告
    读取微博feed伪代码
    [待续]不为人知的PHP-SPL标准库
    封装pyMysql
    捉“客”记
    实现小程序插件自定义导航栏
    圆形与矩形的碰撞检测--Mr.Ember
    mpvue原理分析
    webpack学习--Mr.Ember
    原型链、继承--Mr.Ember
  • 原文地址:https://www.cnblogs.com/yifengjianbai/p/10616377.html
Copyright © 2011-2022 走看看