最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

RabbitMQ custom plugin enabled but logs not appearing in docker desktop console - Stack Overflow

programmeradmin4浏览0评论

I'm developing a custom RabbitMQ plugin based on the example from the rabbitmq-metronome repository. Despite enabling and activating the plugin, I'm unable to see any logs from it either in the console or in the specified log file. Here are the steps I've taken:

  1. Docker container setup:
docker run -d --hostname my-rabbit --name ecomm-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
  1. Plugin compilation and setup:
rebar3 compile
rebar3 archive
docker cp C:\Work\Erlang\my_plugin\_build\default\plugins\my_plugin-0.1.0.ez ecomm-rabbit:/opt/rabbitmq/plugins/
docker exec -it ecomm-rabbit rabbitmq-plugins enable my_plugin
  1. Plugin list output:
# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status: * = running on rabbit@my-rabbit
 |/
[E*] my_plugin                         0.1.0
[  ] rabbitmq_amqp1_0                  4.0.6
[  ] rabbitmq_auth_backend_cache       4.0.6
[  ] rabbitmq_auth_backend_http        4.0.6
etc
  1. Source code:
  • rebar.config:
{erl_opts, [debug_info]}.
{deps, [
    {amqp_client, "4.0.3"},
    {rabbit_common, "4.0.3"}
]}.
{plugins, [
   {rebar3_archive_plugin, {git, ".git", {branch, "master"}}}
]}.
{plugins_dir, "ebin"}.
{rabbitmq_plugins, [
    {my_plugin, []}
]}.
  • my_plugin.erl:
-module(my_plugin).
-behaviour(application).

-export([start/2]).
-export([stop/1]).

start(_Type, _Args) ->
    rabbit_log:info("~~ hello world ~~"),
    my_plugin_sup:start_link().

stop(_State) ->
    ok.
  • my_plugin.app.src:
{application, my_plugin,
 [
  {description, "My First RabbitMQ Plugin"},
  {vsn, "0.1.0"},
  {modules, [my_plugin, my_plugin_sup, my_plugin_worker]},
  {registered, []},
  {applications, [kernel, stdlib, rabbit, amqp_client]},
  {env, [{exchange, <<"easy_net_q_rpc">>}]}
 ]}.
  • my_plugin_worker.erl:
-module(my_plugin_worker).
-behaviour(gen_server).

-export([start_link/0]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).

start_link() ->
    gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).

init([]) ->
    rabbit_log:info("My Plugin Worker Started!"),
    {ok, #{}}.

handle_call(_Request, _From, State) ->
    {reply, ok, State}.

handle_cast(_Msg, State) ->
    {noreply, State}.

handle_info(_Info, State) ->
    {noreply, State}.

terminate(_Reason, _State) ->
    rabbit_log:info("My Plugin Worker Terminated!"),
    ok.

code_change(_OldVsn, State, _Extra) ->
    {ok, State}.
  • my_plugin_sup.erl:
-module(my_plugin_sup).
-behaviour(supervisor).
-export([start_link/0, init/1]).

start_link() ->
    rabbit_log:info("~~ SUPERVISOR STARTING ~~"),
    supervisor:start_link({local, ?MODULE}, ?MODULE, _Arg = []).

init([]) ->
    rabbit_log:info("~~ SUPERVISOR INIT ~~"),
    {ok, {{one_for_one, 3, 10},
          [{my_plugin_worker,
            {my_plugin_worker, start_link, []},
            permanent,
            10000,
            worker,
            [my_plugin_worker]}
          ]}}.

Despite these steps, no logs appear from my plugin. I've checked the permissions and ensured that the plugin is enabled and running. It looks like the plugin is not enough to be enabled or it needs additional options/parameters. Any suggestions would be greatly appreciated.

Thank you.

发布评论

评论列表(0)

  1. 暂无评论