แฒแแแแก
- แแแแฎแแแแ-แแแกแฃแฎแ
- แแแแฎแแแแแก แแแจแแแแ แแแกแฃแฎแ
- แแแกแฃแฎแ แแแแฎแแแแแ
- แแแแแฅแแแงแแแแ-แแแแแฌแแ แ
- Inverted Publish-แแแแแฌแแ แ
- แแแแแแแแแก แแแแแฌแแแแแ
SOA, MSA แแ แจแแขแงแแแแแแแแแ
SOA, MSA แแ แแก แกแแกแขแแแฃแ แ แแ แฅแแขแแฅแขแฃแ แแแ, แ แแแแแแแช แแแแกแแแฆแแ แแแแ แจแแแแแแก แกแแกแขแแแแแแก แฌแแกแแแก, แฎแแแ แจแแขแงแแแแแแแแแ แฃแแ แฃแแแแแงแแคแก แแ แแแแขแแแแแก แแแแ แแแแฎแแ แชแแแแแแแกแแแแก.
แแ แแแแแ แแแ แแฃ แแ แกแแกแขแแแแก แแ แฅแแขแแฅแขแฃแ แแก แแแแฃแแแ แแแแชแแ. แแ แแแ แแแแแ แแขแฃแแ แแ แแแฅแขแแกแ แแ แแแแแแกแแกแแแแก แงแแแแแแ แแคแแฅแขแฃแ แ แแ แกแแกแแ แแแแแ แแ แแฅแขแแแแก แแแแแงแแแแแแก แแแแฎแ แ. แ แแแแ แ แแแ แแแแแแแช แแ แฃแแแ แแแแ แฉแแแ, แฃแแฏแแแแกแแ แจแแแฅแแแแ แกแแกแขแแแแก แแแแแแแ Unix-แแก แแแแแ แแฃแแแแแ: แแแแแแแแแขแแแ แแแแแแแแฃแ แ แแแแจแแ แแ, แแแกแฃแฎแแกแแแแแแแ แชแแแแแฃแ แแ แแแฃแแแแแ. API แแแแแแแแ แแกแ แฃแแแแแ แฃแแแ แขแแแแก แแแฅแแแแแแแแก แแ แแแฃแแแแแแ.
แจแแขแงแแแแแแแแแ แแ แแก, แ แแแแ แช แกแแฎแแแแแแ แฉแแแก, แจแแขแงแแแแแแแแแแก แแ แแแแ แ. แแแกแ แแแแแแ แ แแแแแแแ แจแแขแงแแแแแแแแแแก แแแฆแแแ แแ แแแแแแแแ. แแก แแแกแฃแฎแแกแแแแแแแแ แแแคแแ แแแชแแแก แแแแแแแแแก แแแขแแ แคแแแกแแแแ, แกแแกแขแแแแจแ แแแคแแ แแแชแแแก แแแแแชแแแแก แแแแแแฃแ แ แแ แฎแแแแก แคแแ แแแ แแแแแ, แแแ แจแ แฃแขแแแแชแแแกแ แแ แแแแแแแแกแแแแแ, แแกแแแ แกแแกแขแแแแก แแแแแแ แจแแชแแแแแแแก แแแแฃแจแแแแแแแ.
แแแกแแฏแ, แ แแแแแกแแช แฉแแแ แแแแแแแ แแแ, แแ แชแแแแแแก แแแแแฃแ แแแชแแแก แแแฃแฌแแแก แแ แจแแชแแแแแก rabbitmq. แแแกแ แซแแ แแแแแ แแแฎแแกแแแแแแแแแ:
- แแแกแขแ แแแฃแชแแ.
แแแชแแแแก แฌแแ แขแแแแแ แจแแแซแแแแ แจแแแฅแแแแก แงแแแแ แแแแกแขแแ แฃแ แแแแแซแแ, แ แแช แจแแแซแแแแ แแฎแแแก แแ แแแแแแ, แ แแแแแแช แแแ แแงแแแแแก. - แฒกแแแแ แขแแแ.
แคแแแฃแกแแ แแแ แฅแแแแแก แแแแแก แแแแแแฃแแแแแ แจแแแชแแ แแแแแ แแ แแแแแงแแแแแแก แแแ แขแแแแแแแ. - แฃแแแแแกแ แจแแกแ แฃแแแแ.
แฉแแแ แแ แแชแแแแแแ แแแแแแแแ แแ rabbitmq-แแก แคแฃแแฅแชแแแแแแแแ, แแ แแแแ แแแแแแงแแ แแฎแแแแ แแ แฅแแขแแฅแขแฃแ แฃแแ แแ แกแแขแ แแแกแแแ แขแ แคแแแ, แ แแแแแแช แแแฅแกแแแแแฃแ แแ แแแ แขแแแแ แแฏแแแแแ OTP-แจแ แแ แแแแแแฃแแแแแ แแแงแแแแแ แฎแแ แฏแแแก. - แแแฅแแแแแแ
แแแแแแฃแ แกแแ แแแกแก แจแแฃแซแแแ แแ แแแแแ แแแชแแแแก แจแแแแแแแก แแแแ แแแแแแแ. - แแแแซแแแแแ แแแแแแแแก แแแฎแแแแแ.
- แแแกแจแขแแแฃแ แแแ.
แจแแขแงแแแแแแแแแ แแแ แแแแ แแแแแแแชแแแกแแแ แแ แแแ. แแแขแแแ แแแแก แแแขแแแแกแแแ แแ แแแ, แจแแแแซแแแแ แแแแแแขแแแแ แแแชแแแแก แฌแแ แขแแแแแ แชแแแแแฃแ แแแแฅแแแแแแ.
แแแแแแขแแ แ แแแแแก แแ แแแแแแแแแก แแแแแกแแแ แแกแแ, แแแขแ-แแ แแแฅแขแแแ แแแ แแแ แจแแแคแแ แแแ แแแแแแแฅแกแฃแ Erlang/Elixir แกแแกแขแแแแแก. แแ แแแฅแขแแก แงแแแแ แแแแ แแแแแแแกแแแฃแแแ แแ แ แกแแชแแแจแ - แฅแแแแแก แแ แแแฅแขแ. แแแแแแ แแฃแแแ, แแแแ แแกแแ แแแกแแแ แแแฅแกแแแแแฃแ แแ แแแแแแ แแแฃแแแ แแ แแฎแแ แชแแแแแแแ แแแ แขแแ แแแแ แแชแแแแก, แ แแแแแแแช แแแกแฃแฎแแกแแแแแแแแ แชแแแแแฃแ แกแฃแแแแฅแขแแ. แแ แแแแแแแแ แแแแแแแ แแแแแ แกแแกแขแแแแก API-แแก แจแแแแ แฉแฃแแแแ, แแแ แขแแแแ แชแแแแแแแแแแก แจแแขแแแ, แแแกแแฎแแ แฎแแแแแแ แแ แแแฃแแแก แแ แแแขแแแ แแชแแแก แขแแกแขแแแแก แฉแแฌแแ แ.
แกแแกแขแแแแก แแแแแแแแแขแแแ แฃแ แแแแ แแฅแแแแแแแ แฃแจแฃแแแแ แแ แแ แแแแ แแก แแแจแแแแแแ. แจแแขแงแแแแแแแแแแก แแแ แกแแแฅแขแแแแแแ, แแแแแแฃแ แกแแ แแแกแก แแฅแแก แชแฎแแแ แแแแก แ แแแแแแแแ แแขแแแ:
- แกแแ แแแกแแก แแแแชแแแแแแแชแแ.
แแ แแขแแแแ แกแแ แแแกแแก แแแแแแฎแแ แชแแแแแแแแ แแ แแชแแกแ แแ แแแแแแแแแแฃแแแแแแ แแแแคแแแฃแ แแ แแแฃแแ แแ แแแจแแแแฃแแแ. - แแแชแแแแก แฌแแ แขแแแแก แจแแฅแแแ.
แกแแ แแแกแก แจแแฃแซแแแ แแแแแแงแแแแก แกแขแแขแแแฃแ แ แแแชแแแแก แฌแแ แขแแแ, แ แแแแแแช แแแแแแแแฃแแแ แแแแแซแแก แแแแคแแแฃแ แแชแแแจแ, แแ แจแแฅแแแแก แแแชแแแแก แฌแแ แขแแแแแ แแแแแแแฃแ แแ. - แกแแ แแแกแแก แ แแแแกแขแ แแชแแ.
แแแแกแแแแแก, แ แแ แกแแ แแแกแแ แแแแฎแแแแแก แแแแฎแแแแแแ, แแก แฃแแแ แแแ แแแแกแขแ แแ แแแก แแแชแแแแก แแฃแแฅแขแจแ. - แแแ แแแแฃแ แ แคแฃแแฅแชแแแแแ แแแ.
แกแแ แแแกแ แแฌแแ แแแแแก แกแแกแแ แแแแแ แกแแแฃแจแแแก. - แกแแแฃแจแแแก แแแกแ แฃแแแแ.
แจแแกแแซแแแแแแแ 2 แขแแแแก แแแแแ แแแ: แแแ แแแแฃแ แ แแ แแแแแฃแแแแแแ. แแแ แแแแฃแ แ แแฃแจแแแแแกแแก แกแแ แแแกแ แแแแแจแฃแแแ แแแชแแแแก แแฃแแฅแขแแแแ แแ แฉแแ แแแแ. แกแแแแแแแแ แกแแขแฃแแชแแแแจแ, แจแแขแงแแแแแแแแแ แแฎแแ แชแแแแแแก แแ แ-แแ แ แฌแแ แฃแแแขแแแแ แกแแ แแแขแก.
แกแแแแแแ แ แแฃแแแ แแแแแแงแฃแ แแแ, แแแแ แแ แแแแ แแ แช แแกแ แกแแจแแแแแแ. แแแแแก แแแแแแแแแแ แแแแแแขแแ แแแแ แแแชแแแฃแแแ แจแแแแแแแแแก แแแแแแแจแ แชแแขแ แแแแแแแแแแแ.
แแแชแแแแแแก
แแแชแแแแก แฌแแ แขแแแ แแ แแก แจแแขแงแแแแแแแแแแก แแ แแชแแกแ, แ แแแแแแช แแฎแแ แชแแแแแแก แจแแขแงแแแแแแแแแแก แจแแแแแแแก แแแแแแแแแขแแแแแ แฃแ แแแแ แแฅแแแแแแแก แแแแแแแก. แฅแแแแแ แแแงแแแแแ แงแแแแ แแแแแแแแจแ แแแแแแแแแขแแแ แฃแ แแแแ แแฅแแแแแแแ แแแชแแแแก แฌแแ แขแแแแแแก แแแจแแแแแแ, แ แแแแแแ แแแแแแแแชแแ แฅแแแแก แจแแขแงแแแแแแแแแก.
แจแแขแงแแแแแแแแแแก แแแชแแแแก แแแแฃแจแแแ (MEPs)
แแแแแแแฃแ แแ, แแแชแแแแก แแแแฃแจแแแ แจแแแซแแแแ แแแแงแแก แแ แแฎแ แแ แแ แชแแแแฎแ แแแแ. แแแ แแแแ แแฃแแแกแฎแแแแก แแแกแฃแฎแก แจแแแแกแฃแ แจแแขแงแแแแแแแแแ, แแแแ แ แแ แ. แแแแแแข-แกแแ แแแ แแก แแ แฅแแขแแฅแขแฃแ แแจแ แแ แแฎแ แแแ แแแแฃแจแแก แแแแกแแแฃแ แ แแแแแแแแแ แแแแฎแแแแ-แแแกแฃแฎแแก แแแแฃแจแ. แแแแแ แจแแแฎแแแแ แจแแแแแแก แแ แแแก แชแแแแแแแแแก.
แแแแฎแแแแ-แแแกแฃแฎแ แแ RPC
RPC แแแแแแงแแแแแ แแแจแแ, แ แแแแกแแช แแแญแแ แแแแ แแแกแฃแฎแแก แแแฆแแแ แกแฎแแ แแ แแชแแกแแกแแแ. แแก แแ แแชแแกแ แจแแแซแแแแ แแแแแแแแ แแแแแแก แแแแแ แแแแแซแแ แแ แแแแแแแแแฃแแ แแงแแก แกแฎแแ แแแแขแแแแแขแแ. แฅแแแแแ แแแชแแแฃแแแ แแแแแแขแกแ แแ แกแแ แแแ แก แจแแ แแก แฃแ แแแแ แแฅแแแแแแแก แแแแแ แแแ แจแแขแงแแแแแแแแแแก แกแแจแฃแแแแแแ.
แแแแแแแแ แจแแขแงแแแแแแแแแ แกแ แฃแแแแ แแกแแแฅแ แแแฃแแแ, แแแแแแขแแกแแแแก แแแชแแแ แแแงแแคแแแแ 2 แคแแแแ:
-
แแแแฎแแแแแก แแแแแแแแ
messaging:request(Exchange, ResponseMatchingTag, RequestDefinition, HandlerProcess).
แแแชแแแ โ แแแชแแแแก แฌแแ แขแแแแก แฃแแแแแแฃแ แ แกแแฎแแแ
ResponseMatchingTag โ แแแแแแแแ แแแ แแขแแแแขแ แแแกแฃแฎแแก แแแกแแแฃแจแแแแแแแ. แแแแแแแแแ, แกแฎแแแแแกแฎแแ แแแแฎแแแ แแแแแก แแฃแแแแแแ แ แแแแแแแแ แแแแแขแฃแ แ แแแแฎแแแแแก แแแแแแแแแก แจแแแแฎแแแแแจแ.
แแแแฎแแแแแก แแแแแแ แขแแแ - แแแแแฎแแแแ แแ แแแแ
HandlerProcess โ แแแแแฃแจแแแแแแแก PID. แแก แแ แแชแแกแ แแแแฆแแแก แแแกแฃแฎแก แกแแ แแแ แแกแแแ. -
แแแกแฃแฎแแก แแแแฃแจแแแแแ
handle_info(#'$msg'{exchange = EXCHANGE, tag = ResponseMatchingTag,message = ResponsePayload}, State)
ResponsePayload - แกแแ แแแ แแก แแแกแฃแฎแ.
แกแแ แแแ แแกแแแแก, แแ แแชแแกแ แแกแแแ แจแแแแแแ 2 แคแแแแกแแแ:
- แแแชแแแแก แฌแแ แขแแแแก แแแแชแแ แแแ
- แแแฆแแแฃแแ แแแแฎแแแแแแแก แแแแฃแจแแแแแ
แแแแแ แแแฃแกแขแ แแชแแแ แแก แจแแแแแแ แแแแแ. แแแฅแแแ, แฉแแแ แแแญแแ แแแแ แแแ แขแแแ แกแแ แแแกแแก แแแแแ แแแ, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แแ แแ แแฃแกแขแ แแ แแแก แแแแแแก.
แกแแ แแแ แแก แแแแ
แแแแแ แแแแแกแแแฆแแ แแ แกแแ แแแกแแก API api.hrl-แจแ:
%% =====================================================
%% entities
%% =====================================================
-record(time, {
unixtime :: non_neg_integer(),
datetime :: binary()
}).
-record(time_error, {
code :: non_neg_integer(),
error :: term()
}).
%% =====================================================
%% methods
%% =====================================================
-record(time_req, {
opts :: term()
}).
-record(time_resp, {
result :: #time{} | #time_error{}
}).
แแแแแ แแแแแกแแแฆแแ แแ แกแแ แแแกแแก แแแแขแ แแแแ แ time_controller.erl-แจแ
%% ะ ะฟัะธะผะตัะต ะฟะพะบะฐะทะฐะฝ ัะพะปัะบะพ ะทะฝะฐัะธะผัะน ะบะพะด. ะััะฐะฒะธะฒ ะตะณะพ ะฒ ัะฐะฑะปะพะฝ gen_server ะผะพะถะฝะพ ะฟะพะปััะธัั ัะฐะฑะพัะธะน ัะตัะฒะธั.
%% ะธะฝะธัะธะฐะปะธะทะฐัะธั gen_server
init(Args) ->
%% ะฟะพะดะบะปััะตะฝะธะต ะบ ัะพัะบะต ะพะฑะผะตะฝะฐ
messaging:monitor_exchange(req_resp, ?EXCHANGE, default, self())
{ok, #{}}.
%% ะพะฑัะฐะฑะพัะบะฐ ัะพะฑััะธั ะฟะพัะตัะธ ัะฒัะทะธ ั ัะพัะบะพะน ะพะฑะผะตะฝะฐ. ะญัะพ ะถะต ัะพะฑััะธะต ะฟัะธั
ะพะดะธั, ะตัะปะธ ัะพัะบะฐ ะพะฑะผะตะฝะฐ ะตัะต ะฝะต ะทะฐะฟัััะธะปะฐัั.
handle_info(#exchange_die{exchange = ?EXCHANGE}, State) ->
erlang:send(self(), monitor_exchange),
{noreply, State};
%% ะพะฑัะฐะฑะพัะบะฐ API
handle_info(#time_req{opts = _Opts}, State) ->
messaging:response_once(Client, #time_resp{
result = #time{ unixtime = time_utils:unixtime(now()), datetime = time_utils:iso8601_fmt(now())}
});
{noreply, State};
%% ะทะฐะฒะตััะตะฝะธะต ัะฐะฑะพัั gen_server
terminate(_Reason, _State) ->
messaging:demonitor_exchange(req_resp, ?EXCHANGE, default, self()),
ok.
แแแแแแขแแก แแแแ
แกแแ แแแกแแกแแแแก แแแแฎแแแแแก แแแกแแแแแแแแ, แจแแแแซแแแแ แแแ แแแแ แจแแขแงแแแแแแแแแแก แแแแฎแแแแแก API แแแแแแขแแก แแแแแกแแแแ แแแแแแแก:
case messaging:request(?EXCHANGE, tag, #time_req{opts = #{}}, self()) of
ok -> ok;
_ -> %% repeat or fail logic
end
แแแแแฌแแแแแฃแ แกแแกแขแแแแจแ, แแแแแแแแแขแแแแก แแแแคแแแฃแ แแชแแ แจแแแซแแแแ แแงแแก แซแแแแแ แแแแกแฎแแแแแแฃแแ แแ แแแแฎแแแแแก แแ แแก, แจแแขแงแแแแแแแแแ แจแแแซแแแแ แฏแแ แแ แแแแฌแงแแก, แแ แกแแ แแแกแแก แแแแขแ แแแแ แ แแ แแฅแแแแ แแแแ แแแแฎแแแแแก แแแแกแแฎแฃแ แแแแกแแแแก. แแแแขแแ, แฉแแแ แฃแแแ แจแแแแแแฌแแแ แจแแขแงแแแแแแแแแแก แแแกแฃแฎแ แแ แแแแแแแแ แแ แฌแแ แฃแแแขแแแแแแแก แจแแแแฎแแแแ.
แฌแแ แแแขแแแฃแแ แแแแแแแแแก แจแแแแแ แแแแแแขแ แแแแฆแแแก แแแกแฃแฎแก แแ แจแแชแแแแแก แกแแ แแแกแแกแแแ.
แแแแแแฎแแแแ แแ แแแ แจแแแแฎแแแแ handle_info-แจแ:
handle_info(#'$msg'{exchange = ?EXCHANGE, tag = tag, message = #time_resp{result = #time{unixtime = Utime}}}, State) ->
?debugVal(Utime),
{noreply, State};
handle_info(#'$msg'{exchange = ?EXCHANGE, tag = tag, message = #time_resp{result = #time_error{code = ErrorCode}}}, State) ->
?debugVal({error, ErrorCode}),
{noreply, State};
แแแแฎแแแแแก แแแจแแแแ แแแกแฃแฎแ
แฃแแฏแแแแกแแ แแแแ แแแ แแแแ แแแแ แจแแขแงแแแแแแแแแแก แแแแแแแแแก. แแแแแแ แแแแแแแแแแฃแแ แแแแแ แกแแกแขแแแแก แ แแแแแ แแแ แแ แกแขแแแแแฃแ แ แแแฅแแแแแแ. แแฃ แจแแแแแฎแแแแ แแแกแฃแฎแ แแแ แแแฎแกแแแ แแแแก แแแแแแแก, แแแจแแ แแแกแ แแแฌแแแแแแ แแแงแแคแ แกแแแแแแแแฃแแแ.
แแแแ แแแแแชแแ แแแแชแแ แแกแแแ แจแแแแฎแแแแแแแก แ แแแแแแแแ แแแแแแแแ:
- แแแแแแแแแขแแแ แชแแแแแ แแ แแแแ แแแแแชแแแแแก, แ แแแแ แแชแแ แคแแแแแแ. แแแกแฃแฎแแก แแชแแ แ แแแฌแแแแแแ แแแงแแคแ แแแฎแแแ แแแแ แแคแแฅแขแฃแ แแ แแแฃแจแแแ แแแแแกแแแแ แ แแแแแก แคแแแแแแแแ แแ แแแแแแแ แแแชแแแแ แแแฎแกแแแ แแแแก แแแแแแแแ.
- แแแแชแฎแแแแแแแ. แแแแแแแแแ, แฉแแแ แฃแแแ แแแแ แฉแแแ แงแแแแ แฉแแแแฌแแ แ แแแแแชแแแแ แแแแแจแ แแ แกแแแฃแแ แฃแแแ แแแแแ แ แชแฎแ แแแแแแ แแ แแแแแแแขแแแแ แกแฎแแ แแแแแแแแแขแจแ.
แแ แแ แแแกแฃแฎแแแก แแแแแแแขแแแก แแฃแฌแแแแ. แแแแแกแแแแ แจแแแแฎแแแแแจแ, 1024 MB 1 แจแแขแงแแแแแแแ แฃแแแแแกแแ, แแแแ แ แแ แแ 1 GB.
Erlang แแแแกแขแแ แจแ แแแฆแแแ แแแแแขแแแแ แกแแ แแแแแแก - แแแแชแแ แแแ แแแขแแแ แแแแก แแแชแแแแก แฌแแ แขแแแกแ แแ แฅแกแแแแ, แ แแแแแ แแแกแฃแฎแแแ แแแฃแงแแแแแแแแ แแแแแแแแแ แแแแฆแแแก, แแแชแแแแก แฌแแ แขแแแแก แแแแ แแแก แแแแแ.
แแแกแฃแฎแ แแแแฎแแแแแ
แแก แแ แแก RPC แแแแฃแจแแก แกแแแแแแ แแจแแแแแ แแแแแคแแแแชแแ แแแแแแแฃแ แ แกแแกแขแแแแแแก แจแแกแแฅแแแแแแ.
แแแแแฅแแแงแแแแ-แแแแแฌแแ แ (แแแแแชแแแแ แแแแแฌแแแแแแก แฎแ)
แแแแแแแแแแ แแ แแแแขแแ แแแฃแแ แกแแกแขแแแแแ แแแ แแแแฎแแแ แแแแแแก แแแแฌแแแแแ แ แแแแ แช แแ แแแแแชแแแแแ แแแแ แแฅแแแแ. แแแ แแแแ, แกแแกแขแแแแแ แฃแคแ แ แแแแ แแแแแแ แแแซแแแก แแแแแแแกแแแ, แแแแ แ แแแแแแแแก แแ แแแแแแแแฎแแแก แแแแแแแกแแแ. แแก แคแฃแแฅแชแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแแ แแแชแแแแ แ แแกแฃแ แกแแแแก แคแแแแแแ แแแแแชแแแแ แแฃแแแแแ แแแแฎแแแแแ แแ แแแแแแแแแ.
แคแแแฃแ แแจแ แแแฉแแแแแแแ แแแแแ แแขแฃแแ แแแแแก แแแแแฌแแ แแแ แแแแฎแแแ แแแแแแแกแแแแก แจแแขแงแแแแแแแแก แแแแ แชแแแแแแก แแ แแชแแกแ.
แแ แแแแฃแจแแก แแแแแงแแแแแแก แแแแกแแแฃแ แ แแแแแแแแแแแ แแแแแแแ แแแแแก แแแแแฌแแแแแ: แแแแแจแแก แกแแแงแแ แ แแแแแแฃแขแแ แฃแ แแแแแจแแแจแ, แแแแ แแก แแแแแชแแแแแ แแแ แแแแแ, แกแแกแแ แแแแแ แแแคแแ แแแชแแ แแแแแชแแแแ แแ แฎแแแจแ.
แแแแแ แจแแแฎแแแแ แกแแแแแแแแขแ แแแแก:
init(_Args) ->
%% ะฟะพะดะฟะธััะฒะฐะตะผัั ะฝะฐ ะพะฑะผะตะฝะฝะธะบ, ะบะปัั = key
messaging:subscribe(?SUBSCRIPTION, key, tag, self()),
{ok, #{}}.
handle_info(#exchange_die{exchange = ?SUBSCRIPTION}, State) ->
%% ะตัะปะธ ัะพัะบะฐ ะพะฑะผะตะฝะฐ ะฝะตะดะพัััะฟะฝะฐ, ัะพ ะฟััะฐะตะผัั ะฟะตัะตะฟะพะดะบะปััะธัััั
messaging:subscribe(?SUBSCRIPTION, key, tag, self()),
{noreply, State};
%% ะพะฑัะฐะฑะฐััะฒะฐะตะผ ะฟัะธัะตะดัะธะต ัะพะพะฑัะตะฝะธั
handle_info(#'$msg'{exchange = ?SUBSCRIPTION, message = Msg}, State) ->
?debugVal(Msg),
{noreply, State};
%% ะฟัะธ ะพััะฐะฝะพะฒะบะต ะฟะพััะตะฑะธัะตะปั - ะพัะบะปััะฐะตะผัั ะพั ัะพัะบะธ ะพะฑะผะตะฝะฐ
terminate(_Reason, _State) ->
messaging:unsubscribe(?SUBSCRIPTION, key, tag, self()),
ok.
แฌแงแแ แแก แจแแฃแซแแแ แแแ แแแแก แคแฃแแฅแชแแ, แ แแแ แแแแแแฅแแแงแแแก แจแแขแงแแแแแแแ แแแแแกแแแแ แแแกแแฎแแ แฎแแแแ แแแแแแแก:
messaging:publish_message(Exchange, Key, Message).
แแแชแแแ - แแแชแแแแก แฌแแ แขแแแแก แแแกแแฎแแแแแ,
แซแแ แแแแแ - แแแ แจแ แฃแขแแแแชแแแก แแแกแแฆแแแ
Message - แขแแแ แแแแฌแแแแ
Inverted Publish-แแแแแฌแแ แ
pub-sub-แแก แแแคแแ แแแแแแ, แจแแแแซแแแแ แแแแฆแแ แฎแ-แขแงแแแกแแแแก แแแกแแฎแแ แฎแแแแแ แแแแฃแจแ. แฌแงแแ แแแแแกแ แแ แแแแฎแแแ แแแแแแแก แแแแ แแแ แจแแแซแแแแ แกแ แฃแแแแ แแแแกแฎแแแแแแฃแแ แแงแแก. แคแแแฃแ แ แแแแฉแแแแแแก แจแแแแฎแแแแแก แแ แ แแแแฎแแแ แแแแแแแ แแ แ แแแแแแแแ แฌแงแแ แแกแแแ.
แแแแแแแแแก แแแแแฌแแแแแแก แแแแฃแจแ
แแแแฅแแแก แงแแแแ แแ แแแฅแขแ แแแแชแแแก แแแแแแแแฃแ แแแแฃแจแแแแแแก แแแแชแแแแแก, แ แแแแ แแชแแ แแแแแ แแจแแแแก แแแแแ แแ แแแ, แจแแขแงแแแแแแแแแแก แแแฌแแแแแ แแ แแแกแแแ แแฎแแ แแก แกแแกแขแแแแแแแแ แแแแแชแแแแแแก แแแซแแแแ. แแ แแแแชแแแแแแก แจแแแกแ แฃแแแแแแ แกแแกแขแแแแก แแแแขแแ แฃแแแ แแแแแแ แแแ แขแแแแ แจแแแซแแแแ แแแกแจแขแแแแ แแแก แแแแแฃแจแแแแแแแแแก แแแแแขแแแแ. แฉแแแแแแแก แ แฉแแแ แแฎแแแแ แแ แแชแแกแแ แแแแก แแแแกแขแแ แแก แฉแแแแงแแแแแแแ แแ แแแแแแแแแแแก แแแแแแ แแ แแแแแแแฌแแแแแ แแแ แจแแ แแก.
แแแแแ แจแแแฎแแแแ แกแแขแฃแแชแแแแก, แ แแแแแแแช แฌแแ แแแแฅแแแแแ 3 แแแแแฃแจแแแแแแแก แแแแแแแแแก แแแแแงแแแแแแ. แแแแแแแแแก แแแแแฌแแแแแแก แแขแแแแแช แแ แแแแแ แกแแแแแฎแ แแแแแฌแแแแแแก แกแแแแ แแแแแแแแแกแ แแ แแแแแฃแจแแแแแแแแแก แแแแแญแแ แแแแแก แจแแกแแฎแแ. แแ แแฎแ แแแ แแแแแฌแแแแแ แแฅแแแแ แแแกแฃแฎแแกแแแแแแแ แกแแแแ แแแแแแแแแแ แแ แแแแแฃแจแแแแแแแแแก แแแแแขแแแ แแแแก แกแแขแฃแแชแแแก แแแแแแแ แแชแแแแแแก แแแแแแ, แจแแแแแแแแแแแแ แจแแแฆแฃแแแแก prefetch_limit. แแแ แแแแแแแ แแแ แแแแแจแ prefetch_limit แฎแแแก แจแแฃแจแแแก แแ แ แแแแแฃแจแแแแแแแก แงแแแแ แแแแแแแแแก แแแฆแแแแจแ.
แจแแขแงแแแแแแแแแ แแแ แแแแก แ แแแแแก แแ แแแแฃแจแแแแแแก แแ แแแ แแขแแขแก. แแ แแชแแกแแ แแแ แแฆแแแแ แแแแแแแแแแก แฉแแกแแแแกแแแแแแ. แแแแแแแแ แจแแแซแแแแ แฌแแ แแแขแแแแ แแ แฌแแ แฃแแแขแแแแแ แแแกแ แฃแแแแก:
messaging:ack(Tack)
- แแแแแแซแแฎแ, แแฃ แจแแขแงแแแแแแแ แฌแแ แแแขแแแแ แแแแฃแจแแแแmessaging:nack(Tack)
- แแซแแฎแแ แงแแแแ แกแแแแแแแแ แกแแขแฃแแชแแแจแ. แแแแแแแแแก แแแแ แฃแแแแแก แจแแแแแ, แจแแขแงแแแแแแแแแ แแแก แกแฎแแ แแแแแฃแจแแแแแแแก แแแแแกแชแแแก.
แแแแฃแจแแแ, แแแแแแแฅแกแฃแ แ แแแ แชแฎแ แแแฎแแ แกแแแ แแแแชแแแแก แแแแฃแจแแแแแแกแแก: แแ แแชแแกแแ แ 1, แแแแแแแแแก แแแฆแแแแก แจแแแแแ, แแแแ แแแจแ แแแฐแงแแ แแแชแแแแก แแฃแแฅแขแก แ แแแแแก แจแแขแงแแแแแแแแก แแ แ. แแ แจแแแแฎแแแแแจแ, แแแชแแแแก แฌแแ แขแแแ แแแแแกแชแแแก แแแแแแแแแก แกแฎแแ แแแแแฃแจแแแแแแแก แแแก แจแแแแแ, แ แแช แแแแฌแฃแ แแแก แแแแ แแแแแฌแฃแ แแแ. แ แแขแแแฆแแช, แแแแแฃแจแแแแแแแแ 3-แแ แแแแขแแแ แแแแแแแแ แแ แแแแแแแแ แแแแ; แจแแแแแแ, แแแแแแแแ แแกแแแ แแแแแแชแ แกแฎแแ แแแแแฃแจแแแแแแแก, แ แแแแแแแช แฌแแ แแแขแแแแ แแแแกแ แฃแแ แแแ.
แฌแแแแกแฌแแ แ แ แแแแฃแแ
แฉแแแ แแแแแจแฃแฅแแ แแแแแฌแแแแแฃแแ แกแแกแขแแแแแแก แซแแ แแแแแ แกแแแจแแแแแแ แแแแแแแ แแ แแแแแฆแแ แแแแ แแแแแงแแแแแแก แซแแ แแแแแ แแแแแแ Erlang/Elixir-แจแ.
แซแแ แแแแแ แจแแแแแแแแแก แแแแแแแแชแแแ, แแฅแแแ แจแแแแซแแแแ แจแแฅแแแแ แ แแฃแแ แแแ แแแแแแแแ แฌแแ แแแจแแแแแ แแ แแแแแแแแแก แแแแแกแแญแ แแแแ.
แกแแ แแแก แแแกแแแแแ แแแฌแแแจแ แแแแแแฎแแแแแ แกแแ แแแกแแแแก แแ แแแแแแแแแก, แแแ แจแ แฃแขแแแแชแแแกแ แแ แแแแแแแแกแแแแก แแแแแ แกแแแแแฎแแแก, แแกแแแ แแแกแแฃแแ แแแ แแแกแจแขแแแฃแ แแแแก แแ แแฅแขแแแฃแ แแฎแแ แแแ แแ แกแแกแขแแแแแแก แฎแแ แแแแแแแก แขแแแแ แแแขแแแแแ.
แแแแ แ แแแฌแแแแก แแแกแแกแ แฃแแ.
แกแฃแ แแแ
แแแฃแกแขแ แแชแแแแ แแแแแแแแแฃแแ websequencediagrams.com-แแก แแแแแงแแแแแแ
แฌแงแแ แ: www.habr.com