2016-09-06 41 views
0

我目前使用rabbit_client從我們的ejabberd發送隊列消息。這個消息是使用ejabberd鉤子觸發的。可以成功編譯和安裝,沒有任何問題。rabbitmq - erlang客戶端與ejabberd模塊集成

嘗試創建連接時,我一直在獲取相同的錯誤。讚賞如果有人可以提供有關問題的線索。

以下是用於連接和發佈消息的代碼。

{ok, Connection} = 
    amqp_connection:start(#amqp_params_network{host = "192.168.xx.xx", username = "username", password= "password"}), 
{ok, Channel} = amqp_connection:open_channel(Connection), 

amqp_channel:call(Channel, #'queue.declare'{queue = <<"hello">>}), 

amqp_channel:cast(Channel, 
        #'basic.publish'{ 
        exchange = <<"">>, 
        routing_key = <<"hello">>}, 
        #amqp_msg{payload = <<"Hello World!">>}), 
io:format(" [x] Sent 'Hello World!'~n"), 
ok = amqp_channel:close(Channel), 
ok = amqp_connection:close(Connection), 
ok. 

錯誤

{是undef,[{amqp_connection,啓動,[{amqp_params_network, 「用戶名」, 「口令」,< <「/">>,"192.168.xx。 XX 「未定義,0,0,10,無窮大,無,[#娛樂,#趣味],[],[]}],[]},{mod_mymod,send_internal_notice,4,[{文件,」 SRC/mod_mymod .erl 「},{線,67}]},{ejabberd_hooks,safe_apply,3,[{文件,」 SRC/ejabberd_hooks.erl「},{線,382}]},{ejabberd_hooks,run1,3,[{文件, 「SRC/ejabberd_hooks.erl」},{線,329}]},{ejabberd_c2s,presence_update,3,[{文件, 「SRC/ejabberd_c2s.erl」},{線,2068}]},{ejabberd_c2s, session_established2,2,[{文件,」 SRC/ejabberd_c2s.erl 「},{線,1249}]},{p1_fsm,HANDLE_MSG,10,[{文件,」 SRC/p1_fsm.erl「},{線,582}]},{proc_lib,init_p_do_apply,3- ,[{文件, 「proc_lib.erl」},{線,247}]}]}

回答

2

{undef,[{amqp_connection,start,...意味着該amqp_connection:start/1功能沒有定義(undef)。這通常意味着amqp_connection模塊不在Erlang代碼路徑中。

+0

感謝@Roger的提示。真的很感激它。 – lxnx

+0

對於有相同問題的人,爲了解決這個問題,你需要將rabbit_client和amqp_common放入$ ejabberd/lib目錄。下載鏈接:http://www.rabbitmq.com/releases/rabbitmq-erlang-client/ – lxnx