栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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),到时写篇编译的文章;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758997.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号