RabbitMQ 基本使用

13 篇文章 0 订阅
/// <summary>
        ///  Hello 消息队列生产者
        /// </summary>
        /// <param name="message">需传递的消息内容</param>
        public void ProjectSend(string message)
        {
            var factory = new ConnectionFactory();
            // RabbitMq 服务地址
            factory.HostName = "192.168.111.222";
            // 用户名
            factory.UserName = "zxr";
            // 密码
            factory.Password = "520886";

            factory.Protocol = Protocols.DefaultProtocol;

            factory.RequestedConnectionTimeout = 60;

            factory.Port = AmqpTcpEndpoint.UseDefaultPort;

            try
            {
                using (var connection = factory.CreateConnection())
                {
                    using (var channel = connection.CreateModel())
                    {
                        // 创建一个名为Hello 的消息队列
                        channel.QueueDeclare("Hello", false, false, false, null);
                        var body = Encoding.UTF8.GetBytes(message);
                        // 开始传递
                        channel.BasicPublish("", "Hello", null, body);

                        Console.WriteLine("Hello:内容已发送完毕");
                        Console.WriteLine($"发送内容为:{message}");

                    }
                }
            }
            catch (Exception err)
            {

                throw err;
            }



        }
/// <summary>
        /// Holle 消息队列消费者
        /// </summary>
        public void ProjectReceived()
        {
            var factory = new ConnectionFactory();
            factory.HostName = "192.168.111.222";
            factory.UserName = "zxr";
            factory.Password = "520886";

            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare("Hello", false, false, false, null);

                    var consumer = new EventingBasicConsumer(channel);
                    channel.BasicConsume("Hello", false, consumer);
                    //获取并处理消息队列中的数据
                    consumer.Received += (model, ea) =>
                    {
                        var body = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine("已接收: {0}", message);
                    };
            
                    Console.ReadLine();
                }
            }

        }

可能出现的问题:

1、Connection failed:因RabbitMQ的服务地址连接失败,服务地址因为 具体的IP 而填写locahost 可能导致此异常

2、None of the specified endpoints were reachable(指定的终结点都不可访问):HostName填写错误 新建的用户未设置权限会导致此异常。在生产环境 可能因为 防火墙未设置RabbitMQ的默认端口:5672 也会导致此异常发生。

设置RabbitMQ 用户的权限:

RabbitMQ 可视化页面->点击Admin ->点击新建的用户->点击下图指定位置即可

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值