Hello,
I'm using ActiveMQ 5.10.0 in Java 8. I'm not using any container, just
*two* simple Java SE applications on the same machine. My goal is to have
*one* application launch an *embedded* broker and have the other connect to
it using tcp. I am perfectly fine with using ActiveMQ specific code, I
don't need to be vendor agnostic.
The difficulty I'm facing is that I need to *ensure a topic gets created on
the broker* when I call my API create topic method. I need this method to
work on both applications, the one that started the broker, and the one
that just connects to it. What I'm currently doing is:
// Instantiate the broker service
BrokerService brokerService = new BrokerService();
brokerService.setPersistent(false);
// Start the broker, this fails on the 2nd jvm with a bind exception
(address already in use) which is fine
brokerService.addConnector("tcp://localhost:61616");
brokerService.start();
brokerService.waitUntilStarted();
ConnectionFactory connFactory = new
ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic clientSideTopic = session.createTopic("foo");
ConnectionContext connectionContext =
BrokerSupport.getConnectionContext(brokerService.getBroker());
// Create the topic on the broker!
brokerService.getBroker().addDestination(connectionContext,
clientSideTopic, true);
The problem is that on the 2nd process, the one that should not instantiate
the broker, because 1st process already did, I cannot do
brokerService.getBroker() because I don't really have a broker...
How can I get an instance of a remote BrokerService or some other way to
achieve immediate topic creation on the broker?
BTW, not that it matters to the question, but the reason I need this is
because this is an implementation of an existing API which demands these
particular semantics.
Thanks in advance!
I'm using ActiveMQ 5.10.0 in Java 8. I'm not using any container, just
*two* simple Java SE applications on the same machine. My goal is to have
*one* application launch an *embedded* broker and have the other connect to
it using tcp. I am perfectly fine with using ActiveMQ specific code, I
don't need to be vendor agnostic.
The difficulty I'm facing is that I need to *ensure a topic gets created on
the broker* when I call my API create topic method. I need this method to
work on both applications, the one that started the broker, and the one
that just connects to it. What I'm currently doing is:
// Instantiate the broker service
BrokerService brokerService = new BrokerService();
brokerService.setPersistent(false);
// Start the broker, this fails on the 2nd jvm with a bind exception
(address already in use) which is fine
brokerService.addConnector("tcp://localhost:61616");
brokerService.start();
brokerService.waitUntilStarted();
ConnectionFactory connFactory = new
ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic clientSideTopic = session.createTopic("foo");
ConnectionContext connectionContext =
BrokerSupport.getConnectionContext(brokerService.getBroker());
// Create the topic on the broker!
brokerService.getBroker().addDestination(connectionContext,
clientSideTopic, true);
The problem is that on the 2nd process, the one that should not instantiate
the broker, because 1st process already did, I cannot do
brokerService.getBroker() because I don't really have a broker...
How can I get an instance of a remote BrokerService or some other way to
achieve immediate topic creation on the broker?
BTW, not that it matters to the question, but the reason I need this is
because this is an implementation of an existing API which demands these
particular semantics.
Thanks in advance!