@@ -70,7 +70,11 @@ start(ConfigRaw) ->
7070 [delete_message_sql , select_message_sql , insert_subscription_sql , select_subscriptions_sql ],
7171 ConfigRaw
7272 ),
73- Context = Statements ,
73+ TopicFilters = emqx_omp_utils :topic_filters (ConfigRaw ),
74+ Context = #{
75+ statements => Statements ,
76+ topic_filters => TopicFilters
77+ },
7478 hook (Context ).
7579
7680% %-------------------------------------------------------------------
@@ -80,7 +84,7 @@ start(ConfigRaw) ->
8084on_client_connected (
8185 ClientInfo = #{clientid := ClientId },
8286 ConnInfo ,
83- #{select_subscriptions_sql := {Sql , ParamTemplate }} = _Context
87+ #{statements : = #{ select_subscriptions_sql := {Sql , ParamTemplate } }} = _Context
8488) ->
8589 ? SLOG (info , #{
8690 msg => omp_mysql_client_connected ,
@@ -119,7 +123,10 @@ on_session_subscribed(
119123 ok = fetch_and_deliver_messages (ClientId , Topic , Context ).
120124
121125insert_subscription (
122- ClientId , Topic , SubOpts , #{insert_subscription_sql := {Sql , ParamTemplate }} = _Context
126+ ClientId ,
127+ Topic ,
128+ SubOpts ,
129+ #{statements := #{insert_subscription_sql := {Sql , ParamTemplate }}} = _Context
123130) ->
124131 Qos = maps :get (qos , SubOpts , 0 ),
125132 Params = render_row (ParamTemplate , #{clientid => ClientId , topic => Topic , qos => Qos }),
@@ -136,7 +143,7 @@ insert_subscription(
136143 ok .
137144
138145fetch_and_deliver_messages (
139- ClientId , Topic , #{select_message_sql := {Sql , ParamTemplate }} = _Context
146+ ClientId , Topic , #{statements : = #{ select_message_sql := {Sql , ParamTemplate } }} = _Context
140147) ->
141148 Params = render_row (ParamTemplate , #{clientid => ClientId , topic => Topic }),
142149 _ =
@@ -154,7 +161,7 @@ fetch_and_deliver_messages(
154161 end ,
155162 ok .
156163
157- on_session_unsubscribed (#{clientid := ClientId }, Topic , Opts , _Env ) ->
164+ on_session_unsubscribed (#{clientid := ClientId }, Topic , Opts , _Context ) ->
158165 ? SLOG (info , #{
159166 msg => omp_mysql_session_unsubscribed ,
160167 clientid => ClientId ,
@@ -163,17 +170,17 @@ on_session_unsubscribed(#{clientid := ClientId}, Topic, Opts, _Env) ->
163170 }),
164171 ok .
165172
166- on_message_publish (Message = # message {topic = <<" $SYS/" , _ /binary >>}, _Env ) ->
173+ on_message_publish (Message = # message {topic = <<" $SYS/" , _ /binary >>}, _Context ) ->
167174 {ok , Message };
168- on_message_publish (Message , _Context ) ->
175+ on_message_publish (Message , #{ topic_filters : = TopicFilters } = _Context ) ->
169176 _ =
170- case emqx_message : qos (Message ) of
171- 0 ->
177+ case emqx_omp_utils : need_persist_message (Message , TopicFilters ) of
178+ false ->
172179 ? SLOG (debug , #{
173- msg => omp_mysql_message_publish_qos0 ,
180+ msg => omp_mysql_message_publish_skipped ,
174181 message => Message
175182 });
176- _ ->
183+ true ->
177184 MessageMap = message_to_map (Message ),
178185 Res = emqx_resource :query (? RESOURCE_ID , {insert_message , MessageMap }),
179186 ? SLOG (info , #{
@@ -187,9 +194,7 @@ on_message_publish(Message, _Context) ->
187194on_message_acked (
188195 _ClientInfo = #{clientid := ClientId },
189196 # message {id = MsgId } = Message ,
190- #{
191- delete_message_sql := {Sql , ParamTemplate }
192- }
197+ #{statements := #{delete_message_sql := {Sql , ParamTemplate }}} = _Context
193198) ->
194199 ? SLOG (info , #{
195200 msg => omp_mysql_message_puback ,
@@ -377,7 +382,6 @@ make_mysql_resource_config(#{<<"insert_message_sql">> := InsertMessageStatement}
377382
378383 {MysqlConfig , ResourceOpts }.
379384
380-
381385sync_query (Sql , Params ) ->
382386 emqx_resource :simple_sync_query (? RESOURCE_ID , {sql , Sql , Params , ? TIMEOUT }).
383387
0 commit comments