c# – RabbitMQ和SharedQueue关闭
发布时间:2020-12-15 22:08:00 所属栏目:百科 来源:网络整理
导读:我使用RabbitMQ发送简单的短int信息,首先我将id发送到一个项目: private void SendPgcIdToRabbitMQ(string id) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { using (var c
我使用RabbitMQ发送简单的短int信息,首先我将id发送到一个项目:
private void SendPgcIdToRabbitMQ(string id) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { bool durable = true; channel.QueueDeclare("XQueue",durable,false,null); var body = Encoding.UTF8.GetBytes(id); channel.BasicPublish("","XQueue",null,body); Console.WriteLine(" [x] Sent {0}",id); } } } 和听众: public void Listener() { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare("XQueue",true,null); var consumer = new QueueingBasicConsumer(channel); channel.BasicConsume("XQueue",consumer); Console.WriteLine(" [*] Waiting for messages. " + "To exit press CTRL+C"); while (true) { var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); var body = ea.Body; var message = Encoding.UTF8.GetString(body); Console.WriteLine(" [x] Received {0}",message); AddPGCFileID(message); channel.BasicAck(ea.DeliveryTag,false); Thread.Sleep(500); } } } } 它工作正常,所以在收到消息后我正在处理它的一些操作,然后我得到第二个ID并创建其他队列来做同样的事情: private void SendSurveyIdToRabbitMQ(int yID) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { bool durable = true; channel.QueueDeclare("YQueue",null); var body = Encoding.UTF8.GetBytes(yID.ToString()); channel.BasicPublish("","YQueue",yID); } } } 并收到: public void InquiryListener() { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare("YQueue",null); var consumer = new QueueingBasicConsumer(channel); channel.BasicConsume("YQueue",message); StartProcessing(Convert.ToInt32(message)); channel.BasicAck(ea.DeliveryTag,false); Thread.Sleep(500); } } } } 第一个队列发送和接收工作正常,但第二个我得到: 这很奇怪,因为它正在以这种方式工作,从某种程度上我正在解决这个问题.我重新修复rabbitmq,删除所有队列等等都找不到问题所在.有任何想法吗? 编辑: 解决方法
在执行while(true){…}之前,首先检查队列是否为空.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – Navbar与bootstrap折叠不起作用
- Flex开发入门
- SQLite数据库
- 知道这20个正则表达式,能让你少写1,000行代码
- c – SDL_HasEvent()和SDL_GetEventState()之间有什么区别?
- c# – 为什么NextValue调用performanceCounter会改变线程关
- 改善Flash IDE想法记录:资源库查找
- c# – Twilio的TwilioRestClient SendSmsMessage返回null
- 对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例
- 如何使用Selenium IDE验证XML页面上的文本?