cjwmorgan-sol commented on issue #4: [WIP] Failover implementation
URL: https://github.com/apache/activemq-nms-amqp/pull/4#issuecomment-503306794
 
 
   I appreciate this is a work in progress, so perhaps you already have plans 
for what follows.  From what I see so far, here are some consideration that may 
effect your plans.
   
   Using QPID JMS as a model for the provider interface is excellent.  It was 
my inspiration as well when separating the functional layers.  The NMS 'cloak' 
and JMS 'facade' are pretty much a one to one mapping. You may find a lot of 
useful code here to save retyping in the same classes and methods.
   
   There are a couple of fundamental differences between Proton AMQP and 
AmqpNetLite that need to considered.  There is the fundamental lack of control 
of the transport session. This forced me to defer creating the connection until 
some action, like start, was taken just to allow the application to set the 
connection ID.  I see you have reworked this since yesterday along the same 
lines.
   
   A bigger problem is that Proton provides a JMS friendly threading model.  
AmqpNetLite does not, and all the callbacks occur on the transport thread. 
JMS/NMS requires callbacks occur on known/dedicated
   threads for each session.  I chose a simple model, where a thread per 
session is created to make callbacks as well as a thread per connection for 
exceptions. The AmqpNetLite transport callback just queue events to be 
processed on the dedicated threads.
   This could perhaps be overhauled using .NET thread pools or task, but it is 
important to take into account in your design. The NMS Provider cannot be 
simply pass through to AmqpNetLite, it must take a more active role to control 
the threading model.
   
   I'll try to keep up to date on the changes as they come. 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to