ActiveMQ not starting soon enough

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

ActiveMQ not starting soon enough

smunro
Hello,

I'm having a small issue where the ActiveMQ Service has not initialized in
time for a bundle I have developed. With our own bundles, we can resolve
ordering with declarative services, using @Reference, but I'm not sure how
to achieve the same with ActiveMQ. Basically, I want to make sure the
ActiveMQ bundle is actively up and running before any of my bundles, without
messing with start orders

Stephen



--
Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html
Reply | Threaded
Open this post in threaded view
|

Re: ActiveMQ not starting soon enough

jbonofre
Hi Stephen,

I would say, you have two approach:

- in the start method of your bundle, you can create a listener that check if
the ActiveMQ transport connector (the tcp port for instance) is bound and then
you move on.
- AFAIR, ActiveMQ OSGi exposes the BrokerService as an OSGi service. So, you can
have a tracker on this one.

Regards
JB

On 12/08/2017 02:13 PM, smunro wrote:

> Hello,
>
> I'm having a small issue where the ActiveMQ Service has not initialized in
> time for a bundle I have developed. With our own bundles, we can resolve
> ordering with declarative services, using @Reference, but I'm not sure how
> to achieve the same with ActiveMQ. Basically, I want to make sure the
> ActiveMQ bundle is actively up and running before any of my bundles, without
> messing with start orders
>
> Stephen
>
>
>
> --
> Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html
>

--
Jean-Baptiste Onofré
[hidden email]
http://blog.nanthrax.net
Talend - http://www.talend.com
Reply | Threaded
Open this post in threaded view
|

Re: ActiveMQ not starting soon enough

smunro
This post was updated on .
Thanks JB,

The second approach certainly feels the cleanest to me. I gave that a go and
found it couldn't be achieved due to both the broker and client bundles
exposing the same package:
 <Import-Package>*,org.apache.activemq.broker</Import-Package>

So, sadly I can't get away with doing:
@Reference
public void setBrokerService(BrokerService brokerService){ .. }

This was raised on the activemq forums last April:
http://activemq.2283324.n4.nabble.com/ActiveMQ-and-OSGi-Two-bundles-export-the-same-package-org-apache-activemq-broker-td4730106.html

I'll try your first suggested approach, but I'm a little disappointed I
couldn't get the second method to work :(

Thanks again,
Stephen



--
Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html
Reply | Threaded
Open this post in threaded view
|

Re: ActiveMQ not starting soon enough

jbonofre
Hi Stephen,

I see. Let me take a look in ActiveMQ to see why client also ship broker package
(it sounds weird to me).

Regards
JB

On 12/09/2017 12:46 PM, smunro wrote:

> Thanks JB,
>
> The second approach certainly feels the cleanest to me. I gave that a go and
> found it couldn't be achieved due to both the broker and client bundles
> exposing the same package:
>   <Import-Package>*,org.apache.activemq.broker</Import-Package>
>
> So, sadly I can't get away with doing:
> @Reference
> public void setBrokerService(BrokerService brokerService){ .. }
>
> This was raised on the activemq forums last April:
> http://activemq.2283324.n4.nabble.com/ActiveMQ-and-OSGi-Two-bundles-export-the-same-package-org-apache-activemq-broker-td4730106.html
>
> I'll try your first suggested approach, but I'm ma little disappointed I
> couldn't get the second method to work :(
>
> Thanks again,
> Stephen
>
>
>
> --
> Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html
>

--
Jean-Baptiste Onofré
[hidden email]
http://blog.nanthrax.net
Talend - http://www.talend.com
Reply | Threaded
Open this post in threaded view
|

Re: ActiveMQ not starting soon enough

cschneider
In reply to this post by smunro
Why cant your other bundles start without activemq?
What would happen if they do?

Christian

2017-12-08 14:13 GMT+01:00 smunro <[hidden email]>:
Hello,

I'm having a small issue where the ActiveMQ Service has not initialized in
time for a bundle I have developed. With our own bundles, we can resolve
ordering with declarative services, using @Reference, but I'm not sure how
to achieve the same with ActiveMQ. Basically, I want to make sure the
ActiveMQ bundle is actively up and running before any of my bundles, without
messing with start orders

Stephen



--
Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html



--
--
Christian Schneider

http://www.liquid-reality.de

Computer Scientist

Reply | Threaded
Open this post in threaded view
|

Re: ActiveMQ not starting soon enough

smunro
Hello Christian,

I have a bundle with uses both activemq-broker/activemq-client features

The Idea JB gave me, led me to try:
@Reference
public void setBrokerService(BrokerService brokerService}{}

My thinking here was that by the time this service reference was injected,
the activemq broker would be up and running.

To answer your question, the bundles simply throw connection exceptions. The
current solution I have is to entry a retry loop and catch and exception and
try to connect, but I know there is a failover setting in activemq would be
achieve roughly the same behaviour.

The behaviour of the bundle is to try and first connect to the activemq
subscription bundle and get updates coming in.



--
Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html