Наконец-то найдено решение: документация WSO2 (как обычно) неполная и в этом случае некорректная.
Прежде всего, второй производитель JMS должен иметь CacheLevel выше SESSION (т. Е. Значение установлено на * 1003).* auto , потребитель или производитель в axis.xml конфигурации, например:
<parameter name="secondConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
<parameter name="java.naming.provider.url" locked="false">file:bindings</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">MYQUEUEQCF</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
<parameter name="transport.jms.UserName" locked="false"></parameter>
<parameter name="transport.jms.Password" locked="false"></parameter>
<parameter name="transport.jms.CacheLevel" locked="false">producer</parameter>
</parameter>
Это потому, что JMSProducerв противном случае будет использоваться фабрика соединений по умолчанию, основанная на коде на github.
Во-вторых, в документации неправильно указано имя параметра. Используемый параметр называется transport.jms.ConnectionFactory и not transport.jms.ConnectionFactoryJNDIName .
Кроме того, значение параметра относится к общему внутреннему axis2 имени фабрики соединений, т.е. secondConnectionFactory в приведенном выше примере вместо имени JNDI MYQUEUEQCF.
Таким образом, при следующей конфигурации сообщение корректно отправляется во вторую очередь:
<endpoint name="myEndpoint" xmlns="http://ws.apache.org/ns/synapse">
<address format="pox" uri="jms://MY_QUEUE_NAME?transport.jms.ConnectionFactory=secondConnectionFactory&java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory&java.naming.provider.url=file:bindings&transport.jms.DestinationType=queue"/>
</endpoint>