我是RabbitMQ的新手,并且想知道我正在考虑解决这个问题的好方法.我想创建一个订阅队列的服务,只提取符合特定条件的消息; 例如,如果消息中包含特定主题标题.
我还在学习RabbitMQ,并且正在寻找如何解决这个问题的技巧.我的问题包括:消费者如何仅从队列中提取特定消息?生产者如何在消息中设置主题标题(如果这甚至是正确的术语?)
rob*_*olf 25
RabbitMQ非常适合这种情况.你有很多选择可以做你想做的事.我建议阅读文档以便更好地理解.我建议您使用主题或直接交换.主题更灵活.它是这样的.
生产者代码连接到RabbitMQ Broker并使用特定名称创建和Exchange.
制片人发布交换.发布的每条消息都将使用路由密钥发布.
消费者连接到RabbitMQ经纪人.
消费者创建队列
消费者将Queue绑定到交换机,即生产者中定义的相同交换.绑定还包括针对该特定消费者的每个消息所需的路由密钥.
让我们说你发布了日志消息.路由键可能类似于"log.info","log.warn","log.error".生产者发布的每条消息都附有相关的路由密钥.然后,您将拥有一个发送和发送电子邮件以获取所有错误消息的消费者,以及另一个将所有错误消息写入文件的消费者.因此,电子邮件程序将使用路由键"log.error"定义从其队列到交换的绑定.这样,虽然交换机接收所有消息,但为电子邮件发送者定义的队列将只包含错误消息.filelogger将定义绑定到同一交换机的新单独队列,并设置不同的路由密钥.您可以为三个不同的路由键要求执行三个单独的绑定,或者只使用通配符"log.*"从log开始请求来自交换的所有消息.
这是一个简单的示例,展示了如何实现您想要做的事情.
看看这里的代码示例具体数目教程5号.