emqx 使用emqx-exhook 做第三方扩展时遇到初始化失败

环境:centos 7

emqx版本:4.1.0

在使用emqx-exhook 做Java扩展时,(如何做java扩展请参考使用 Java 开发 EMQ X MQTT 服务器插件 - 简书)加载插件时遇到以下错误:

2022-03-03 16:43:01.377 [error] [ExHook Driver] CALL java 'SendKafka':init([]), unknown return: {'EXIT',{timeout,[{erlport,call,3,[{file,"/home/xzh/emqx-rel/_build/emqx/lib/erlport/src/erlport.erl"},{line,234}]},{emqx_extension_hook_driver,do_call,5,[{file,"/home/xzh/emqx-rel/_build/emqx/lib/emqx_extension_hook/src/emqx_extension_hook_driver.erl"},{line,292}]},{emqx_extension_hook_driver,do_init,2,[{file,"/home/xzh/emqx-rel/_build/emqx/lib/emqx_extension_hook/src/emqx_extension_hook_driver.erl"},{line,113}]},{emqx_extension_hook,enable,2,[{file,"/home/xzh/emqx-rel/_build/emqx/lib/emqx_extension_hook/src/emqx_extension_hook.erl"},{line,49}]},{emqx_extension_hook_app,load_all_drivers,1,[{file,"/home/xzh/emqx-rel/_build/emqx/lib/emqx_extension_hook/src/emqx_extension_hook_app.erl"},{line,66}]},{emqx_extension_hook_app,start,2,[{file,"/home/xzh/emqx-rel/_build/emqx/lib/emqx_extension_hook/src/emqx_extension_hook_app.erl"},{line,38}]},{application_master,start_it_old,4,[{file,"application_master.erl"},{line,277}]}]}}
2022-03-03 16:43:01.378 [error] [ExHook] Load driver java failed: unknown_return_format
2022-03-03 16:43:01.379 [error]   crasher:
    initial call: application_master:init/4
    pid: <0.1626.0>
    registered_name: []
    exception exit: {bad_return,
                     {{emqx_extension_hook_app,start,[normal,[]]},
                      {'EXIT',
                       {{badmatch,{error,unknown_return_format}},
                        [{emqx_extension_hook_app,load_all_drivers,1,
                          [{file,
                            "/home/xzh/emqx-rel/_build/emqx/lib/emqx_extension_hook/src/emqx_extension_hook_app.erl"},
                           {line,66}]},
                         {emqx_extension_hook_app,start,2,
                          [{file,
                            "/home/xzh/emqx-rel/_build/emqx/lib/emqx_extension_hook/src/emqx_extension_hook_app.erl"},
                           {line,38}]},
                         {application_master,start_it_old,4,
                          [{file,"application_master.erl"},{line,277}]}]}}}}
      in function  application_master:init/4 (application_master.erl, line 138)
    ancestors: [<0.1625.0>]
    message_queue_len: 1
    messages: [{'EXIT',<0.1627.0>,normal}]
    links: [<0.1625.0>,<0.1266.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 987
    stack_size: 27
    reductions: 252
  neighbours:

直接写错误原因:

那是由于官网的emqx_extension_hook插件没有开通on_message_publish、on_message_delivered、on_message_acked这几个钩子的功能,导致初始化时候返回错误。

解决方法:

1、由于我需要以上的钩子,用看发kafka,所以更改emqx_extension_hook源码,增加以上钩子功能。

2、重新编译打包emqx-4.1.0版本,将依赖emqx_extension_hook改成修改后的代码,我将修改后的代码放在zhhxiong/emqx-exhook 了,

3、编译完成之后,就可以实现emqx接收到消息后就发送kafka了,实现emqx桥接kafka功能。

PS:不会编译emqx的也可以联系我(微信号:imerlgo),到时写篇编译的文章;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值