maybe take inspiration from
https://github.com/apache/activemq-artemis/blob/master/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/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.readSimpleString(SimpleString.java:185)
> > >         at
> > > org.apache.activemq.artemis.api.core.SimpleString.readSimpleString(SimpleString.java:173)
> > >         at
> > > org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper.readStringInternal(ChannelBufferWrapper.java:113)
> > >         at
> > > org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper.readString(ChannelBufferWrapper.java:98)
> > >         at com.tsystems.gematik.kim.mailserver.mq
> > > .MailServerActiveMQClient.receiveTextMessageFromSmtpQueue(MailServerActiveMQClient.java:93)
> > >         at com.tsystems.gematik.kim.mailserver.mq
> > > .MailServerActiveMQClientTest.sendAndReceive(MailServerActiveMQClientTest.java:28)
> > >         at
> > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nati
> > > ve
> > > Method)
> > >         at
> > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> > >         at
> > > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > >         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> > >         at
> > > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> > >         at
> > > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> > >         at
> > > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> > >         at
> > > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> > >         at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> > >         at
> > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> > >         at
> > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> > >         at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> > >         at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> > >         at
> > > org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> > >         at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> > >         at 
> > > org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> > >         at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> > >         at
> > > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
> > >         at
> > > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
> > >         at
> > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
> > >         at
> > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
> > >         at
> > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
> > >         at
> > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTe
> > > 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.getBodyBufferSize());
> > > >                     message.getBodyBuffer().readBytes(result);
> > > >              } finally {
> > > >                     session.close();
> > > >              }
> > > >
> > > >              return result;
> > > >        }
> > > >
> > > >
> > > >        public void startServer() throws Exception {
> > > >              this.configuration = new ConfigurationImpl();
> > > >              this.configuration.addAcceptorConfiguration("in-vm",
> > > > ACTIVE_MQ_EMBEDDED_SERVER_URL);
> > > >              this.configuration.setPersistenceEnabled(true);
> > > >              this.configuration.setSecurityEnabled(false);
> > > >              this.configuration.addQueueConfiguration(new
> > > > QueueConfiguration(ACTIVE_MQ_SMTP_QUEUE));
> > > >
> > > >              this.server = new ActiveMQServerImpl(this.configuration);
> > > >              this.server.start();
> > > >        }
> > > >
> > >
>
>
>
> --
> Clebert Suconic

Reply via email to