Generally speaking, using JMS from Spring Boot for asynchronous
communication makes sense. This is a common use-case.

My question is why are you using a JMS queue in conjunction with MQTT. Why
not a JMS topic together with MQTT or a JMS queue together with STOMP?

The problem with using a JMS queue and MQTT is that, as I mentioned
previously, MQTT is fundamentally a pub/sub protocol so it doesn't really
work well with the point-to-point semantics of a JMS queue. Given this
discrepancy I'm not sure it actually is possible to make your use-case work.


Justin

On Sat, May 4, 2024 at 2:36 AM Pushparaj Chinnathambi <pushpara...@raster.in>
wrote:

> The reason I’m using JMS is to send messages from a Spring Boot
> microservice. This is because, in my architecture, I’m utilizing
> asynchronous communication between the microservices using apache activemq
> artemis queues.
>
> On Sat, 4 May, 2024, 10:50 am Justin Bertram, <jbert...@apache.org> wrote:
>
> > FYI - I opened ARTEMIS-4760 [1] for this issue. I'll send a PR with a fix
> > soon.
> >
> >
> > Justin
> >
> > [1] https://issues.apache.org/jira/browse/ARTEMIS-4760
> >
> > On Fri, May 3, 2024 at 12:46 PM Justin Bertram <jbert...@apache.org>
> > wrote:
> >
> > > I believe this is a bug in the MQTT implementation. As noted in the
> > > documentation [1]:
> > >
> > > > Automatic queue creation is for queues that would not otherwise be
> > > created during normal operation.
> > >
> > > However, the MQTT implementation is deciding on whether to create the
> > > subscription queue based on the <auto-create-queues> setting. I'll
> open a
> > > Jira and get this fixed.
> > >
> > > In the meantime you can work-around this by setting
> <auto-create-queues>
> > > to true for the relevant address(es).
> > >
> > >
> > > Justin
> > >
> > > [1]
> > >
> >
> https://activemq.apache.org/components/artemis/documentation/latest/address-model.html#automatic-configuration
> > >
> > > On Tue, Apr 30, 2024 at 8:41 AM Pushparaj Chinnathambi <
> > > pushpara...@raster.in> wrote:
> > >
> > >> Hi,
> > >>           I’m trying to connect an ActiveMQ Artemis topic queue with
> the
> > >> following configurations. Based on my settings, I don’t want to create
> > >> dynamic queues when clients establish new connections. However, after
> > >> applying this configuration, I’m unable to connect to my topic queue.
> > >> Could
> > >> you please explain why this is happening and guide me to connect the
> > topic
> > >> queue without creating the new queue?
> > >>
> > >> *broker.xml* configuration
> > >>
> > >> ```
> > >> <address-settings>
> > >>          <!-- if you define auto-create on certain queues, management
> > has
> > >> to be auto-create -->
> > >>          <address-setting match="activemq.management#">
> > >>             <dead-letter-address>DLQ</dead-letter-address>
> > >>             <expiry-address>ExpiryQueue</expiry-address>
> > >>             <redelivery-delay>0</redelivery-delay>
> > >>             <!-- with -1 only the global-max-size is in use for
> limiting
> > >> -->
> > >>             <max-size-bytes>-1</max-size-bytes>
> > >>
> > >>
> > <message-counter-history-day-limit>10</message-counter-history-day-limit>
> > >>             <address-full-policy>PAGE</address-full-policy>
> > >>             <auto-create-queues>false</auto-create-queues>
> > >>             <auto-create-addresses>false</auto-create-addresses>
> > >>          </address-setting>
> > >>          <!--default for catch all-->
> > >>          <address-setting match="#">
> > >>             <dead-letter-address>DLQ</dead-letter-address>
> > >>             <expiry-address>ExpiryQueue</expiry-address>
> > >>             <redelivery-delay>0</redelivery-delay>
> > >>
> > >>
> > >>
> > <message-counter-history-day-limit>10</message-counter-history-day-limit>
> > >>             <address-full-policy>PAGE</address-full-policy>
> > >>             <auto-create-queues>false</auto-create-queues>
> > >>             <auto-create-addresses>false</auto-create-addresses>
> > >>             <auto-delete-queues>false</auto-delete-queues>
> > >>             <auto-delete-addresses>false</auto-delete-addresses>
> > >>
> > >>             <!-- The size of each page file -->
> > >>             <page-size-bytes>10M</page-size-bytes>
> > >>
> > >>             <!-- When we start applying the address-full-policy, e.g
> > >> paging
> > >> -->
> > >>             <!-- Both are disabled by default, which means we will use
> > the
> > >> global-max-size/global-max-messages  -->
> > >>             <max-size-bytes>-1</max-size-bytes>
> > >>             <max-size-messages>-1</max-size-messages>
> > >>
> > >>             <!-- When we read from paging into queues (memory) -->
> > >>
> > >>             <max-read-page-messages>-1</max-read-page-messages>
> > >>             <max-read-page-bytes>20M</max-read-page-bytes>
> > >>
> > >>             <!-- Limit on paging capacity before starting to throw
> > errors
> > >> -->
> > >>
> > >>             <page-limit-bytes>-1</page-limit-bytes>
> > >>             <page-limit-messages>-1</page-limit-messages>
> > >>           </address-setting>
> > >>       </address-settings>
> > >> ```
> > >>
> > >> by using this configuration I'm facing queue not found error in
> > >> *artemis.log* file
> > >>
> > >> ```
> > >> 2024-04-29 19:15:34,563 ERROR
> > >> [org.apache.activemq.artemis.core.protocol.mqtt] AMQ834002: Error
> > >> processing control packet:
> > >>
> MqttSubscribeMessage[fixedHeader=MqttFixedHeader[messageType=SUBSCRIBE,
> > >> isDup=false, qosLevel=AT_LEAST_ONCE, isRetain=false,
> > remainingLength=35],
> > >> variableHeader=MqttMessageIdAndPropertiesVariableHeader[messageId=1,
> > >> properties=io.netty.handler.codec.mqtt.MqttProperties@511f28bc],
> > >>
> > >>
> >
> payload=MqttSubscribePayload[MqttTopicSubscription[topicFilter=ONEEMR/PUSH_NOTIFICATION_TOPIC,
> > >> option=SubscriptionOption[qos=AT_LEAST_ONCE, noLocal=false,
> > >> retainAsPublished=false, retainHandling=SEND_AT_SUBSCRIBE]]]]
> > >>
> org.apache.activemq.artemis.api.core.ActiveMQNonExistentQueueException:
> > >> AMQ229017: Queue ONEEMR.PUSH_NOTIFICATION_TOPIC does not exist
> > >>         at
> > >>
> > >>
> >
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTSubscriptionManager.createQueueForSubscription(MQTTSubscriptionManager.java:163)
> > >> ~[artemis-mqtt-protocol-2.33.0.jar:2.33.0]
> > >>         at
> > >>
> > >>
> >
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTSubscriptionManager.addSubscription(MQTTSubscriptionManager.java:108)
> > >> ~[artemis-mqtt-protocol-2.33.0.jar:2.33.0]
> > >>         at
> > >>
> > >>
> >
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTSubscriptionManager.addSubscriptions(MQTTSubscriptionManager.java:303)
> > >> ~[artemis-mqtt-protocol-2.33.0.jar:2.33.0]
> > >>         at
> > >>
> > >>
> >
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTProtocolHandler.handleSubscribe(MQTTProtocolHandler.java:382)
> > >> ~[artemis-mqtt-protocol-2.33.0.jar:2.33.0]
> > >>         at
> > >>
> > >>
> >
> org.apache.activemq.artemis.core.protocol.mqtt.MQTTProtocolHandler.act(MQTTProtocolHandler.java:177)
> > >> ~[artemis-mqtt-protocol-2.33.0.jar:2.33.0]
> > >>         at
> > >> org.apache.activemq.artemis.utils.actors.Actor.doTask(Actor.java:32)
> > >> ~[artemis-commons-2.33.0.jar:2.33.0]
> > >>         at
> > >>
> > >>
> >
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68)
> > >> ~[artemis-commons-2.33.0.jar:2.33.0]
> > >>         at
> > >>
> > >>
> >
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> > >> [?:?]
> > >>         at
> > >>
> > >>
> >
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> > >> [?:?]
> > >>         at
> > >>
> > >>
> >
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
> > >> [artemis-commons-2.33.0.jar:2.33.0]
> > >> ```
> > >> *Thanks in advance😊😊*
> > >>
> > >> On Tue, 30 Apr 2024 at 10:58, Justin Bertram <jbert...@apache.org>
> > wrote:
> > >>
> > >> > From what I can tell you aren't actually subscribed to the ActiveMQ
> > >> users
> > >> > list so you will not receive any replies sent to the list and not
> > >> directly
> > >> > to you (which is how replies are normally sent). Please subscribe
> [1]
> > to
> > >> > the list in order to use it properly. Thanks!
> > >> >
> > >> > Also, please be aware that screenshots attached to emails are not
> > passed
> > >> > to subscribers. If a screenshot is critical to explaining your issue
> > >> please
> > >> > upload it somewhere and provide a link to it. Otherwise simply
> > describe
> > >> in
> > >> > more detail what your problem actually is without referencing
> > >> screenshots.
> > >> >
> > >> >
> > >> > Justin
> > >> >
> > >> > [1] https://activemq.apache.org/contact
> > >> >
> > >> > On Tue, Apr 30, 2024 at 12:14 AM Pushparaj Chinnathambi <
> > >> > pushpara...@raster.in> wrote:
> > >> >
> > >> >> Hi,
> > >> >>           I’m trying to connect an ActiveMQ Artemis topic queue
> with
> > >> the
> > >> >> following configurations. Based on my settings, I don’t want to
> > create
> > >> >> dynamic queues when clients establish new connections. However,
> after
> > >> >> applying this configuration, I’m unable to connect to my topic
> queue.
> > >> Could
> > >> >> you please explain why this is happening and guide me on resolving
> > this
> > >> >> issue?
> > >> >>
> > >> >>
> > >> >> [image: broker-file-configuration.png]
> > >> >> [image: log-file.png][image: queue-settings.png]
> > >> >> --
> > >> >> *------------------------*
> > >> >> *Thanks & Regards,*
> > >> >> *Pushparaj Chinnathambi*
> > >> >> Team Lead
> > >> >> *Raster Images Pvt. Ltd.*
> > >> >> Salem 636 004, TN, India
> > >> >> E: pushpara...@raster.in
> > >> >>
> > >> >>
> > >> >>
> > >>
> > >> --
> > >> *------------------------*
> > >> *Thanks & Regards,*
> > >> *Pushparaj Chinnathambi*
> > >> Team Lead
> > >> *Raster Images Pvt. Ltd.*
> > >> Salem 636 004, TN, India
> > >> E: pushpara...@raster.in
> > >>
> > >
> >
>

Reply via email to