http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3329|回复: 4

[咨询站长] 有大神用过RabbitMq吗?

[复制链接]
发表于 2017-4-13 19:18:31 | 显示全部楼层 |阅读模式

   public class RPCClient
    {
        private IConnection connection;
        private IModel channel;
        private string replyQueueName;
        private QueueingBasicConsumer consumer;

        public RPCClient()
        {
            try
            {
                var factory = new ConnectionFactory()
                {
                    HostName = "192.168.10.198",
                    UserName = "123",
                    Password = "123",
                    Port = 5672,
                    RequestedHeartbeat = 5,
                    AutomaticRecoveryEnabled = true
                };
                connection = factory.CreateConnection();
                channel = connection.CreateModel();
                replyQueueName = channel.QueueDeclare().QueueName;
                consumer = new QueueingBasicConsumer(channel);
                channel.BasicConsume(queue: replyQueueName,
                                    noAck:true,
                                     consumer: consumer);
            }
            catch (Exception ex)
            {

            }
        }

        public string GetRPCResult()
        {

            try
            {
                var corrId = Guid.NewGuid().ToString();
                var props = channel.CreateBasicProperties();
                props.ReplyTo = replyQueueName;
                props.CorrelationId = corrId;

                var messageBytes = Encoding.UTF8.GetBytes("66666");
                channel.BasicPublish(exchange: "",
                                     routingKey: "rpc_queue33",
                                     basicProperties: props,
                                     body: messageBytes);

                while (true)
                {
                    var ea = consumer.Queue.Dequeue();
                    if (ea.BasicProperties.CorrelationId == corrId)
                    {
                        Console.WriteLine(Encoding.UTF8.GetString(ea.Body));
                        return Encoding.UTF8.GetString(ea.Body);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                connection.Close();
            }
            return "";
        }
    }
执行到:var ea = consumer.Queue.Dequeue(); 会报异常,在本地是正常的,上服务器就报这个错,求指导:
"System.IO.EndOfStreamException: SharedQueue closed\n  at RabbitMQ.Util.SharedQueue`1[T].EnsureIsOpen () [0x00008] in <8ebd6ca48b534a1a91b39f38e33ac7be>:0 \n  at RabbitMQ.Util.SharedQueue`1[T].Dequeue () [0x00013] in <8ebd6ca48b534a1a91b39f38e33ac7be>:0


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2017-4-14 08:16:07 | 显示全部楼层
目测是SharedQueue状态为关闭。
 楼主| 发表于 2017-4-14 11:09:16 | 显示全部楼层
本帖最后由 21341234 于 2017-4-14 11:13 编辑
站长苏飞 发表于 2017-4-14 08:16
目测是SharedQueue状态为关闭。

那怎么开启呢?我在本地测试是正常的,发到服务器就不对了
发表于 2017-4-14 11:59:28 | 显示全部楼层
没用过不太清楚,你可以百度一下。
发表于 2017-4-14 13:04:01 | 显示全部楼层
和有些系统好像是有关系的,我在本地电脑直接使用你上面的URL,GEt就能提取到内容
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-19 15:28

© 2014-2021

快速回复 返回顶部 返回列表