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

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

躲猫猫 发布于 2021-11-27 字数 1031 浏览 710 回复 2

刚接触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

冷默言语 2021-11-30 2 楼

补充一下日志里的内容

** 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,

飘过的浮云 2021-11-30 1 楼

找到问题了... 应该是

#FFFFFF;">#amqp_msg{payload = list_to_binary(mochijson:encode({struct,NewJsonData}))},