如果字符串的用途是某种类型的key,那么字符串最好要trim一下,去掉首尾的空格。
曾经遇到一个bug,RabbitMQ中一个queue始终收不到routing key为某些值的message, 但是却能收到routing key为另一个值的message。 Queue的binding是通过配置文件指定的,
<routingKey value="routing-key.a.*, routing-key.b.*, routing-key.c.*">
Routing key为routing-key.b.*
和routing-key.c.*
的消息始终收不到。
尝试直接通过“RabbitMQ Management”(http://localhost:15672/)发送消息,总是得到
“Message published, but not routed.”错误。
最后发现root cause是binding创建的时候是通过value.split(',')
来提取routing key的。
因为没有trim所以 routing-key.b.*
的开头有个空格。
但是sender在publish message的时候用的routing key总是不带空格的😱。
数据库的index也可以认为是一种key。 假设Customer表有一个email column,且email column是有index的。 那么在存数据或者查询时应该先trim一下email。