Skip to content

Commit 7846653

Browse files
committed
AMQP address v2
1 parent e4da70d commit 7846653

File tree

25 files changed

+1475
-412
lines changed

25 files changed

+1475
-412
lines changed

deps/amqp10_client/src/amqp10_client_session.erl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,11 @@ make_target(#{role := {receiver, _Source, _Pid}}) ->
662662
#'v1_0.target'{};
663663
make_target(#{role := {sender, #{address := Address} = Target}}) ->
664664
Durable = translate_terminus_durability(maps:get(durable, Target, none)),
665-
#'v1_0.target'{address = {utf8, Address},
665+
TargetAddr = case is_binary(Address) of
666+
true -> {utf8, Address};
667+
false -> Address
668+
end,
669+
#'v1_0.target'{address = TargetAddr,
666670
durable = {uint, Durable}}.
667671

668672
max_message_size(#{max_message_size := Size})

deps/amqp10_client/test/system_SUITE.erl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ init_per_suite(Config) ->
8383
]).
8484

8585
end_per_suite(Config) ->
86-
rabbit_ct_helpers:run_teardown_steps(Config,
86+
rabbit_ct_helpers:run_teardown_steps(
87+
Config,
8788
[
8889
fun stop_amqp10_client_app/1
8990
]).

deps/rabbit/BUILD.bazel

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,6 +1272,7 @@ rabbitmq_integration_suite(
12721272

12731273
rabbitmq_integration_suite(
12741274
name = "amqp_auth_SUITE",
1275+
shard_count = 2,
12751276
additional_beam = [
12761277
":test_event_recorder_beam",
12771278
],
@@ -1280,6 +1281,14 @@ rabbitmq_integration_suite(
12801281
],
12811282
)
12821283

1284+
rabbitmq_integration_suite(
1285+
name = "amqp_address_SUITE",
1286+
shard_count = 2,
1287+
runtime_deps = [
1288+
"//deps/rabbitmq_amqp_client:erlang_app",
1289+
],
1290+
)
1291+
12831292
rabbitmq_integration_suite(
12841293
name = "amqp_credit_api_v2_SUITE",
12851294
runtime_deps = [

deps/rabbit/app.bzl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2220,3 +2220,12 @@ def test_suite_beam_files(name = "test_suite_beam_files"):
22202220
erlc_opts = "//:test_erlc_opts",
22212221
deps = ["//deps/rabbit_common:erlang_app"],
22222222
)
2223+
erlang_bytecode(
2224+
name = "amqp_address_SUITE_beam_files",
2225+
testonly = True,
2226+
srcs = ["test/amqp_address_SUITE.erl"],
2227+
outs = ["test/amqp_address_SUITE.beam"],
2228+
app_name = "rabbit",
2229+
erlc_opts = "//:test_erlc_opts",
2230+
deps = ["//deps/amqp10_common:erlang_app", "//deps/rabbitmq_amqp_client:erlang_app"],
2231+
)

deps/rabbit/src/mc.erl

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -146,20 +146,17 @@ init(Proto, Data, Anns) ->
146146
init(Proto, Data, Anns, #{}).
147147

148148
-spec init(protocol(), term(), annotations(), environment()) -> state().
149-
init(Proto, Data, Anns0, Env)
150-
when is_atom(Proto)
151-
andalso is_map(Anns0)
152-
andalso is_map(Env) ->
149+
init(Proto, Data, Anns0, Env) ->
153150
{ProtoData, ProtoAnns} = Proto:init(Data),
154-
Anns = case maps:size(Env) == 0 of
155-
true ->
156-
Anns0;
157-
false ->
158-
Anns0#{env => Env}
159-
end,
151+
Anns1 = case map_size(Env) == 0 of
152+
true -> Anns0;
153+
false -> Anns0#{env => Env}
154+
end,
155+
Anns2 = maps:merge(ProtoAnns, Anns1),
156+
Anns = set_received_at_timestamp(Anns2),
160157
#?MODULE{protocol = Proto,
161158
data = ProtoData,
162-
annotations = set_received_at_timestamp(maps:merge(ProtoAnns, Anns))}.
159+
annotations = Anns}.
163160

164161
-spec size(state()) ->
165162
{MetadataSize :: non_neg_integer(),
@@ -196,7 +193,7 @@ take_annotation(_Key, BasicMessage) ->
196193
-spec set_annotation(ann_key(), ann_value(), state()) ->
197194
state().
198195
set_annotation(Key, Value, #?MODULE{annotations = Anns} = State) ->
199-
State#?MODULE{annotations = maps:put(Key, Value, Anns)};
196+
State#?MODULE{annotations = Anns#{Key => Value}};
200197
set_annotation(Key, Value, BasicMessage) ->
201198
mc_compat:set_annotation(Key, Value, BasicMessage).
202199

@@ -313,7 +310,7 @@ property(_Property, _BasicMsg) ->
313310

314311
-spec set_ttl(undefined | non_neg_integer(), state()) -> state().
315312
set_ttl(Value, #?MODULE{annotations = Anns} = State) ->
316-
State#?MODULE{annotations = maps:put(ttl, Value, Anns)};
313+
State#?MODULE{annotations = Anns#{ttl => Value}};
317314
set_ttl(Value, BasicMsg) ->
318315
mc_compat:set_ttl(Value, BasicMsg).
319316

deps/rabbit/src/mc_amqp.erl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ property(user_id, #msg{properties = #'v1_0.properties'{user_id = UserId}}) ->
117117
UserId;
118118
property(subject, #msg{properties = #'v1_0.properties'{subject = Subject}}) ->
119119
Subject;
120+
property(to, #msg{properties = #'v1_0.properties'{to = To}}) ->
121+
To;
120122
property(_Prop, #msg{}) ->
121123
undefined.
122124

deps/rabbit/src/rabbit.erl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1709,8 +1709,7 @@ persist_static_configuration() ->
17091709
_ ->
17101710
?MAX_MSG_SIZE
17111711
end,
1712-
ok = persistent_term:put(max_message_size, MaxMsgSize),
1713-
ok = rabbit_amqp_management:persist_static_configuration().
1712+
ok = persistent_term:put(max_message_size, MaxMsgSize).
17141713

17151714
persist_static_configuration(Params) ->
17161715
App = ?MODULE,

0 commit comments

Comments
 (0)