Rabbitmq tracing插件修改遇到Erlang语法(或者是运行)问题
刚接触erlang不久。
CentOS上的Rabbitmq,修改Tracing插件的rabbit_tracing_consumer.erl文件。
在函数delivery_to_log_record中的开头 {Type, Q, RQs} = case Key of之前加入一段修改,想根据对特定消息的分析结果向Rabbitmq中再抛入一个消息,编译没问题,但是一直运行出错,日志提示case clause错误,似乎导致后续的原来的代码有问题。
加入这一句会导致问题:
ok = amqp_channel:cast(State#state.ch,#'basic.publish'{exchange = ?TRACE_BACK_EXCHANGE_NAME, routing_key = list_to_binary(FromID)},#amqp_msg{payload = mochijson:encode({struct,NewJsonData})});
这一句是在一个case判断里的,所以语句最后是一个分号。State是这个函数的入口参数
经过试验,单独把语句中的下面两部分拿出来单独使用,都没有问题
#'basic.publish'{exchange = ?TRACE_BACK_EXCHANGE_NAME, routing_key = list_to_binary(FromID)}
和
#amqp_msg{payload = mochijson:encode({struct,NewJsonData})}
似乎只要调用amqp_channel:cast就会出错
请高手看看,怎么处理?
谢谢
如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

评论(2)

发布评论
需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。