By "in Java" I assume you more specifically mean 'using the same Core
client as the existing senders/receivers' ?

On Mon, 25 Jul 2022 at 11:10, Jan Šmucr <jan.sm...@aimtecglobal.com> wrote:
>
> > For the broker, it would ordinarily treat the large message as a
> > chunked stream if doing e.g core->core, or amqp->amqp...but in this
> > case having to do core->amqp means the broker will necessarily have to
> > convert the message and in doing so it will load the entire message.
>
> I think this is exactly what we needed to know to drop Python support and 
> create the Lambda in Java. Thank you! 😊
>
> Jan
>
> From: Robbie Gemmell<mailto:robbie.gemm...@gmail.com>
> Sent: pondělí 25. července 2022 12:05
> To: users@activemq.apache.org<mailto:users@activemq.apache.org>
> Subject: Re: Artemis - Large Message - Core => AMQP
>
> Are you using StreamMessage because you think it will enable
> 'steaming'? If so I wouldnt bother, the Stream name isnt related, its
> just a JMS message type name meaning there is a list/sequence of
> things in it. Previously you just seemed to want to send text/bytes.
>
> For the Core client side you can see
> https://activemq.apache.org/components/artemis/documentation/latest/large-messages.html
>
> For the broker, it would ordinarily treat the large message as a
> chunked stream if doing e.g core->core, or amqp->amqp...but in this
> case having to do core->amqp means the broker will necessarily have to
> convert the message and in doing so it will load the entire message.
>
> (It seems like its that last step currently not handling your sent
> Core messages, because you are sending raw Core payloads that dont
> match the JMS style Core message structure the brokers core->AMQP
> converter is geared around, meaning it falls back to one that tries to
> convert it as a string, which presumably fails due to starting to read
> your bare payload as a size indicator)
>
> On Mon, 25 Jul 2022 at 06:40, Jan Šmucr <jan.sm...@aimtecglobal.com> wrote:
> >
> > Thank you for the feedback.
> > So what would this be the proper way of streaming files (if the code below 
> > is correct)?
> >
> >       final String body = "foo";
> >
> > try (Connection connection = createConnection()) {
> >          Session session = connection.createSession(false, 
> > Session.AUTO_ACKNOWLEDGE);
> >          MessageProducer producer = 
> > session.createProducer(session.createQueue(getQueueName()));
> >          StreamMessage message = session.createStreamMessage();
> >          message.writeBytes(body.getBytes());
> >          producer.send(message);
> >       }
> >
> >       AmqpClient client = createAmqpClient();
> >       AmqpConnection amqpConnection = addConnection(client.connect());
> >       AmqpSession amqpSession = amqpConnection.createSession();
> >       AmqpReceiver receiver = amqpSession.createReceiver(getQueueName());
> >       receiver.flow(100);
> >       AmqpMessage amqpMessage = receiver.receive(1, TimeUnit.SECONDS);
> >       Assert.assertNotNull(amqpMessage);
> >       Assert.assertEquals(body, new String(((Binary) ((AmqpSequence) 
> > amqpMessage.getWrappedMessage().getBody()).getValue().get(0)).getArray()));
> >
> > We want to stream the payloads due to the fact that these can take up to 
> > hundreds of megabytes.
> >
> > Thank you.
> > Jan
> >
> > From: Clebert Suconic<mailto:clebert.suco...@gmail.com>
> > Sent: sobota 23. července 2022 20:50
> > To: users@activemq.apache.org<mailto:users@activemq.apache.org>
> > Subject: Re: Artemis - Large Message - Core => AMQP
> >
> > We could look at enhancing the converters.  But the best would be to change
> > your producer to have the exact format the converter would have.
> >
> > On Sat, Jul 23, 2022 at 2:41 PM Clebert Suconic <clebert.suco...@gmail.com>
> > wrote:
> >
> > > Change your message in a way is compatible ?
> > >
> > > On Fri, Jul 22, 2022 at 3:36 PM Jan Šmucr <jan.sm...@aimtecglobal.com>
> > > wrote:
> > >
> > >> The reason for this is that there's a whole infrastructure built using
> > >> the core protocol, and now we need to connect a Python-based Lambda 
> > >> capable
> > >> of receiving large messages. Is there any other, core-compatible method?
> > >>
> > >> Jan
> > >>
> > >> Dne 22. 7. 2022 21:21 napsal uživatel Clebert Suconic <
> > >> clebert.suco...@gmail.com>:
> > >> If you expect conversions to happen, you have to send messages from
> > >> qpid-ms or core-jms client.
> > >>
> > >>
> > >> On the case:
> > >>
> > >>
> > >> ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
> > >> Connection conn = factory.createConnection(...);
> > >> Session session = conn.createSession(...)
> > >> Producer producer = session.createProducer(....);
> > >> producer.send(session.createTextMessage(YOUR-LARGE-BODY-GOES-HERE);
> > >>
> > >>
> > >>
> > >> Then the conversion from Core to AMQP should happen fine when you
> > >> receive the message on the other side at your Python client.
> > >>
> > >>
> > >>
> > >> If you really must use the Core-API, then you will need to hack your
> > >> way in and find what the JMS client would do.. but at that point it's
> > >> just a non standard way of doing this... You would need to have a very
> > >> good reason to not do the right thing on this case.
> > >>
> > >> On Fri, Jul 22, 2022 at 3:00 PM Clebert Suconic
> > >> <clebert.suco...@gmail.com> wrote:
> > >> >
> > >> > If you’re not using qpid JMS it will not work.
> > >> >
> > >> > On Fri, Jul 22, 2022 at 8:06 AM Andy Yar <andyya...@gmail.com> wrote:
> > >> >>
> > >> >> There is another attempt employing AMQP test structures. It produces
> > >> the same incorrect message body.
> > >> >>
> > >> >> On Fri, Jul 22, 2022 at 12:21 PM Andy Yar <andyya...@gmail.com> wrote:
> > >> >>>
> > >> >>> Hello,
> > >> >>> Using the LargeServerMessageImpl was just an attempt providing a
> > >> seemingly easy way to introduce a kind of Large Message into the test. 
> > >> I'm
> > >> not familiar with the code base at all - so I simply tried to somehow
> > >> provide the requested test replicating my "sending via Core -> receiving
> > >> via Qpid" issue. The same applies to the explicit AMQP conversion - the
> > >> encountered error simply pointed on it. Is there an intended "test way" 
> > >> to
> > >> model the message transfer among different clients/protocols?
> > >> >>>
> > >> >>> Anyway, I've changed the test to employ
> > >> ClientLargeMessageImpl/ClientMessageImpl instead of the server-related
> > >> LargeServerMessageImpl with a very similar result. Does that 
> > >> implementation
> > >> fit the simulated use case (sending via Core -> receiving via Qpid AMQP)
> > >> better or is the explicit AMQP conversion misused?
> > >> >>>
> > >> >>> Please, see the attached patch.
> > >> >>>
> > >> >>> On Mon, Jul 18, 2022 at 3:50 PM Clebert Suconic <
> > >> clebert.suco...@gmail.com> wrote:
> > >> >>>>
> > >> >>>> AMQP to Core and Core to AMQP conversions expect you using JMS
> > >> clients
> > >> >>>> to generate your message. There are certain caveats that both 
> > >> >>>> clients
> > >> >>>> will add to the messages.
> > >> >>>>
> > >> >>>>
> > >> >>>> Usually I have seen more users doing weird conversions in AMQP when
> > >> >>>> they use a C++ or non Java Client.. but on your case you used a Core
> > >> >>>> Client, using a non standard way to send a message (ServerMessage
> > >> from
> > >> >>>> the client)... and it's not clear the message is correctly set for a
> > >> >>>> conversion to work.
> > >> >>>>
> > >> >>>>
> > >> >>>> I need you to provide some explanation on what you're doing.. if 
> > >> >>>> this
> > >> >>>> was  a way to hack a bug your saw or if this is just the way you're
> > >> >>>> using it.
> > >> >>>>
> > >> >>>>
> > >> >>>> if this is how you're actually using, I would suggest you either use
> > >> >>>> the proper APIs or if you're doing some hack for performance
> > >> >>>> consideration you have to set the message in a better way the
> > >> >>>> converters would understand...
> > >> >>>>
> > >> >>>> On Mon, Jul 18, 2022 at 9:38 AM Clebert Suconic
> > >> >>>> <clebert.suco...@gmail.com> wrote:
> > >> >>>> >
> > >> >>>> > Are you using the LargeServerMessageImpl on your client, or that
> > >> was
> > >> >>>> > just a "hack" to reproduce your issue.
> > >> >>>> >
> > >> >>>> >
> > >> >>>> > LargeServerMessageImpl was not meant to be used on the client. But
> > >> if
> > >> >>>> > you're doing that just to show something you faced in production
> > >> it's
> > >> >>>> > ok.. but using the LargeServerMessageImpl to send a Client Message
> > >> is
> > >> >>>> > a big not for me.
> > >> >>>> >
> > >> >>>> > The only reason we do that is for server to server transfer.
> > >> >>>> >
> > >> >>>> > On Mon, Jul 18, 2022 at 7:39 AM Andy Yar <andyya...@gmail.com>
> > >> wrote:
> > >> >>>> > >
> > >> >>>> > > Hello,
> > >> >>>> > > Yes, the 2.23.1 test instance was freshly created.
> > >> >>>> > >
> > >> >>>> > > I've attached a test as a part of ARTEMIS-3897
> > >> >>>> > > <https://issues.apache.org/jira/browse/ARTEMIS-3897>. I hope it
> > >> helps.
> > >> >>>> > >
> > >> >>>> > >
> > >> >>>> > > On Sat, Jul 16, 2022 at 5:21 PM Clebert Suconic <
> > >> clebert.suco...@gmail.com>
> > >> >>>> > > wrote:
> > >> >>>> > >
> > >> >>>> > > > Did you start with fresh data on 2.23.1.
> > >> >>>> > > >
> > >> >>>> > > > If you did please provide a self enclosing test reproducing
> > >> your issue.
> > >> >>>> > > >
> > >> >>>> > > > On Fri, Jul 15, 2022 at 4:29 AM Andy Yar <andyya...@gmail.com>
> > >> wrote:
> > >> >>>> > > >
> > >> >>>> > > > > A quick test using 2.23.1 results in the same error payload
> > >> being
> > >> >>>> > > > received:
> > >> >>>> > > > >
> > >> >>>> > > > > "Message(address='test', durable=True, priority=4,
> > >> >>>> > > > > annotations=AnnotationDict({symbol('x-opt-jms-dest'):
> > >> byte(0),
> > >> >>>> > > > > symbol('x-opt-jms-msg-type'): byte(0)}),
> > >> >>>> > > > > properties={'JMSXDeliveryCount': None, '_AMQ_LARGE_SIZE':
> > >> 67},
> > >> >>>> > > > > body='Conversion to AMQP error: Error reading in
> > >> simpleString,
> > >> >>>> > > > > length=1330464032 is greater than readableBytes=62')"
> > >> >>>> > > > >
> > >> >>>> > > > > Best regards
> > >> >>>> > > > >
> > >> >>>> > > > > On Thu, Jul 14, 2022 at 9:18 PM Clebert Suconic
> > >> >>>> > > > > <clebert.suco...@gmail.com> wrote:
> > >> >>>> > > > > >
> > >> >>>> > > > > > There's been a few fixes in AMQP Large message.
> > >> >>>> > > > > >
> > >> >>>> > > > > >
> > >> >>>> > > > > > More prominently a fix with the JDBC implementation
> > >> between 2.17 and
> > >> >>>> > > > > HEAD.
> > >> >>>> > > > > >
> > >> >>>> > > > > >
> > >> >>>> > > > > > I would definitely recommend you to upgrade.
> > >> >>>> > > > > >
> > >> >>>> > > > > > On Thu, Jul 14, 2022 at 10:26 AM Justin Bertram <
> > >> jbert...@apache.org>
> > >> >>>> > > > > wrote:
> > >> >>>> > > > > > >
> > >> >>>> > > > > > > I would expect this to work. Can you try this on the
> > >> latest release
> > >> >>>> > > > > (i.e.
> > >> >>>> > > > > > > 2.23.1) [1]?
> > >> >>>> > > > > > >
> > >> >>>> > > > > > > If it still doesn't work please open a Jira with all the
> > >> details
> > >> >>>> > > > > necessary
> > >> >>>> > > > > > > to reproduce the problem. An actual test-case would be
> > >> ideal.
> > >> >>>> > > > > > >
> > >> >>>> > > > > > > Thanks!
> > >> >>>> > > > > > >
> > >> >>>> > > > > > >
> > >> >>>> > > > > > > Justin
> > >> >>>> > > > > > >
> > >> >>>> > > > > > > [1]
> > >> https://activemq.apache.org/components/artemis/download/
> > >> >>>> > > > > > >
> > >> >>>> > > > > > > On Thu, Jul 14, 2022 at 9:20 AM Andy Yar <
> > >> andyya...@gmail.com>
> > >> >>>> > > > wrote:
> > >> >>>> > > > > > >
> > >> >>>> > > > > > > > Hello,
> > >> >>>> > > > > > > > Sending a message as a Large Message via Core protocol
> > >> and
> > >> >>>> > > > receiving
> > >> >>>> > > > > > > > it via AMQP on Artemis 2.17.0 ends with receiving the
> > >> following
> > >> >>>> > > > > string
> > >> >>>> > > > > > > > as message body:
> > >> >>>> > > > > > > >
> > >> >>>> > > > > > > > "Conversion to AMQP error: Error reading in
> > >> simpleString, length=y
> > >> >>>> > > > is
> > >> >>>> > > > > > > > greater than readableBytes=x"
> > >> >>>> > > > > > > >
> > >> >>>> > > > > > > > Broker lists the message as Type: Default and Large:
> > >> True.
> > >> >>>> > > > > > > >
> > >> >>>> > > > > > > > The receiver is basically Qpid's:
> > >> >>>> > > > > > > >
> > >> >>>> > > > > > > >
> > >> >>>> > > > >
> > >> >>>> > > >
> > >> https://github.com/apache/qpid-proton/blob/main/python/examples/queue_browser.py
> > >> >>>> > > > > > > >
> > >> >>>> > > > > > > > The doc
> > >> >>>> > > > > > > >
> > >> >>>> > > > >
> > >> >>>> > > >
> > >> https://activemq.apache.org/components/artemis/documentation/2.17.0/large-messages.html
> > >> >>>> > > > > > > > states both Core and AMQP support Large Message. Is
> > >> this approach
> > >> >>>> > > > > > > > valid?
> > >> >>>> > > > > > > >
> > >> >>>> > > > > > > > Thanks
> > >> >>>> > > > > > > >
> > >> >>>> > > > > > > >
> > >> >>>> > > > > >
> > >> >>>> > > > > >
> > >> >>>> > > > > >
> > >> >>>> > > > > > --
> > >> >>>> > > > > > Clebert Suconic
> > >> >>>> > > > >
> > >> >>>> > > > --
> > >> >>>> > > > Clebert Suconic
> > >> >>>> > > >
> > >> >>>> >
> > >> >>>> >
> > >> >>>> >
> > >> >>>> > --
> > >> >>>> > Clebert Suconic
> > >> >>>>
> > >> >>>>
> > >> >>>>
> > >> >>>> --
> > >> >>>> Clebert Suconic
> > >> >
> > >> > --
> > >> > Clebert Suconic
> > >>
> > >>
> > >>
> > >> --
> > >> Clebert Suconic
> > >>
> > > --
> > > Clebert Suconic
> > >
> > --
> > Clebert Suconic
> >
>

Reply via email to