专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

RabbitMQ消息队列步骤

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:01:12       共计:3627 浏览

生产者(Producer)

1、创建连接工厂对象(IConnectionFactory)

IConnectionFactory connectionFactory = new ConnectionFactory {
    UserName = "ejk5",
    Password = "888888",
    HostName = "192.168.1.104"
};

2、创建连接对象(IConnection)

using (IConnection connection = connectionFactory.CreateConnection()){


}

3、创建连接会话对象(IModel)

 using (IModel channel = connection.CreateModel()) {


}

4、创建或定义消息队列名称(queueName)

5、创建或声明一个队列(QueueDeclare)

channel.QueueDeclare(
            queue:queueName,//消息队列名称
            durable:false,//是否缓存
            exclusive:false,//独家
            autoDelete:false,//自动删除
            arguments:null//参数
        );

6、创建或发送消息(BasicPublish)

while (true) {
            Console.WriteLine("请输入消息");
            string? message = Console.ReadLine();
            if (string.IsNullOrEmpty(message)) {
                Console.WriteLine("消息不能为空,请重新输入");
                continue;
            }
            byte[] msg=Encoding.UTF8.GetBytes(message);
            #region 7、发送消息
            channel.BasicPublish(
                exchange:"",
                routingKey:queueName,
                basicProperties:null,
                body:msg
            );
            Console.WriteLine($"成功发送消息:{message}");
            #endregion
        }

消费者(Consumer)


1、创建连接工厂对象(IConnectionFactory)

IConnectionFactory connectionFactory = new ConnectionFactory {
    UserName = "ejk5",
    Password = "888888",
    HostName = "192.168.1.104"
};

2、创建连接对象(IConnection)

using (IConnection connection = connectionFactory.CreateConnection()){


}

3、创建连接会话对象(IModel)

using (IModel channel = connection.CreateModel()) {


}

4、创建消费者(接收者)对象(queueName)

#region 创建消费者(接收者)对象
        //创建消费者对象
        var consumer = new EventingBasicConsumer(channel);
        consumer.Received += (model, ea) => {
            //等待1秒
            //Thread.Sleep(1000);
            //随机等待,实现能者多劳
            Thread.Sleep((new Random().Next(1, 6)) * 1000);
            //接收到的消息
            byte[] message=ea.Body.ToArray();
            Console.WriteLine($"接收到的信息为:{Encoding.UTF8.GetString(message)}");
            //返回消息确认,表示消息已传送到
            channel.BasicAck(ea.DeliveryTag,true);
        };
        #endregion

5、消费者开启监听

channel.BasicConsume(
            queue: queue,
            autoAck: false,
            consumer: consumer
        );


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:AspNetCore 使用Redis实现分布式缓存 | ·下一条:.NET Core 使用RabbitMQ 教程

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有