Thank you for the answer, I will go this way! Is it neccessary to create the session as "transacted=true" in case I want to be sure that the ByteBuf was stored sucessfully? session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
How can I check with the JMS client if a particular queue does exists and in case not to create it? In core api I do this way: ClientSession session = this.sessionFactory.createSession(true, true); try { QueueQuery queueQuery = session.queueQuery(new SimpleString(ACTIVE_MQ_SMTP_QUEUE)); if (!queueQuery.isExists()) session.createQueue(new QueueConfiguration(ACTIVE_MQ_SMTP_QUEUE).setDurable(true)); } finally { session.close(); } -----Ursprüngliche Nachricht----- Von: Clebert Suconic <clebert.suco...@gmail.com> Gesendet: Montag, 29. März 2021 15:40 An: users@activemq.apache.org Betreff: Re: send message This example here is working with JMS: https://github.com/apache/activemq-artemis/blob/fe3851ff6d243cc0b58872c5431646fbeb410b41/examples/features/standard/large-message/src/main/java/org/apache/activemq/artemis/jms/example/LargeMessageExample.java Basically, instead of passing a BufferedInputStream that worked through a File, you could pass in a NettyByteBufferInputStream, and it should work the same: https://netty.io/4.0/api/io/netty/buffer/ByteBufInputStream.html I was going to suggest you to write a ByteInputStream yourself when I found one already implemented as part of the Netty library. On Fri, Mar 26, 2021 at 10:43 AM Clebert Suconic <clebert.suco...@gmail.com> wrote: > > look at message.setInputStream as you are using the Core API. > > if you were using the JMS API there's a property that kind of wraps it > into the CoreMessage through the JMS Message. > > Since you are using the core api directly look into that property. > Just implement an InputStream that will read from your ByteBuffer and > pass it in. > > On Fri, Mar 26, 2021 at 8:48 AM <tobias.w...@t-systems.com> wrote: > > > > A example would be great! > > > > -----Ursprüngliche Nachricht----- > > Von: Clebert Suconic <clebert.suco...@gmail.com> > > Gesendet: Freitag, 26. März 2021 13:26 > > An: users@activemq.apache.org > > Betreff: Re: send message > > > > On your case it would make sense if the streaming was not a file but a > > biffer. I get it. > > > > The optimization here wouldn’t be the copy but it would be not needintg to > > duplicate the 500MB. We all thought you had a smaller buffer and did not > > want the copy. > > > > You can pass an InputStream as a property on the streaming. If you > > implemented an InputStream that will read from the NettyBuffer. The body > > would be read directly into smaller chunks into the Large Message Streaming. > > > > > > I’m not working today. As a matter of fact I’m using an iPhone > > right now (pardon any typoes please) > > > > If you can’t figure it out let me know and I will write you an > > example Monday > > > > On Fri, Mar 26, 2021 at 3:35 AM <tobias.w...@t-systems.com> wrote: > > > > > Not he application is a kind of custom mail server and the > > > messages can reach up to 500mb and are received via tcp and a netty smtp > > > handler. > > > Therefore I have a netty direct buffer already and don't want > > > bring the huge messages back into the jvm. > > > > > > -----Ursprüngliche Nachricht----- > > > Von: Clebert Suconic <clebert.suco...@gmail.com> > > > Gesendet: Donnerstag, 25. März 2021 20:31 > > > An: users@activemq.apache.org > > > Betreff: Re: send message > > > > > > I assumed the data was already on a file. > > > > > > If you passed the file name. The receiver would receive a message > > > where you could either do the opposite. (Pass a file name to steam. > > > Or just receive steaming) > > > > > > At that size of message the optimization of the copy between your > > > buffer and a byte array makes little difference. > > > > > > On Thu, Mar 25, 2021 at 11:12 AM <tobias.w...@t-systems.com> wrote: > > > > > > > So you mean I should save the ByteBuffer by myself to a file? > > > > > > > > --> and pass it over the property that would stream the file directly. > > > > (Available on core only) > > > > What do you mean? I understand that I shall pass the name of the > > > > file via a message property, right? > > > > How would the receiver side looks like? > > > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > Von: Clebert Suconic <clebert.suco...@gmail.com> > > > > Gesendet: Donnerstag, 25. März 2021 16:04 > > > > An: users@activemq.apache.org > > > > Betreff: Re: send message > > > > > > > > Sending a message this large will make it to be converted as a > > > > large stream and saved as a file on the server anyways... > > > > > > > > The copy between ByteBuffer and a byte array would become > > > > irrelevant at this point. > > > > > > > > If you want to send a large message this big, you could save it > > > > to a file, and pass it over the property that would stream the file > > > > directly. > > > > (Available on core only) > > > > > > > > And don't convert a large message between protocols.. use a > > > > single protocol of your choice. > > > > > > > > On Thu, Mar 25, 2021 at 3:44 AM <tobias.w...@t-systems.com> wrote: > > > > > > > > > > What are you talking about? > > > > > I want to send byte buffers with the size up to 500MB to a queue! > > > > > What do you mean with string and micro optimization! > > > > > The core api fails in my test already with sending/receiving a > > > > > simple > > > > string, yes, a simple test! > > > > > Does it make sense to have a 500mb native netty buffer > > > > > received via wire > > > > and tunnel it back through the jvm? > > > > > I don`t think so! > > > > > Does it make sense to tunnel megabytes of data through a > > > > > stream or even > > > > an byte array through the jvm? > > > > > Where ist the advantage of jms? > > > > > Why shall I not use the existing core api functions when the > > > > > already > > > > support a netty buffer? > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > > Von: Justin Bertram <jbert...@apache.org> > > > > > Gesendet: Mittwoch, 24. März 2021 17:56 > > > > > An: users@activemq.apache.org > > > > > Betreff: Re: send message > > > > > > > > > > Well said, Tim. I was going to say the same thing about > > > > > premature > > > > optimization. > > > > > > > > > > > > > > > Justin > > > > > > > > > > On Wed, Mar 24, 2021 at 7:04 AM Tim Bain > > > > > <tb...@alumni.duke.edu> > > > wrote: > > > > > > > > > > > One thing to keep in mind is that although the code may be > > > > > > slightly slower, if it lets you use an API that is more > > > > > > favorable (which might mean better documented, more > > > > > > portable, more stable across future versions, easier for > > > > > > others to maintain because they're already familiar with it, > > > > > > or a number of other potential advantages), > > > > that might be a win. > > > > > > > > > > > > Only you know your use case and whether the performance > > > > > > advantages of what you're trying to do actually outweigh the > > > > > > types of advantages I referenced in the first paragraph. But > > > > > > remember that premature optimization is the root of all > > > > > > evil, so make sure that your micro-optimization of avoiding > > > > > > the creation of a String is really a significant enough > > > > > > optimization in the context of your use case to justify the > > > > > > disadvantages of what you're trying to do. > > > > > > > > > > > > Tim > > > > > > > > > > > > On Tue, Mar 23, 2021, 9:20 AM Clebert Suconic > > > > > > <clebert.suco...@gmail.com> > > > > > > wrote: > > > > > > > > > > > > > Not on the API itself. > > > > > > > > > > > > > > Try the core api example I sent you... and let me know > > > > > > > what is different from yours. > > > > > > > > > > > > > > On Tue, Mar 23, 2021 at 10:34 AM > > > > > > > <tobias.w...@t-systems.com> > > > wrote: > > > > > > > > > > > > > > > > I want to use the jms layer, but I've a netty > > > > > > > > application and I want to > > > > > > > write the ByteBuf mostly efficent to the queue. > > > > > > > > I think it makes no sense to convert it back from a > > > > > > > > native buffer into > > > > > > a > > > > > > > byte array or stream and tunnel this throught the jvm! > > > > > > > > > > > > > > > > Is there a way to use a ByteBuf with jms? > > > > > > > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > > > > > Von: Clebert Suconic <clebert.suco...@gmail.com> > > > > > > > > Gesendet: Dienstag, 23. März 2021 15:00 > > > > > > > > An: users@activemq.apache.org > > > > > > > > Betreff: Re: send message > > > > > > > > > > > > > > > > You were supposed to call reset right before sending though... > > > > > > > > but I > > > > > > did > > > > > > > not need it on my test.. I will post a link... > > > > > > > > > > > > > > > > Anyway, if you use the JMS API, the JMS layer is very > > > > > > > > thin, and I don't > > > > > > > think it would affect your performance in any way. you > > > > > > > could create a BytesMessage and all the detail would be > > > > > > > hidden away from the internal > > > > > > API. > > > > > > > > > > > > > > > > On Tue, Mar 23, 2021 at 9:57 AM Clebert Suconic < > > > > > > > clebert.suco...@gmail.com> wrote: > > > > > > > > > > > > > > > > > > I'm adding a test doing exactly what you did, and it's > > > working... > > > > > > > > > > > > > > > > > > give me 10 minutes and I will post a link here... > > > > > > > > > > > > > > > > > > On Tue, Mar 23, 2021 at 9:56 AM > > > > > > > > > <tobias.w...@t-systems.com> > > > > wrote: > > > > > > > > > > > > > > > > > > > > Same Issue! > > > > > > > > > > public void sendMessageToSmtpQueue(String > > > > > > > > > > text) throws > > > > > > > ActiveMQException { > > > > > > > > > > ClientSession session = > > > > > > > this.sessionFactory.createSession(); > > > > > > > > > > try { > > > > > > > > > > session.start(); > > > > > > > > > > ClientMessage message = > > > > > > > session.createMessage(true); > > > > > > > > > > > > > > message.setType(ClientMessage.TEXT_TYPE); > > > > > > > > > > > > > > message.getBodyBuffer().resetReaderIndex(); > > > > > > > > > > > > > > message.getBodyBuffer().writeString(text); > > > > > > > > > > ClientProducer producer = > > > > > > > session.createProducer(ACTIVE_MQ_SMTP_QUEUE); > > > > > > > > > > producer.send(message); > > > > > > > > > > } finally { > > > > > > > > > > session.close(); > > > > > > > > > > } > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > java.lang.IndexOutOfBoundsException: Error reading > > > > > > > > > > in simpleString, > > > > > > > length=1953068645 is greater than readableBytes=3 > > > > > > > > > > at > > > > > > > > > > > > > org.apache.activemq.artemis.api.core.SimpleString.readSimple > > > > > > Stri > > > > > > ng > > > > > > (S > > > > > > im > > > > > > pleString.java:185) > > > > > > > > > > at > > > > > > > > > > > > > org.apache.activemq.artemis.api.core.SimpleString.readSimple > > > > > > Stri > > > > > > ng > > > > > > (S > > > > > > im > > > > > > pleString.java:173) > > > > > > > > > > at > > > > > > > > > > > > > org.apache.activemq.artemis.core.buffers.impl.ChannelBufferW > > > > > > rapp > > > > > > er > > > > > > .r > > > > > > ea > > > > > > dStringInternal(ChannelBufferWrapper.java:113) > > > > > > > > > > at > > > > > > > > > > > > > org.apache.activemq.artemis.core.buffers.impl.ChannelBufferW > > > > > > rapp > > > > > > er > > > > > > .r > > > > > > ea > > > > > > dString(ChannelBufferWrapper.java:98) > > > > > > > > > > at com.tsystems.gematik.kim.mailserver.mq > > > > > > > > > > > > > .MailServerActiveMQClient.receiveTextMessageFromSmtpQueue(Ma > > > > > > ilSe > > > > > > rv > > > > > > er > > > > > > Ac > > > > > > tiveMQClient.java:94) > > > > > > > > > > at com.tsystems.gematik.kim.mailserver.mq > > > > > > > > > > > > > .MailServerActiveMQClientTest.sendAndReceiveTextMessage(Mail > > > > > > Serv > > > > > > er > > > > > > Ac > > > > > > ti > > > > > > veMQClientTest.java:37) > > > > > > > > > > at > > > > > > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.in > > > > > > > voke > > > > > > > 0( > > > > > > > Na > > > > > > > ti > > > > > > > ve > > > > > > > Method) > > > > > > > > > > at > > > > > > > > > > > > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo > > > > > > ke(N > > > > > > at > > > > > > iv > > > > > > eM > > > > > > ethodAccessorImpl.java:62) > > > > > > > > > > at > > > > > > > > > > > > > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl. > > > > > > invo > > > > > > ke > > > > > > (D > > > > > > el > > > > > > egatingMethodAccessorImpl.java:43) > > > > > > > > > > at > > > > > > java.base/java.lang.reflect.Method.invoke(Method.java:566) > > > > > > > > > > at > > > > > > > > > > > > > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( > > > > > > Fram > > > > > > ew > > > > > > or > > > > > > kM > > > > > > ethod.java:50) > > > > > > > > > > at > > > > > > > > > > > > > org.junit.internal.runners.model.ReflectiveCallable.run(Refl > > > > > > ecti > > > > > > ve > > > > > > Ca > > > > > > ll > > > > > > able.java:12) > > > > > > > > > > at > > > > > > > > > > > > > org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr > > > > > > amew > > > > > > or > > > > > > kM > > > > > > et > > > > > > hod.java:47) > > > > > > > > > > at > > > > > > > > > > > > > org.junit.internal.runners.statements.InvokeMethod.evaluate( > > > > > > Invo > > > > > > ke > > > > > > Me > > > > > > th > > > > > > od.java:17) > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:3 > > > > > > > 25) > > > > > > > > > > at > > > > > > > > > > > > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit > > > > > > 4Cla > > > > > > ss > > > > > > Ru > > > > > > nn > > > > > > er.java:78) > > > > > > > > > > at > > > > > > > > > > > > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit > > > > > > 4Cla > > > > > > ss > > > > > > Ru > > > > > > nn > > > > > > er.java:57) > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner$3.run(ParentRunner.java:290 > > > > > > > ) > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner$1.schedule(ParentRunner.jav > > > > > > > a:71 > > > > > > > ) > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner.runChildren(ParentRunner.ja > > > > > > > va:2 > > > > > > > 88 > > > > > > > ) > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner.access$000(ParentRunner.jav > > > > > > > a:58 > > > > > > > ) > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner$2.evaluate(ParentRunner.jav > > > > > > > a:26 > > > > > > > 8) > > > > > > > > > > at > > > > > > org.junit.runners.ParentRunner.run(ParentRunner.java:363) > > > > > > > > > > at > > > > > > > > > > > > > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r > > > > > > un(J > > > > > > Un > > > > > > it > > > > > > 4T > > > > > > estReference.java:89) > > > > > > > > > > at > > > > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution. > > > > > > java:41) > > > > > > > > > > at > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe > > > > > > sts( > > > > > > Re > > > > > > mo > > > > > > te > > > > > > TestRunner.java:541) > > > > > > > > > > at > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe > > > > > > sts( > > > > > > Re > > > > > > mo > > > > > > te > > > > > > TestRunner.java:763) > > > > > > > > > > at > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R > > > > > > emot > > > > > > eT > > > > > > es > > > > > > tR > > > > > > unner.java:463) > > > > > > > > > > at > > > > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( > > > > > > Remo > > > > > > te > > > > > > Te > > > > > > > > > > stRunner.java:209) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > > > > > > > Von: Clebert Suconic <clebert.suco...@gmail.com> > > > > > > > > > > Gesendet: Dienstag, 23. März 2021 13:48 > > > > > > > > > > An: users@activemq.apache.org > > > > > > > > > > Betreff: Re: send message > > > > > > > > > > > > > > > > > > > > Can you try calling > > > > > > > > > > message.getBodyBuffer().resetReaderIndex(); > > > > > > > before the send? > > > > > > > > > > > > > > > > > > > > if that does not work I will try your code and see > > > > > > > > > > what > > > > happens. > > > > > > > > > > (Let me know if doesn't please) > > > > > > > > > > > > > > > > > > > > On Tue, Mar 23, 2021 at 7:55 AM Gary Tully > > > > > > > > > > <gary.tu...@gmail.com> > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > maybe take inspiration from > > > > > > > > > > > > > > > > > https://github.com/apache/activemq-artemis/blob/master/tests > > > > > > /int > > > > > > eg > > > > > > > > > > > rati > > > > > > > > > > > > > > > > > on-tests/src/test/java/org/apache/activemq/artemis/tests/int > > > > > > egra > > > > > > ti > > > > > > > > > > > on/c lient/MessageBufferTest.java that passes a > > > > > > > > > > > string, but there are corresponding byte[] or > > > > > > > > > > > buffer variants in the api. If you want to skip > > > > > > > > > > > the decoding, to access the raw buffer, you need > > > > > > > > > > > to parse the type to get to the > > > > appropriate part of the buffer. > > > > > > > > > > > There are loads of usage examples in the tests and > > > > > > > > > > > they all work, start there and break it as you go. > > > > > > > > > > > > > > > > > > > > > > the issue is the wire level encoding that the > > > > > > > > > > > client does, the > > > > > > JMS > > > > > > > > > > > api hides this, as do the typed accessors, but you > > > > > > > > > > > can get direct access to the encoded buffers via > > > > > > > > > > > the core api as you are doing but you need to be > > > > > > > > > > > type aware, for example a string can be utf-8 > > > > > > > > > > > encoded or it can be raw bytes on the wire, > > > > > > > > > > > depending on the size and chars, the encoding > > > > > > > > > > > handles and hides this detail. But if you go for > > > > > > > > > > > direct > > > > access, you need to be aware of the encoding. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, 23 Mar 2021 at 07:37, > > > > > > > > > > > <tobias.w...@t-systems.com> > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > getDataBuffer gives same result! Already tried! > > > > > > > > > > > > > > > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > > > > > > > > > Von: Clebert Suconic <clebert.suco...@gmail.com> > > > > > > > > > > > > Gesendet: Dienstag, 23. März 2021 03:19 > > > > > > > > > > > > An: users@activemq.apache.org > > > > > > > > > > > > Betreff: Re: send message > > > > > > > > > > > > > > > > > > > > > > > > Why you don't use the JMS API for this? > > > > > > > > > > > > > > > > > > > > > > > > or if you really want to use the core API, use > > > > > > > > > > > > the > > > > > > > getReadOnlyBuffer() or getDataBuffer() on the Message instead. > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Mar 22, 2021 at 12:01 PM Justin Bertram > > > > > > > > > > > > < > > > > > > > jbert...@apache.org> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > The stack-trace indicates you're invoking the > > > > "readString" > > > > > > > > > > > > > method on line > > > > > > > > > > > > > 93 of MailServerActiveMQClient.java, but I > > > > > > > > > > > > > don't see that > > > > > > call > > > > > > > > > > > > > in the code you pasted. Therefore, that > > > > > > > > > > > > > stack-trace doesn't seem correct. Can you clarify > > > > > > > > > > > > > this? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Justin > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Mar 22, 2021 at 10:55 AM Dondorp, > > > > > > > > > > > > > Erwin <erwin.dond...@cgi.com> > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > Fyi: > > > > > > > > > > > > > > 1953068645(decimal) = 74697665(hexadecimal) > > > > > > > > > > > > > > = "tive"(ascii > > > > > > > > > > > > > > text) And "tive" is likely part of the > > > > > > > > > > > > > > string > > > > "ActiveMQ"? > > > > > > > > > > > > > > e. > > > > > > > > > > > > > > > > > > > > > > > > > > > > -----Oorspronkelijk bericht----- > > > > > > > > > > > > > > Van: tobias.w...@t-systems.com > > > > > > > > > > > > > > <tobias.w...@t-systems.com> > > > > > > > > > > > > > > Verzonden: maandag 22 maart 2021 16:41 > > > > > > > > > > > > > > Aan: users@activemq.apache.org > > > > > > > > > > > > > > Onderwerp: AW: send message > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > EXTERNAL SENDER: Do not click any links or open > > > > > > > > > > > > > > any > > > > > > > attachments unless > > > > > > > > > > > > > > you trust the sender and know the content is safe. > > > > > > > > > > > > > > EXPÉDITEUR EXTERNE: Ne cliquez sur aucun lien et > > > > > > n’ouvrez > > > > > > > aucune pièce > > > > > > > > > > > > > > jointe à moins qu’ils ne proviennent d’un > > > > > > > > > > > > > > expéditeur > > > > > > fiable, > > > > > > > > > > > > > > ou que vous ayez l'assurance que le contenu > > > > > > > > > > > > > > provient d'une > > > > > > > source sûre. > > > > > > > > > > > > > > > > > > > > > > > > > > > > While sending / receiving a text message I > > > > > > > > > > > > > > get this > > > > > > > > > > > > > > > > > > > > > > > > > > > > java.lang.IndexOutOfBoundsException: Error > > > > > > > > > > > > > > reading in simpleString, > > > > > > > > > > > > > > length=1953068645 is greater than readableBytes=3 > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.apache.activemq.artemis.api.core.SimpleString.readSimple > > > > > > Stri > > > > > > ng > > > > > > (S > > > > > > im > > > > > > pleString.java:185) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.apache.activemq.artemis.api.core.SimpleString.readSimple > > > > > > Stri > > > > > > ng > > > > > > (S > > > > > > im > > > > > > pleString.java:173) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.apache.activemq.artemis.core.buffers.impl.ChannelBufferW > > > > > > rapp > > > > > > er > > > > > > .r > > > > > > ea > > > > > > dStringInternal(ChannelBufferWrapper.java:113) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.apache.activemq.artemis.core.buffers.impl.ChannelBufferW > > > > > > rapp > > > > > > er > > > > > > .r > > > > > > ea > > > > > > dString(ChannelBufferWrapper.java:98) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > com.tsystems.gematik.kim.mailserver.mq > > > > > > > > > > > > > > > > > > > > > > > > > > > .MailServerActiveMQClient.receiveTextMessageFromSmtpQueue(Ma > > > > > > ilSe > > > > > > rv > > > > > > er > > > > > > Ac > > > > > > tiveMQClient.java:93) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > com.tsystems.gematik.kim.mailserver.mq > > > > > > > > > > > > > > > > > > > > > > > > > > > .MailServerActiveMQClientTest.sendAndReceive(MailServerActiv > > > > > > eMQC > > > > > > li > > > > > > en > > > > > > tT > > > > > > est.java:28) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo > > > > > > > > > > > > > > ke0( > > > > > > > > > > > > > > Nati > > > > > > > > > > > > > > ve > > > > > > > > > > > > > > Method) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invo > > > > > > ke(N > > > > > > at > > > > > > iv > > > > > > eM > > > > > > ethodAccessorImpl.java:62) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl. > > > > > > invo > > > > > > ke > > > > > > (D > > > > > > el > > > > > > egatingMethodAccessorImpl.java:43) > > > > > > > > > > > > > > at > > > > > > > java.base/java.lang.reflect.Method.invoke(Method.java:566) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( > > > > > > Fram > > > > > > ew > > > > > > or > > > > > > kM > > > > > > ethod.java:50) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.junit.internal.runners.model.ReflectiveCallable.run(Refl > > > > > > ecti > > > > > > ve > > > > > > Ca > > > > > > ll > > > > > > able.java:12) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr > > > > > > amew > > > > > > or > > > > > > kM > > > > > > et > > > > > > hod.java:47) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.junit.internal.runners.statements.InvokeMethod.evaluate( > > > > > > Invo > > > > > > ke > > > > > > Me > > > > > > th > > > > > > od.java:17) > > > > > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:3 > > > > > > > 25) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit > > > > > > 4Cla > > > > > > ss > > > > > > Ru > > > > > > nn > > > > > > er.java:78) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit > > > > > > 4Cla > > > > > > ss > > > > > > Ru > > > > > > nn > > > > > > er.java:57) > > > > > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner$3.run(ParentRunner.java:290 > > > > > > > ) > > > > > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner$1.schedule(ParentRunner.jav > > > > > > > a:71 > > > > > > > ) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > org.junit.runners.ParentRunner.runChildren(ParentRunner.ja > > > > > > > va:2 > > > > > > > 88 > > > > > > > ) > > > > > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner.access$000(ParentRunner.jav > > > > > > > a:58 > > > > > > > ) > > > > > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner$2.evaluate(ParentRunner.jav > > > > > > > a:26 > > > > > > > 8) > > > > > > > > > > > > > > at > > > > > > > org.junit.runners.ParentRunner.run(ParentRunner.java:363) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r > > > > > > un(J > > > > > > Un > > > > > > it > > > > > > 4T > > > > > > estReference.java:89) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution. > > > > > > java:41) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe > > > > > > sts( > > > > > > Re > > > > > > mo > > > > > > te > > > > > > TestRunner.java:541) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe > > > > > > sts( > > > > > > Re > > > > > > mo > > > > > > te > > > > > > TestRunner.java:763) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R > > > > > > emot > > > > > > eT > > > > > > es > > > > > > tR > > > > > > unner.java:463) > > > > > > > > > > > > > > at > > > > > > > > > > > > > > > > > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( > > > > > > > > > > > > > > Remo > > > > > > > > > > > > > > teTe > > > > > > > > > > > > > > stRunner.java:209) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -----Ursprüngliche Nachricht----- > > > > > > > > > > > > > > Von: Justin Bertram <jbert...@apache.org> > > > > > > > > > > > > > > Gesendet: Montag, 22. März 2021 16:34 > > > > > > > > > > > > > > An: users@activemq.apache.org > > > > > > > > > > > > > > Betreff: Re: send message > > > > > > > > > > > > > > > > > > > > > > > > > > > > What actually fails? Do you have a stack-trace? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Justin > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Mar 22, 2021 at 9:53 AM > > > > > > > > > > > > > > <tobias.w...@t-systems.com > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I try to send and receive a netty ByteBuf > > > > > > > > > > > > > > > message, but it > > > > > > > fails. > > > > > > > > > > > > > > > What I'm doing wrong here? I even don't > > > > > > > > > > > > > > > know ist he mistake in sending or receiving! > > > > > > > > > > > > > > > I was thinking to use the jms layer, but > > > > > > > > > > > > > > > I'm receiving > > > > > > the > > > > > > > > > > > > > > > data buffer throught a netty buffer and I > > > > > > > > > > > > > > > want to avoid > > > > > > to > > > > > > > > > > > > > > > convert the buffer to a byte array! > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > public void > > > > > > > > > > > > > > > sendMessageToSmtpQueue(ByteBuf > > > > > > > > > > > > > > > buf) throws ActiveMQException { > > > > > > > > > > > > > > > ClientSession session = > > > > > > > this.sessionFactory.createSession(); > > > > > > > > > > > > > > > try { > > > > > > > > > > > > > > > session.start(); > > > > > > > > > > > > > > > ClientMessage message > > > > > > > > > > > > > > > = > > > > > > > session.createMessage(true); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > message.getBodyBuffer().writeBytes(buf, 0, > > > > > > > buf.readableBytes()); > > > > > > > > > > > > > > > ClientProducer > > > > > > > > > > > > > > > producer = > > > > > > > > > > > > > > > session.createProducer(ACTIVE_MQ_SMTP_QUEUE); > > > > > > > > > > > > > > > producer.send(message); > > > > > > > > > > > > > > > } finally { > > > > > > > > > > > > > > > session.close(); > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > public ActiveMQBuffer > > > > > > receiveMessageFromSmtpQueue() > > > > > > > > > > > > > > > throws ActiveMQException { > > > > > > > > > > > > > > > ActiveMQBuffer result; > > > > > > > > > > > > > > > ClientSession session = > > > > > > > this.sessionFactory.createSession(); > > > > > > > > > > > > > > > try { > > > > > > > > > > > > > > > session.start(); > > > > > > > > > > > > > > > ClientConsumer > > > > > > > > > > > > > > > consumer = > > > > > > > > > > > > > > > session.createConsumer(ACTIVE_MQ_SMTP_QUEUE); > > > > > > > > > > > > > > > ClientMessage message > > > > > > > > > > > > > > > = > > > > > > > consumer.receive(); > > > > > > > > > > > > > > > result = > > > > > > > > > > > > > > > ActiveMQBuffers.fixedBuffer(message.getBod > > > > > > > > > > > > > > > yBuf > > > > > > > > > > > > > > > fe > > > > > > > > > > > > > > > rS > > > > > > > > > > > > > > > iz > > > > > > > > > > > > > > > e()); > > > > > > > > > > > > > > > > > > > > > > message.getBodyBuffer().readBytes(result); > > > > > > > > > > > > > > > } finally { > > > > > > > > > > > > > > > session.close(); > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > return result; > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > public void startServer() throws Exception > > > > > > > > > > > > > > > { > > > > > > > > > > > > > > > this.configuration = new > > > > > > ConfigurationImpl(); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > this.configuration.addAcceptorConfiguratio > > > > > > > > > > > > > > > n("i > > > > > > > > > > > > > > > n- vm ", ACTIVE_MQ_EMBEDDED_SERVER_URL); > > > > > > > > > > > > > > > > > > > > > > this.configuration.setPersistenceEnabled(true); > > > > > > > > > > > > > > > > > > > > > this.configuration.setSecurityEnabled(false); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > this.configuration.addQueueConfiguration(n > > > > > > > > > > > > > > > ew > > > > > > > > > > > > > > > QueueConfiguration(ACTIVE_MQ_SMTP_QUEUE)); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > this.server = new > > > > > > > ActiveMQServerImpl(this.configuration); > > > > > > > > > > > > > > > this.server.start(); > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > Clebert Suconic > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > Clebert Suconic > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > Clebert Suconic > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > Clebert Suconic > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > Clebert Suconic > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > Clebert Suconic > > > > > > > -- > > > Clebert Suconic > > > > > -- > > Clebert Suconic > > > > -- > Clebert Suconic -- Clebert Suconic