Or you / we could add a new method with the old semantic with a clear doc about it.
Alrhoufht I’m not sure what good is to keep the consumer leaking. On Sat, Aug 19, 2023 at 10:53 AM Justin Bertram <jbert...@apache.org> wrote: > The behavior you're seeing is expected at this point given the fix for > ARTEMIS-4234 [1]. The capabilities of the JUnit resources are very basic, > and it doesn't really make sense to make them support more complex > use-cases when the client API already does this. Therefore you just need to > create your own consumer, e.g.: > > @Test > void testInputStream() throws Exception { > File file = new > > File(Objects.requireNonNull(getClass().getResource("/testFile.txt")).toURI()); > String content = Files.readString(file.toPath()); > > InputStream inputStream = new FileInputStream(file); > BufferedInputStream bufferedInputStream = new > BufferedInputStream(inputStream); > > jmsTemplate.send(LargeMessageTest.TOPIC_NAME, session -> { > javax.jms.Message msg = session.createBytesMessage(); > > msg.setObjectProperty("JMS_AMQ_InputStream", > bufferedInputStream); > return msg; > }); > > ServerLocator serverLocator = > ActiveMQClient.createServerLocator(embeddedActiveMQResource.getVmURL()); > ClientSessionFactory clientSessionFactory = > serverLocator.createSessionFactory(); > ClientSession session = clientSessionFactory.createSession(); > ByteArrayOutputStream byteArrayOutputStream = new > ByteArrayOutputStream(); > BufferedOutputStream bufferedOutput = new > BufferedOutputStream(byteArrayOutputStream); > > try (ClientConsumer consumer = session.createConsumer(TOPIC_NAME)) > { > session.start(); > ClientMessage receivedMessage = consumer.receive(); > receivedMessage.saveToOutputStream(bufferedOutput); > } > > String readContent = byteArrayOutputStream.toString(); > > assertEquals(content, readContent); > } > > > Justin > > [1] https://issues.apache.org/jira/browse/ARTEMIS-4234 > > On Thu, Aug 17, 2023 at 12:13 PM Vojtěch Frič > <vojtech.f...@manta.io.invalid> > wrote: > > > Hi. > > > > After upgrading to Artemis 2.30 which contains changes from > > https://issues.apache.org/jira/browse/ARTEMIS-4234 one of our tests > > started failing. We were able to track it down to the previously > > mentioned issue. > > > > Fixing of the leaking ClientConsumer resources in the > > EmbeddedActiveMQResource causes the underlying data stream to be mark as > > closed as well. This means it is not possible to actually save the > > received message into a buffer. The result is AMQ219023: > > > > > > ActiveMQIllegalStateException[errorType=ILLEGAL_STATE message=AMQ219023: > > The large message lost connection with its session, either because of a > > rollback or a closed session > > ] > > at > > > > > org.apache.activemq.artemis.core.client.impl.LargeMessageControllerImpl.saveBuffer(LargeMessageControllerImpl.java:265) > > at > > > > > org.apache.activemq.artemis.core.client.impl.ClientLargeMessageImpl.saveToOutputStream(ClientLargeMessageImpl.java:113) > > at LargeMessageTest.testInputStream(LargeMessageTest.java:68) > > > > > > I have a working example showing this error available here > > https://github.com/sutr90/artemis-junit-large-message/tree/master > > > > > > Can you advise how to fix this test, or confirm that this is expected > > behavior of the EmbeddedActiveMQResource? > > > > > > Thank you. > > > > Vojtěch Frič > > > > > > -- > > *This email is intended solely for the addressee(s) and all its contents, > > including all attachments and files transmitted with it, represent > > confidential information. Unauthorized distribution, modification or > > disclosure of its contents and unauthorized reliance on its contents are > > prohibited. If you have received this email in error, please notify the > > sender immediately by return email. Please then delete the email from > your > > system and do not (i) copy or distribute it, (ii) rely on its contents, > or > > (iii) disclose its contents to any person.* > > > > > -- Clebert Suconic