我正在使用RabbitMQ构建一个系统。我希望能够做的事情之一是根据记录的消息的严重性将日志消息直接发送到不同的队列。错误和异常应该进入一个队列以便立即处理;像Trace日志这样不太重要的消息应该转移到其他地方,因此它们不会阻塞关键日志记录。
我认为处理此问题的方法是设置主题交换并将两个队列绑定到交换机。然后,我的日志消息将使用路由密钥中的日志级别发送到正确的队列。但是,我有一个问题,我不知道设置路由密钥的最佳方法。
将我的错误放入正确的队列很容易 - 将两个队列绑定到交换机,一个带有Error
路由密钥,然后将带有Error
路由密钥的消息发送给它。我希望发送到此交换的所有其他类型的消息都转到另一个队列。但是我不认为你可以描述像!Error
之类的路由键,或者至少它没有出现在我可以看到的RabbitMQ教程或AMQP规范中。如果我使用通配符绑定,那么我的错误消息将被传递到两个队列。
看起来我可以通过使用备用交换(http://www.rabbitmq.com/ae.html)来实现这一点但是如果可能的话我宁愿坚持使用直接AMQP,并且配置AE会给我的系统增加另一层复杂性 初始化。
我还可以为系统中的每个日志级别定义路由密钥,并将非Error
的所有内容显式路由到低级别队列。但这似乎过于冗长,增加了维护费用。
有没有比使用AE更好的方法来实现我的目标?