[ 
https://issues.apache.org/jira/browse/QPIDJMS-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15748607#comment-15748607
 ] 

Milan Nikl commented on QPIDJMS-230:
------------------------------------

Thank you very much for your advice. Based on it I was able to create my own 
implementation of org.apache.activemq.network.jms.JmsConnector and 
org.apache.activemq.network.jms.DestinationBridge. The latter class is in fact 
responsible for creating anonymous MessageProducers (in my case JmsQueueSender 
instances).

Now I face similar issue - I have 10 local Queues for sending messages to one 
remote Queue and one for receiving messages (from one remote Queue). If I 
initialize my bridges I still have 10 AmqpFixedProducer instances logged. So 
each JmsQueueSender has its own AmqpFixedProducer even if one shared 
AmqpFixedProducer would be enough.

My best guess is that JmsSession.createSender(Queue queue) leads via several 
calls to AmqpProvider.create method call which results in creating new 
AmqpProducer instance. There I'm getting a bit lost in all the inheritance 
maze...

I might be wrong on this and there is some internal reson for having such 
setup. But I wonder why the AmqpProducer cannot be shared in this case.

> AmqpFixedProducer created for every message sent
> ------------------------------------------------
>
>                 Key: QPIDJMS-230
>                 URL: https://issues.apache.org/jira/browse/QPIDJMS-230
>             Project: Qpid JMS
>          Issue Type: Bug
>          Components: qpid-jms-client
>    Affects Versions: 0.11.1
>            Reporter: Milan Nikl
>            Priority: Minor
>              Labels: performance
>         Attachments: amqps_frames.log, apache.qpid.log
>
>
> *Configuration:* Hi, I'm using ActiveMQ 5.14.1 to connect from a device 
> (running linux derivate OS) to Azure IoT Hub. With Qpid JMS client 0.11.1 and 
> protonj 0.15.0 providing AMQPS based JmsConnection implementation. I'm using 
> Destination bridges to connect my local queues to remote queues.
> *Problem description:* For every message I send to the server there is new 
> connection attempt made. I can see those reconnections in Azure IoT Hub 
> monitoring, in AMQPS frames logs, qpid log etc. And while I have the same 
> JmsConnection instance active for the whole time, in reality the device keeps 
> connecting and disconnecting for each message, which presents additional load 
> for both IoT Hub and device. Message throughput is really affected by this 
> behaviour.
> When I try running similar code from my desktop using Qpid JMS client 0.11.1 
> to send messages, it creates single AmqpFixedProducer at start and 
> disconnects when all messages are sent. I'm not aware of any special 
> settings, both application use JmsConnectionFactory.setForceSyncSend(true).
> So ActiveMQ or some of its components could be blamed for this. But I would 
> like to know if someone has any experience with similar problem and maybe 
> some idea how to solve it.
> Thanks!
> Attachments: In logs you can see the device connecting, then some already 
> enqueued messages are sent. Once the initial load is processed, one message 
> per minute should be sent.
> Originaly filed in 
> http://qpid.2158936.n2.nabble.com/AmqpFixedProducer-created-for-every-message-sent-td7655816.html



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to