diff --git a/request-many/src/main/java/io/synadia/rm/RequestMany.java b/request-many/src/main/java/io/synadia/rm/RequestMany.java index 52ad804..cda41c1 100644 --- a/request-many/src/main/java/io/synadia/rm/RequestMany.java +++ b/request-many/src/main/java/io/synadia/rm/RequestMany.java @@ -327,12 +327,18 @@ public void request(String subject, byte[] payload, RmHandler handler) { } public void request(String subject, Headers headers, byte[] payload, RmHandler handler) { + request(subject, null, headers, payload, handler); + } + + public void request(String subject, String replyTo, Headers headers, byte[] payload, RmHandler handler) { Subscription sub = null; // the default end of data will be a normal end of data (vs status or exception) RmMessage eod = RmMessage.NORMAL_EOD; try { - String replyTo = conn.createInbox(); + if (replyTo == null) { + replyTo = conn.createInbox(); + } sub = conn.subscribe(replyTo); conn.publish(subject, replyTo, headers, payload); diff --git a/request-many/src/test/java/io/synadia/rm/RequestManyTests.java b/request-many/src/test/java/io/synadia/rm/RequestManyTests.java index 8b8b99d..42a0dae 100644 --- a/request-many/src/test/java/io/synadia/rm/RequestManyTests.java +++ b/request-many/src/test/java/io/synadia/rm/RequestManyTests.java @@ -131,6 +131,19 @@ public void testMaxWaitRequest() throws Exception { } } + @Test + public void testRequestWithCustomReplyTo() throws Exception { + try (Responder responder = new Responder(1)) { + RequestMany rm = builder().totalWaitTime(TEST_TWT).build(); + RmHandlerAndResult result = new RmHandlerAndResult(); + String replyTo = "_INBOX." + NUID.nextGlobalSequence(); + + rm.request(responder.subject, replyTo, null, null, result); + + assertMessages(1, Last.Normal, result.list); + } + } + @Test public void testMaxWaitFetch() throws Exception { try (Responder responder = new Responder(1, MAX_WAIT_PAUSE, 1)) {