Using Topics and Queues for both Java-based and Node.js-based services

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Using Topics and Queues for both Java-based and Node.js-based services

Jeroen van Ooststroom
Hello,

Coming back to the discussion on the apache-activemq IRC channel of
possible Topics and Queues when using ActiveMQ’s MQTT service.

First a bit of history then. We’ve have been using multiple Java-based
services for quite a bit of years now utilizing ActiveMQ’s JMS Topic and
the occasional JMS Queues. Recently, we started expanding by adding a
multitude of Node.js-based services to the mix. At some point these
services also needed the capability of sending messages. As we already
were using ActiveMQ for JMS Messaging with our Java-based services it
seemed obvious to stick with ActiveMQ even for our Node.js-based
services. However, they can’t leverage JMS evidently. Therefore we
picked MQTT and enabled MQTT on our ActiveMQ server next to the already
supported JMS. As these Node.js services have been deployed stand-alone
up until now, there was no harm in using Topics for this approach.

However, we are no looking into deploying these Node.js-based services
in a clustered fashion now. (We have an Amazon ECS Cluster to which we
want to deploy multiple Containers of the same Node.js-based services.
This imposes a problem as for certain messages we only want a single
subscriber of a particular service to receive and handle that message.
Hence we were leaning towards using Queues instead of Topics for these
scenarios. Unfortunately as member dejanb pointed out, MQTT doesn’t
support Queues.

So our question still remains similar. How can we utilize both JMS Topic
(1-to-N) and Queue-like (1-to-1) behaviour for both our Java-based and
Node.js-based services using ActiveMQ? (We’d like to possible share
these Topics and Queues among the Java- and Node.js-based services.) Is
there another approach we should be looking into from a Node.js-based
perspective and move away from MQTT and potentially use something
different that ActiveMQ provides?

Thanks,
Jeroen...

Reply | Threaded
Open this post in threaded view
|

Re: Using Topics and Queues for both Java-based and Node.js-based services

Ulf Lilleengen
On 12. des. 2017 22:50, Jeroen van Ooststroom wrote:

> Hello,
>
> Coming back to the discussion on the apache-activemq IRC channel of
> possible Topics and Queues when using ActiveMQ’s MQTT service.
>
> First a bit of history then. We’ve have been using multiple Java-based
> services for quite a bit of years now utilizing ActiveMQ’s JMS Topic and
> the occasional JMS Queues. Recently, we started expanding by adding a
> multitude of Node.js-based services to the mix. At some point these
> services also needed the capability of sending messages. As we already
> were using ActiveMQ for JMS Messaging with our Java-based services it
> seemed obvious to stick with ActiveMQ even for our Node.js-based
> services. However, they can’t leverage JMS evidently. Therefore we
> picked MQTT and enabled MQTT on our ActiveMQ server next to the already
> supported JMS. As these Node.js services have been deployed stand-alone
> up until now, there was no harm in using Topics for this approach.
>
> However, we are no looking into deploying these Node.js-based services
> in a clustered fashion now. (We have an Amazon ECS Cluster to which we
> want to deploy multiple Containers of the same Node.js-based services.
> This imposes a problem as for certain messages we only want a single
> subscriber of a particular service to receive and handle that message.
> Hence we were leaning towards using Queues instead of Topics for these
> scenarios. Unfortunately as member dejanb pointed out, MQTT doesn’t
> support Queues.
>
> So our question still remains similar. How can we utilize both JMS Topic
> (1-to-N) and Queue-like (1-to-1) behaviour for both our Java-based and
> Node.js-based services using ActiveMQ? (We’d like to possible share
> these Topics and Queues among the Java- and Node.js-based services.) Is
> there another approach we should be looking into from a Node.js-based
> perspective and move away from MQTT and potentially use something
> different that ActiveMQ provides?
>

I'm afraid I don't have a good answer on how you can use MQTT, but you
might want to have a look at using AMQP, which has support for queues,
topics, JMS clients (qpid-jms[1]) and node.js clients (rhea[2]).

[1] https://qpid.apache.org/components/jms/index.html
[2] https://github.com/grs/rhea

--
Ulf
Reply | Threaded
Open this post in threaded view
|

Re: Using Topics and Queues for both Java-based and Node.js-based services

adrianbro
I think RabbitMQ let’s you map MQTT topics to AMQP  can remember for sure
but have a look at https://www.rabbitmq.com/mqtt.html

On Wed, 13 Dec 2017 at 8:04 pm, Ulf Lilleengen <[hidden email]> wrote:

> On 12. des. 2017 22:50, Jeroen van Ooststroom wrote:
> > Hello,
> >
> > Coming back to the discussion on the apache-activemq IRC channel of
> > possible Topics and Queues when using ActiveMQ’s MQTT service.
> >
> > First a bit of history then. We’ve have been using multiple Java-based
> > services for quite a bit of years now utilizing ActiveMQ’s JMS Topic and
> > the occasional JMS Queues. Recently, we started expanding by adding a
> > multitude of Node.js-based services to the mix. At some point these
> > services also needed the capability of sending messages. As we already
> > were using ActiveMQ for JMS Messaging with our Java-based services it
> > seemed obvious to stick with ActiveMQ even for our Node.js-based
> > services. However, they can’t leverage JMS evidently. Therefore we
> > picked MQTT and enabled MQTT on our ActiveMQ server next to the already
> > supported JMS. As these Node.js services have been deployed stand-alone
> > up until now, there was no harm in using Topics for this approach.
> >
> > However, we are no looking into deploying these Node.js-based services
> > in a clustered fashion now. (We have an Amazon ECS Cluster to which we
> > want to deploy multiple Containers of the same Node.js-based services.
> > This imposes a problem as for certain messages we only want a single
> > subscriber of a particular service to receive and handle that message.
> > Hence we were leaning towards using Queues instead of Topics for these
> > scenarios. Unfortunately as member dejanb pointed out, MQTT doesn’t
> > support Queues.
> >
> > So our question still remains similar. How can we utilize both JMS Topic
> > (1-to-N) and Queue-like (1-to-1) behaviour for both our Java-based and
> > Node.js-based services using ActiveMQ? (We’d like to possible share
> > these Topics and Queues among the Java- and Node.js-based services.) Is
> > there another approach we should be looking into from a Node.js-based
> > perspective and move away from MQTT and potentially use something
> > different that ActiveMQ provides?
> >
>
> I'm afraid I don't have a good answer on how you can use MQTT, but you
> might want to have a look at using AMQP, which has support for queues,
> topics, JMS clients (qpid-jms[1]) and node.js clients (rhea[2]).
>
> [1] https://qpid.apache.org/components/jms/index.html
> [2] https://github.com/grs/rhea
>
> --
> Ulf
>
--
Regards
Adrian Brown
Reply | Threaded
Open this post in threaded view
|

Re: Using Topics and Queues for both Java-based and Node.js-based services

Tim Bain
There are Javascript libraries for the STOMP (
http://activemq.apache.org/stomp.html) protocol, though I can't vouch for
or recommend any of them specifically.

Tim

On Dec 13, 2017 2:22 AM, "Adrian Brown" <[hidden email]> wrote:

> I think RabbitMQ let’s you map MQTT topics to AMQP  can remember for sure
> but have a look at https://www.rabbitmq.com/mqtt.html
>
> On Wed, 13 Dec 2017 at 8:04 pm, Ulf Lilleengen <[hidden email]> wrote:
>
> > On 12. des. 2017 22:50, Jeroen van Ooststroom wrote:
> > > Hello,
> > >
> > > Coming back to the discussion on the apache-activemq IRC channel of
> > > possible Topics and Queues when using ActiveMQ’s MQTT service.
> > >
> > > First a bit of history then. We’ve have been using multiple Java-based
> > > services for quite a bit of years now utilizing ActiveMQ’s JMS Topic
> and
> > > the occasional JMS Queues. Recently, we started expanding by adding a
> > > multitude of Node.js-based services to the mix. At some point these
> > > services also needed the capability of sending messages. As we already
> > > were using ActiveMQ for JMS Messaging with our Java-based services it
> > > seemed obvious to stick with ActiveMQ even for our Node.js-based
> > > services. However, they can’t leverage JMS evidently. Therefore we
> > > picked MQTT and enabled MQTT on our ActiveMQ server next to the already
> > > supported JMS. As these Node.js services have been deployed stand-alone
> > > up until now, there was no harm in using Topics for this approach.
> > >
> > > However, we are no looking into deploying these Node.js-based services
> > > in a clustered fashion now. (We have an Amazon ECS Cluster to which we
> > > want to deploy multiple Containers of the same Node.js-based services.
> > > This imposes a problem as for certain messages we only want a single
> > > subscriber of a particular service to receive and handle that message.
> > > Hence we were leaning towards using Queues instead of Topics for these
> > > scenarios. Unfortunately as member dejanb pointed out, MQTT doesn’t
> > > support Queues.
> > >
> > > So our question still remains similar. How can we utilize both JMS
> Topic
> > > (1-to-N) and Queue-like (1-to-1) behaviour for both our Java-based and
> > > Node.js-based services using ActiveMQ? (We’d like to possible share
> > > these Topics and Queues among the Java- and Node.js-based services.) Is
> > > there another approach we should be looking into from a Node.js-based
> > > perspective and move away from MQTT and potentially use something
> > > different that ActiveMQ provides?
> > >
> >
> > I'm afraid I don't have a good answer on how you can use MQTT, but you
> > might want to have a look at using AMQP, which has support for queues,
> > topics, JMS clients (qpid-jms[1]) and node.js clients (rhea[2]).
> >
> > [1] https://qpid.apache.org/components/jms/index.html
> > [2] https://github.com/grs/rhea
> >
> > --
> > Ulf
> >
> --
> Regards
> Adrian Brown
>