Coder Social home page Coder Social logo

Comments (7)

tahseenjamal avatar tahseenjamal commented on August 15, 2024

And the line causing the issue is in the transport.py in the if statement

not (("127.0.0.1", port) in sorted_host_and_ports

This means if 127.0.0.1 is not there in host, put it :-| Why would you do that ?

from stomp.py.

tahseenjamal avatar tahseenjamal commented on August 15, 2024

Am sharing information that if there are two actvemq running on the same machine, one which is listening on localhost and another on LAN IP, the current stomp.py library always connects to localhost even if in connection LAN IP is explicitly mentioned

from stomp.py.

jasonrbriggs avatar jasonrbriggs commented on August 15, 2024

The line you quote...

not (("127.0.0.1", port) in sorted_host_and_ports

...only applies if localhost or 127.0.0.1 is included in the list of hosts when creating the connection. i.e. if localhost is in the list of hosts already, then include 127.0.0.1 as well. I can't remember the exact defect that requires that behaviour (this was code likely added a decade ago frankly), but it does not mean that localhost is included by default (it is not). If localhost is included, there is an option (prefer_localhost) which defaults to True, so it picks localhost over any other connection (for perf reasons primarily). As a consequence, I don't recognise this as a valid issue.

from stomp.py.

tahseenjamal avatar tahseenjamal commented on August 15, 2024

If you don't believe me, run two activemq on a single VM one listening to localhost and other listening to LAN IP of the machine

And then try to connect and produce data to the queue using localhost and then once using LAN IP

You would see that in both the cases it would connect to activemq on localhost and data would be pushed in that. I tested this use case

And what I pointed out, I edited that line in transport.py in my folder and then it corrected

from stomp.py.

jasonrbriggs avatar jasonrbriggs commented on August 15, 2024

I've tried running multiple versions of activemq before. As far as I know you can't (at least not without hacking something). I have tried running activemq on localhost and another instance on another machine, and then tested sending messages to both. It works as expected. A message with localhost as the host goes to the local activemq. A message with the other server name as the host goes to the remote activemq.

from stomp.py.

tahseenjamal avatar tahseenjamal commented on August 15, 2024

You didn't understand what I said. You don't have to run multiple versions. You use

  1. One activemq binding to localhost
  2. One activemq binding to LAN IP of same machine

Now if you try to connect to the activemq that has binding on LAN IP of machine, your client would still connect to the activemq that has binding with localhost

from stomp.py.

jasonrbriggs avatar jasonrbriggs commented on August 15, 2024

Why not use prefer_localhost=False, try_loopback_connect=False for the constructor then if you want strict control of the connection.

from stomp.py.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.