Rabbitmq tracing插件修改遇到Erlang语法(或者是运行)问题

太阳正好 发布于 2015/06/19 09:19
阅读 483
收藏 0

刚接触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就会出错

请高手看看,怎么处理?

谢谢

加载中
0
太阳正好
太阳正好

找到问题了... 应该是

#amqp_msg{payload = list_to_binary(mochijson:encode({struct,NewJsonData}))},

0
太阳正好
太阳正好

补充一下日志里的内容

** Generic server <0.319.0> terminating
** Last message in was {'EXIT',<0.316.0>,
                           {{case_clause,
                                {end_object,


** Reason for termination ==
** {unexpected_msg,
       {'EXIT',<0.316.0>,
           {{case_clause,
                {end_object,




** Generic server <0.328.0> terminating
** Last message in was {'EXIT',<0.325.0>,
                           {{case_clause,
                                {end_object,

** Reason for termination ==
** {{case_clause,{end_object,"[49,48,


返回顶部
顶部