The only components which support transformers are diverts and core bridges. You can use the transformer-class-name attribute in the corresponding WildFly configuration to set it.
However, this will not help your issue because the transformer has nothing to do with ObjectMessage serialization. The serialization & deserialization is performed when you invoke the ObjectMessage's setObject & getObject methods respectively. There's really no way to avoid the performance penalty when using ObjectMessage. Justin On Sat, Mar 18, 2023 at 1:16 AM Walter Krix (Nokia) <walter.k...@nokia.com> wrote: > Hey Justin, > > > Just wanted to drop a quick note to say thanks for the detailed answer you > gave us. It really helped shed some light on the issue we're dealing with. > > > We're considering your suggestions and are thinking about trying out some > other message types besides ObjectMessage. But if we're stuck using > ObjectMessage, we might have a workaround to skip the > serialization/deserialization process using a simple transformer. > > > We whipped up a custom transformer class called > "NoSerializationTransformer" that implements the Transformer interface. > Here's what the code looks like: > > > public class NoSerializationTransformer implements Transformer { > > > @Override > > public Message transform(Message message) { > > return message; > > } > > } > > > Do you know if it's possible to set this custom transformer for the > Artemis subsystem of Wildfly? We checked the docs but couldn't find the > info we needed. Not sure if this transformer approach is even doable, or if > this code snippet would be enough. Any advice on what we should do next? > > > Thanks again for your time and expertise, Justin. Looking forward to > hearing back from you. > > > Cheers, > > Walter > > ________________________________ > From: Justin Bertram <jbert...@apache.org> > Sent: Saturday, March 18, 2023 2:49:33 AM > To: users@activemq.apache.org <users@activemq.apache.org> > Subject: Re: wildfly 26.1.2 support > > [You don't often get email from jbert...@apache.org. Learn why this is > important at https://aka.ms/LearnAboutSenderIdentification ] > > CAUTION: This is an external email. Please be very careful when clicking > links or opening attachments. See http://nok.it/ext for additional > information. > > > > As far as I'm aware there is no optimization to avoid serialization for > ObjectMessage instances even within the same JVM. I think such an > optimization is theoretically feasible, but it would not be > straightforward, and it would be optimizing a use-case that's well-known > for bad performance. In short, if you want good performance don't use > ObjectMessage. > > The "Performance Tuning" chapter in the ActiveMQ Artemis documentation [1] > states: > > Avoid ObjectMessage. ObjectMessage is convenient but it comes at a > cost. The body of a > ObjectMessage uses Java serialization to serialize it to bytes. The > Java serialized form of > even small objects is very verbose so takes up a lot of space on the > wire, also Java > serialization is slow compared to custom marshalling techniques. Only > use ObjectMessage > if you really can't use one of the other message types, i.e. if you > really don't know the type > of the payload until run-time. > > There is even a comment on the ActiveMQ Artemis implementation of > ObjectMessage (i.e. > org.apache.activemq.artemis.jms.client.ActiveMQObjectMessage) [2]: > > /** > * ActiveMQ Artemis implementation of a JMS ObjectMessage. > * <br> > * Don't used ObjectMessage if you want good performance! > * <p> > * Serialization is slooooow! > */ > > I have personally warned folks away from ObjectMessage many times on Stack > Overflow not just because of the performance issues, but because of > security issues as well. > > In short, don't use ObjectMessage if at all possible. > > > Justin > > [1] > > https://activemq.apache.org/components/artemis/documentation/latest/perf-tuning.html#tuning-jms > [2] > > https://github.com/apache/activemq-artemis/blob/main/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQObjectMessage.java#L33 > > On Fri, Mar 17, 2023 at 5:52 PM Walter Krix (Nokia) <walter.k...@nokia.com > > > wrote: > > > Dear ActiveMQ Artemis Developers, > > > > > > I am writing to inquire about the configuration of the ActiveMQ Artemis > > subsystem in Wildfly 26.1.2, with regards to serialization and > > deserialization of complex Java objects. > > > > > > Currently, when using Artemis on Wildfly and sending complex Java > objects, > > the message is automatically serialized. However, I would like to disable > > this feature if possible, as I believe it should not be necessary since > > both Artemis and Wildfly are running within the same JVM. > > > > > > I would greatly appreciate it if you could provide me with information on > > how to achieve this configuration. Any guidance, documentation or > resources > > you can offer to assist me in this matter would be most helpful. > > > > > > Thank you for your time and attention to this matter. I look forward to > > hearing back from you soon. > > > > > > Sincerely, > > > > Walter Krix > > > > > > >