Просмотр исходного кода

fix: msg route result might be node or group(shared-sub)

JimMoen 1 год назад
Родитель
Сommit
0cf5650b2a
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      apps/emqx/src/emqx_broker.erl

+ 7 - 2
apps/emqx/src/emqx_broker.erl

@@ -344,8 +344,8 @@ route(Routes, Delivery = #delivery{message = Msg}, PersistRes) ->
     TraceRouteAttrs = #{
     TraceRouteAttrs = #{
         'route.from' => node(),
         'route.from' => node(),
         'route.matched_result' => emqx_utils_json:encode([
         'route.matched_result' => emqx_utils_json:encode([
-            #{node => Node, route => TF}
-         || {TF, Node} <- Routes
+            route_result({TF, RouteTo})
+         || {TF, RouteTo} <- Routes
         ])
         ])
     },
     },
     emqx_external_trace:msg_route(
     emqx_external_trace:msg_route(
@@ -357,6 +357,11 @@ route(Routes, Delivery = #delivery{message = Msg}, PersistRes) ->
         end
         end
     ).
     ).
 
 
+route_result({TF, Node}) when is_atom(Node) ->
+    #{node => Node, route => TF};
+route_result({TF, Group}) ->
+    #{group => Group, route => TF}.
+
 -spec do_route([emqx_types:route_entry()], emqx_types:delivery(), nil() | [persisted]) ->
 -spec do_route([emqx_types:route_entry()], emqx_types:delivery(), nil() | [persisted]) ->
     emqx_types:publish_result().
     emqx_types:publish_result().
 do_route([], #delivery{message = Msg}, _PersistRes = []) ->
 do_route([], #delivery{message = Msg}, _PersistRes = []) ->