当前位置: 首页 > 编程语言 > C#

RabbitMQC#API基于事件的消息消费分享

时间:2023-04-10 18:29:37 C#

RabbitMQC#API基于事件的消息消费while(true){BasicDeliverEventArgse=(BasicDeliverEventArgs)Consumer.Queue.Dequeue();IBasicProperties属性=e.基本属性;byte[]body=e.Body;Console.WriteLine("收到消息:"+Encoding.UTF8.GetString(body));ch.BasicAck(e.DeliveryTag,false);这是我们通过订阅您所做的事情检索消息的地方。我们使用While循环是因为我们希望消费者持续收听......如果我想让它甚至基于......那就是当新消息到达队列时只有消费者应该消费消息......或任何类似的事件那..将是RabbitMQ.Client.Events.EventingBasicConsumer用于事件消费者而不是阻塞消费者。您当前正在阻塞Consumer.Queue.Dequeue()。如果我正确理解你的问题,你想异步使用消息。执行此操作的标准方法是编写您自己的IBasicConsumer(可能通过继承DefaultBasicConsumer)并将其设置为通道的消费者。这样做的问题是您必须非常小心在IBasicConsumer.HandleBasicDelivery中执行的操作。如果您使用任何同步AMQP方法,例如basic.publish,您将遇到死锁。如果你做任何需要很长时间的事情,你就会遇到其他一些问题。如果您确实需要同步方法或长时间运行的操作,那么您正在做的就是正确的方法。看看订阅;它是一个IBasicConsumer,它使用消息并将它们放入队列中。如果您需要更多帮助,可以从rabbitmq-discuss邮件列表开始。我遇到了这个问题,但找不到答案,因此创建了一个演示项目,让RabbitMQ订阅在收到消息时引发.Net事件。订阅在它自己的线程上运行,让UI(在我的例子中)可以自由执行。我将我的项目称为RabbitEar,因为它侦听来自强大的RabbitMQ的消息我计划与RabbitMQ站点共享它,以便他们可以在这些示例中包含链接/代码,如果他们认为这是值得的话。请访问http://rabbitears.codeplex.com/查看谢谢Simon以上是C#学习教程:RabbitMQC#API基于事件的消息消费与分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: